Создание виртуальной машины

Создание виртуальной машины с помощью утилиты virt-install

Одним из самых простых способов создания виртуальных машин с помощью командной строки является утилита virt-install.

Для вызова команды virt-install используется стандартный синтаксис:

$ virt-install [аргументы]

virt-install поддерживает как графический режим установки операционной системы с использованием протоколов VNC или SPICE, так и установку в текстовом режиме с помощью последовательной консоли. Во время создания виртуальной машины она может быть настроена на использование одного или нескольких дисков, сетевых интерфейсов, аудио устройств, аппаратных USB или PCI устройств и т.д.

В качестве установочного носителя может использоваться ISO-образ или виртуальный CD-ROM накопитель, установочное дерево дистрибутива, доступное по протоколам HTTP, HTTPS, FTP либо размещённое локально. Также поддерживается сетевая загрузка с использованием протокола PXE, импорт готовых образов дисков, полностью автоматическая установка операционной системы с помощью kickstart-файлов или опции --unattended.

Аргументы командной строки virt-install

У многих аргументов команды virt-install есть дополнительные параметры, которые указываются следующим образом: --аргумент опция1=значение опция2=значение. Используйте синтаксис --аргумент=? чтобы увидеть полный список таких параметров, например:

$ virt-install --disk=?

Большинство аргументов virt-install являются опциональными. В случае задания значения опции --os-variant либо успешного автоматического определения типа гостевой системы, для таких аргументов будут использованы соответствующие значения по умолчанию, определённые профилем устанавливаемой операционной системы. Профили предоставляются пакетом osinfo-db. В случае отсутствия профиля для устанавливаемой ОС потребуется определить как минимум следующие опции: --memory, настройки хранилища (--disk или --filesystem) и метод установки (--cdrom, --location).

При установке МСВСфера ОС через профили используются следующие значения:

  • jeos — минимальная серверная конфигурация МСВСФера 9 Сервер.

  • desktop — конфигурация для рабочих станций МСВСфера 9 АРМ.

Аргументы, передаваемые утилите virt-install, можно условно сгруппировать по их назначению:

  • Параметры подключения — определяют тип используемого гипервизора и путь (ссылку) для подключения к нему.

  • Общие параметры — общие параметры, применимые ко всем типам гостевых систем.

  • Параметры установки — определяют каким образом будет выполняться установка гостевой операционной системы.

  • Параметры гостевой системы — задают тип устанавливаемой операционной системы либо управляют настройками автоматического определения типа.

  • Параметры хранилища — опции, связанные с настройкой хранилища виртуальной машины.

  • Параметры сети — опции, связанные с настройкой сети виртуальной машины;

  • Параметры графики — опции, связанные с настройкой графической подсистемы виртуальной машины.

  • Параметры виртуализации — опции для переопределения используемого механизма виртуализации.

  • Параметры устройств — опции для подключения физических и виртуальных устройств к виртуальной машине.

  • Другие опции — опции, не вошедшие ни в одну из предыдущих групп.

Примеры использования virt-install

Следующая команда создаст в пользовательской сессии QEMU виртуальную машину msvsphere-9-server с двумя гигабайтами оперативной памяти, двумя виртуальными процессорами и виртуальным qcow2-диском объёмом двадцать гигабайт. Виртуальная машина будет запущена в режиме BIOS, в качестве установочного носителя будет использован ISO-образ /srv/iso/MSVSphere-9.5-x86_64-server.iso:

$ virt-install --name msvsphere-9-server \
      --cdrom /srv/iso/MSVSphere-9.5-x86_64-server.iso \
      --memory 2048 --vcpus 2 --disk size=20 --os-variant msvsphere9

Установка операционной системы МСВСфера 9 в режиме UEFI с отключённой поддержкой Secure Boot, в качестве источника установки используется установочное дерево дистрибутива, размещённое на официальном зеркале:

$ virt-install --name msvsphere-9-server \
      --memory 2048 --vcpus 2 --disk size=20 --os-variant msvsphere9 \
      --location https://repo1.msvsphere-os.ru/msvsphere/9/BaseOS/x86_64/os/ \
      --boot uefi,loader=/usr/share/edk2/ovmf/OVMF_CODE.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/edk2/ovmf/OVMF_VARS.fd,loader_secure=no

