создадим свою виртуальную машину qemu kvm прямо из консоли
в качестве примера возьмём легковесный дистрибутив Alpine Linux, который предпочтительно использовать на слабых по мощности устройствах, например если вы пожелаете установить его на смартфоне с Android да и это тоже делается, но об этом будет в другой статье...
Мы сейчас в линуксе, поэтому просто поехали
mkdir apline cd apline sudo apt install wget qemu-system-x86-64 qemu-utils -y
теперь переключаемся на браузер заходим на сайт https://www.alpinelinux.org/downloads/ и из раздела Virtual копируем в буфер ссылку свежего образа для архитектуры процессора x86_64
К примеру на момент создания туториала у меня была такая ссылка https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-virt-3.18.2-x86_64.iso
Поэтому такая команда
таким образом мы сохраним образ в файл alpine.iso на нашем устройстве дожидаемся загрузки образа, и в итоге набрав команду видим
~/alpine $ ls alpine.iso
создаём контейнер для нашей будущей вирутальной машины форматом qcow2 размером 10G назовём её alpine.qcow2, этот файл фактически будет жёстким диском нашей виртуальной машины, делается это с помощью такой команды:
получим вот такой вывод на экран
Formatting 'alpine.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16
теперь создадим виртуальную машину, добавим необходимые опцие, такие как выставим 2048 мб оперативной памяти, укажем порты для ssh, настроим сеть, и подключим к ней наш созданный контейнер, в который и установим нашу os alpine со скаченного образа
вот такая команда:
- qemu-system-x86_64: это имя исполняемого файла QEMU для запуска виртуальной машины на архитектуре x86_64.
- -m 2048: задает объем оперативной памяти, выделяемый для виртуальной машины. В данном случае, выделяется 2 ГБ оперативной памяти.
- -netdev user,id=n1,hostfwd=tcp::2222-:22: создает виртуальное сетевое устройство с типом "user" и идентификатором "n1". Опция "hostfwd" означает, что порт 2222 на хостовой машине будет перенаправлен на порт 22 внутри виртуальной машины.
- -device virtio-net,netdev=n1: создает устройство виртуальной сетевой карты с использованием драйвера "virtio-net" и связывает его с ранее созданным сетевым устройством "n1".
- -nographic: отключает графический интерфейс виртуальной машины и вместо этого выводит консоль в терминал.
- alpine.iso: это установочный образ диска в формате iso, который мы скачали выше, он и будет использоваться для установки виртуальной машины.
- alpine.qcow2: пустой диск в формате QCOW2, который мы создали до этого, на него будет производиться установка виртуальной машины.
В целом, эта команда позволяет установить виртуальную машину alpine на хостовой машине, настроить ее сетевые соединения и выделить ей необходимый объем оперативной памяти.
Мы загрузимся и попадём в консоль с установочной версией операционной системой alpine. Небольшое отступление - если убрать опцию из команды -nographic, мы сможем подключиться к этой машине через VNC. Для подключения к VNC-серверу вам нужно использовать специальное программное обеспечение для клиента VNC. Вот несколько популярных программ VNC-клиентов, которые вы можете попробовать:
TigerVNC Viewer: https://tigervnc.org/ RealVNC Viewer: https://www.realvnc.com/en/connect/download/viewer/ TightVNC Viewer: http://www.tightvnc.com/
Только чтобы запустить VNC-сервер для виртуальной машины, нужно использовать параметры командной строки QEMU для настройки VNC-соединения. Вот пример команды, которую вы можете использовать:
ramanzes@mx:~/myapp/virt/apline qemu-system-x86_64 -m 2048 -netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1 -cdrom alpine.iso alpine.qcow2 -vnc :1 VNC server running on ::1:5901
В этой команде убрана опция -nographic и добавлен параметр -vnc :1, который указывает QEMU создать VNC-сервер на порту 5901 (порт VNC + 1). Вы можете изменить номер, добавляя или удаляя "1" после двоеточия, чтобы выбрать нужный порт.
После запуска команды вы сможете подключиться к VNC-серверу с помощью VNC-клиента, например, используя программу Remmina, TigerVNC Viewer или любую другую программу VNC-клиента, которая поддерживает соединение по адресу localhost:5901 или 127.0.0.1:5901 или ip_adress:5901 для удалённого подключения.
Обратите внимание, что при использовании VNC-соединения вам не потребуется инициализация GTK+, так как VNC передает графический вывод через сетевое соединение и отображает его на клиентской стороне.
Но т.к. сейчас наша статья не об этом, то мы сразу идём в консоль, без графики, что и было указано опцией -nographic изначально и без всякого VNC.
загрузившись попадаем в авторизацию, где вводим root без пароля. Речь сейчас идёт конкретно об этой os alpine вот как мы будем действовать в точности для этой ос.
mkdir -p /etc/udhcpc vi /etc/udhcpc/udhcpc.conf
записываем в этот файл вот эту строку
RESOLV_CONF="no"
сохраняем и выходим.
создаём вот этот файл:
vi /etc/resolv.conf
записываем рабочие dns сервера например вот эти:
nameserver 8.8.8.8 nameserver 8.8.4.4
сохраняем и выходим.
выполняем команду
apk update
а после этого
setup-alpine
далее вплоть до ввода пароля root жмём Enter т.е. оставляем настройки по умолчанию
☯
Terminal:
⌕
≡
✕
Enter system hostname (fully qualified form, e.g. 'foo.example.org') [localhost] Available interfaces are: eth0. Enter '?' for help on bridges, bonding and vlans. Which one do you want to initialize? (or '?' or 'done') [eth0] Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp] Do you want to do any manual network configuration? (y/n) [n] udhcpc: started, v1.36.1 udhcpc: broadcasting discover udhcpc: broadcasting select for 10.0.2.15, server 10.0.2.2 udhcpc: lease of 10.0.2.15 obtained from 10.0.2.2, lease time 86400 Changing password for root New password: Bad password: too short Retype password: passwd: password for root changed by root
задаём временную зону, (внимание стоит задавать сразу идентичную зону с вашей хост системой) например:
☯
Terminal:
⌕
≡
✕
Which timezone are you in? ('?' for list) [UTC] Europe/ What sub-timezone of 'Europe/' are you in? ('?' for list) Moscow
потом выбираем такие настройки
☯
Terminal:
⌕
≡
✕
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none') [chrony] none
оставляем зеркало по умолчанию Enter потом по желанию можно создать локального пользователя, можно не создавать, по умолчанию он не создаётся, если нажать Enter
здесь по умолчанию выбираем openssh:
Which ssh server? ('openssh', 'dropbear' or 'none') [openssh]
далее выбираем так:
☯
Terminal:
⌕
≡
✕
Available disks are: fd0 (0.0 GB ) sda (10.7 GB ATA QEMU HARDDISK ) Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda The following disk is selected: sda (10.7 GB ATA QEMU HARDDISK ) How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys WARNING: The following disk(s) will be erased: sda (10.7 GB ATA QEMU HARDDISK ) WARNING: Erase the above disk(s) and continue? (y/n) [n] y
в итоге получаем вот это
☯
Terminal:
⌕
≡
✕
Creating file systems... Installing system on /dev/sda3: /mnt/boot is device /dev/sda1 100% ████████████████████████████████████████████==> initramfs: creating /boot/initramfs-virt /boot is device /dev/sda1 Installation is complete. Please reboot. localhost:~# poweroff
теперь чтобы запустить нашу настроенную таким образом машину убираем из команды cdrom и запускаемся с диска qcow2 следующим образом
создадим файл скрипт для bash
и теперь сама команда запуска будет такой:
-
- Roman Sakhno
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.