Bootstrap

создадим свою виртуальную машину qemu kvm прямо из консоли

создадим свою виртуальную машину 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

страница загрузки Alpine Linux, выбираем Virtual x86_64 iso образ

К примеру на момент создания туториала у меня была такая ссылка https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-virt-3.18.2-x86_64.iso

Поэтому такая команда


wget -O alpine.iso 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, этот файл фактически будет жёстким диском нашей виртуальной машины, делается это с помощью такой команды:


qemu-img create -f qcow2 alpine.qcow2 10G

получим вот такой вывод на экран

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 -m 2048 -netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1  -cdrom alpine.iso -nographic alpine.qcow2
  • 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 для удалённого подключения.

пример работы виртуальной qemu kvm машины через VNC клиента.

Обратите внимание, что при использовании 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


echo "qemu-system-x86_64 -m 1024 -netdev user,id=n1,hostfwd=tcp::2223-:22 -device virtio-net,netdev=n1 -nographic alpine.qcow2" > start_alpine.sh

и теперь сама команда запуска будет такой:


bash start_alpine.sh

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: