В Ульяновск.BSD можно работать в двух и более операционных системах одновременно. Так называемые гостевые операционные системы можно запускать на виртуальных машинах в гипервизоре bhyve, интегрированном в операционную систему. Причём гостевые операционные системы могут быть запущены одновременно со стартом основной (хостовой) операционной системы без участия пользователя. Для чего это нужно обычному пользователю настольного компьютера? Например, чтобы работать с программным обеспечением, аналогов которого нет в хостовой операционной системе.
Для того, чтобы запускать виртуальные машины в гипервизоре bhyve, хостовая система должна работать на процессоре, поддерживающем виртуализацию, и иметь достаточный объем оперативной памяти. Функция виртуализации присутствует в большинстве современных процессоров Intel и AMD. Например, список процессоров Intel.
Рассмотрим установку, запуск и одновременную работу Linux-совместимой операционной системы ROSA Fresh R8 с рабочим столом PLASMA 5 в Ульяновск.BSD. Для начала необходимо скачать UEFI-совместимый ISO-образ ОС ROSA Fresh R8 с сайта НТЦ ИТ РОСА.
Для управления виртуальными машинами необходимо установить vm-bhyve:
pkg install -r latest vm-bhyve
Далее необходимо создать рабочий каталог для виртуальных машин, добавить необходимые параметры в /etc/rc.conf и проинициализировать гипервизор:
mkdir /usr/local/bhyve
sysrc vm_enable="YES" vm_dir="/usr/local/bhyve" vm_list="" vm_delay="10"
vm init
Дополнительно необходимо скопировать типовые шаблоны для виртуальных машин в рабочий каталог:
cp /usr/local/share/examples/vm-bhyve/* /usr/local/bhyve/.templates/
Для подключения виртуальных машин к сети необходимо создать виртуальный коммутатор и связать его с физическим сетевым интерфейсом re0 (необходимо заменить на свой):
vm switch create public
vm switch add public re0
Для запуска ОС ROSA Fresh R8 необходимо установить эмулятор UEFI:
pkg install -r latest bhyve-firmware
Теперь можно создать виртуальную машину с именем "rosatest" по шаблону "windows" с диском размером 40ГБ:
vm create -t windows -s 40G rosatest
Для того, чтобы процесс установки ОС ROSA Fresh R8 можно было наблюдать в графическом режиме, необходимо в файл настроек виртуальной машины /usr/local/bhyve/rosatest/rosatest.conf добавить следующие строки:
graphics="yes"
graphics_res="1024x768"
graphics_listen="127.0.0.1"
graphics_port="5902"
graphics_wait="yes"
xhci_mouse="yes"
Если системные часы на машине показывают локальное время, то необходимо в файл настроек виртуальной машины /usr/local/bhyve/rosatest/rosatest.conf добавить строку:
utctime="no"
В папку /usr/local/bhyve/.iso/ необходимо поместить UEFI-совместимый образ ОС ROSA Fresh R8. После этого можно начать установку ОС на виртуальную машину:
vm install rosatest ROSA.FRESH.PLASMA.R8.x86_64.uefi.iso
Чтобы проверить, что виртуальная машина запустилась можно выполнить команду:
vm list
Если всё в порядке, то можно подключиться любым VNC-клиентом и провести установку в привычном графическом режиме. В Ульяновск.BSD можно использовать «Приложения» → «Интернет» → «KRDC». В поле "Подключиться к" необходимо выбрать протокол vnc и ввести адрес "127.0.0.1:5902", а затем нажать кнопку "Перейти к адресу". Произойдет подключение к графическому режиму, в котором можно будет провести установку операционной системы. При установке для удобства работы желательно выбрать запуск ssh-сервера. В процессе установки операционная система несколько раз будет перезагружаться. Соответственно нужно будет несколько раз переподключаться по VNC.
Для отключения ожидания подключения по VNC необходимо в файле настроек виртуальной машины /usr/local/bhyve/rosatest/rosatest.conf закомментировать следующую строку:
#graphics_wait="yes"
Для запуска и остановки виртуальной машины нужно использовать команды:
vm start rosatest
vm stop rosatest
Если в файле /etc/rc.conf в параметре vm_list указать имена виртуальных машин, то эти машины будут запускаться автоматически одновременно со стартом хостовой операционной системы:
vm_list="rosatest"
Подробнее о командах для работы с виртуальными машинами и параметрах конфигурационных файлов можно узнать, выполнив команду:
man vm
Примечание 1:
После установки ОС ROSA Fresh R8 и выключения виртуальной машины может случиться так, что UEFI BIOS виртуальной машины потеряет информацию о месте нахождения загрузчика операционной системы. Чтобы восстановить нормальную загрузку ОС, нужно при загрузке виртуальной машины дождаться появления командной строки UEFI (возможно придётся ждать несколько минут), набрать команду exit и в меню UEFI BIOS выбрать «Boot Maintenance Manager» → «Boot From File» → «Диск с загрузочным разделом» → <EFI> → <rosa> → BOOTx64.efi. После успешной загрузки необходимо в терминале скопировать загрузочные файлы в каталог /boot/efi/EFI/BOOT, в котором UEFI BIOS по умолчанию ищет загрузчик:
sudo -s
mkdir /boot/efi/EFI/BOOT
cp -R /boot/efi/EFI/rosa/* /boot/efi/EFI/BOOT/
Примечание 2:
После установки ОС ROSA Fresh R8 необходимо обновить в ней установленные пакеты. Это можно сделать через меню «Утилиты» → «Системные» → «Параметры системы» → «Обновление системы». При обновлении обязательно нужно отключить обновление пакета x11-driver-video-fbdev. Иначе пропадёт доступ по VNC к экрану виртуальной машины с установленной ОС ROSA Fresh R8.
Примечание 3:
В ОС ROSA Fresh R8 могут спонтанно появляться новые сетевые интерфейсы. Для устранения такого странного поведения необходимо отключить сервисы systemd-resolved и systemd-networkd:
sudo -s
systemctl disable systemd-resolved
systemctl disable systemd-networkd
Примечание 4:
Приложения виртуальной машины с ОС ROSA Fresh R8 (как, впрочем, и с другими подобными ОС) можно запускать используя X11Forwarding даже не открывая экран виртуальной машины и не логинясь в ОС. Как это сделать написано в документе «Как на рабочем столе Ульяновск.BSD запустить приложение с другой Linux/Unix-машины?»
Примечание 5:
В конфигурационном файле виртуальной машины можно задать количество используемых процессоров и/или ядер процессоров. Задается это количество параметром cpu. Например, если имеется четырёхъядерный процессор Intel Core i5, то для увеличения производительности виртуальной машины можно выделить ей два ядра:
cpu=2
Примечание 6:
Гипервизор bhyve позволяет пробрасывать устройства в виртуальную машину. Например, если на хостовой машине установлен дополнительный USB-контроллер, то его можно пробросить в виртуальную машину и подключить к портам этого контроллера веб-камеру, переносной накопитель или другие устройства. Подключенные устройства в этом случае будут доступны только виртуальной машине, на которую будет проброшен этот USB-контроллер. Это возможно только, если в процессоре есть поддержка технологии IOMMU (Intel VT-d или AMD-Vi). Допустим в хостовую систему установлен USB-контроллер и с помощью команды pciconf он определяется так:
pciconf -lv
xhci0@pci0:1:0:0: class=0x0c0330 card=0x34831106 chip=0x34831106 rev=0x01 hdr=0x00
vendor = 'VIA Technologies, Inc.'
device = 'VL805 USB 3.0 Host Controller'
class = serial bus
subclass = USB
Тогда для проброса этого контроллера необходимо в конфигурационном файле виртуальной машины прописать:
passthru0="1/0/0"
А в файле /boot/loader.conf необходимо прописать:
pptdevs="1/0/0"
Также для проброса устройств в виртуальную машину необходимо, чтобы гипервизор инициализировался до подключения драйверов устройств хостовой машины. Для этого в файл /boot/loader.conf обязательно нужно прописать:
vmm_load="YES"
Для процессоров AMD в файл /boot/loader.conf также необходимо добавить строку:
hw.vmm.amdvi.enable=1
Подробнее о пробросе устройств можно узнать в документе bhyve PCI Passthrough.