Следующая команда создаст виртуальную машину в системной сессии QEMU и выполнит автоматическую установку операционной системы МСВСфера 9 в режиме UEFI с включённой поддержкой Secure Boot, сценарий установки определён в kickstart-файле msvsphere-9.ks:

$ virt-install --name msvsphere-9-server --connect qemu:///system \
      --memory 2048 --vcpus 2 --disk size=20 --os-variant msvsphere9 \
      --location https://repo1.msvsphere-os.ru/msvsphere/9/BaseOS/x86_64/os/ \
      --boot uefi,loader=/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd,loader_secure=yes \
      --initrd-inject msvsphere-9.ks --extra-args "inst.ks=file:/msvsphere-9.ks"

Пример kickstart-файла (msvsphere-9.ks в примере выше) для автоматической установки системы в минимальной конфигурации без графического интерфейса:

# путь к установочному дереву дистрибутива
url --url https://repo1.msvsphere-os.ru/msvsphere/9/BaseOS/x86_64/kickstart/

# список репозиториев, которые необходимо подключить во время установки
repo --name=BaseOS --baseurl=https://repo1.msvsphere-os.ru/msvsphere/9/BaseOS/x86_64/os/
repo --name=AppStream --baseurl=https://repo1.msvsphere-os.ru/msvsphere/9/AppStream/x86_64/os/

# выполнять установку в текстовом режиме
text
# не выполнять настройку графического сервера Xorg/Wayland
skipx
# автоматически принимать условия лицензии
eula --agreed
# не запускать ассистента по настройке во время первого запуска
firstboot --disabled

# использовать английский язык как во время установки, так и на установленной
# системе. Дополнительно включить поддержку русского языка
lang en_US --addsupport=ru_RU
# настраивает раскладку клавиатуры, в данном случае будет использоваться только
# английская в американском варианте
keyboard us
# установить часовой пояс в московское время (GMT+3), флаг --utc указывает на
# то, что аппаратные часы хранят время в часовом поясе UTC
timezone Europe/Moscow --utc

# автоматически настроить сеть используя протокол DHCP
network --bootproto=dhcp
# включить брандмауэр и отрыть доступ по протоколу SSH
firewall --enabled --service=ssh
# отключить службу kdump и включить службы chronyd, rsyslog и sshd
services --disabled="kdump" --enabled="chronyd,rsyslog,sshd"
# включить SELinux
selinux --enforcing

# настроить вывод на последовательный порт чтобы можно было подключаться к
# консоли виртуальной машины без графической сессии
bootloader --timeout=1 --append="console=tty0 console=ttyS0,115200n8 no_timer_check crashkernel=auto net.ifnames=0"
# использовать только диск /dev/vda во время установки
ignoredisk --only-use=vda
# создать новую таблицу разделов на диске /dev/vda
clearpart --initlabel --drives=vda
# использовать автоматическую разбивку диска без отдельного раздела /home
autopart --nohome

# заблокировать вход пользователем root
rootpw --lock
# создать пользователя msvsphere с паролем msvsphere, сделать его
# администратором путём добавления в группу wheel
user --groups="wheel" --name msvsphere --password="msvsphere"

# автоматически перезагрузить систему после завершения установки и извлечь
# установочный носитель
reboot --eject

# блок %packages определяет какие пакеты, группы и модули необходимо установить.
# опция --inst-langs определяет список языков, для которых необходимо добавлять
# поддержку
%packages --inst-langs=en,ru
# установить пакеты из группы core
@core
# установить пакеты из группы guest-agents
@guest-agents
# установить пакеты самоидентификации серверного варианта МСВСфера ОС
sphere-release-identity-server
sphere-release-server
sphere-release
%end

# отключить расширение kdump
%addon com_redhat_kdump --disable
%end

На системах с графическим интерфейсом после запуска команды virt-install автоматически запустится программа virt-viewer, с помощью которой вы сможете взаимодействовать с виртуальной машиной и выполнить установку операционной системы:

Запуск virt-viewer

На системах без графического интерфейса вы можете использовать последовательную консоль, если устанавливаемая операционная система поддерживает такой режим. Для большинства ОС на базе GNU/Linux будет достаточно передать следующие аргументы команде virt-install:

$ virt-install ... -console pty,target_type=virtio --graphics none \
      --serial pty --extra-args 'console=ttyS0,115200n8'