В Ульяновск.BSD можно работать в двух и более операционных системах одновременно. Так называемые гостевые операционные системы можно запускать на виртуальных машинах в гипервизоре bhyve, интегрированном в операционную систему. Причём гостевые операционные системы могут быть запущены одновременно со стартом основной (хостовой) операционной системы без участия пользователя. Для чего это нужно обычному пользователю настольного компьютера? Например, отдельный экземпляр системы можно использовать для разработки и тестирования программного обеспечения.
Для того, чтобы запускать виртуальные машины в гипервизоре bhyve, хостовая система должна работать на процессоре, поддерживающем виртуализацию, и иметь достаточный объем оперативной памяти. Функция виртуализации присутствует в большинстве современных процессоров Intel и AMD. Например, список процессоров Intel.
Рассмотрим установку, запуск и одновременную работу гостевой ОС Ульяновск.BSD в самой же Ульяновск.BSD.
Для управления виртуальными машинами необходимо установить 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
Для запуска гостевой ОС Ульяновск.BSD в графическом режиме необходимо установить эмулятор UEFI:
pkg install -r latest bhyve-firmware
Теперь можно создать виртуальную машину с именем "ulbsdtest" по шаблону "windows" с диском размером 40ГБ:
vm create -t windows -s 40G ulbsdtest
Для того, чтобы процесс установки ОС Ульяновск.BSD можно было наблюдать в графическом режиме, необходимо в файл настроек виртуальной машины /usr/local/bhyve/ulbsdtest/ulbsdtest.conf добавить следующие строки (отключение xhci_mouse обязательно):
graphics="yes"
graphics_res="1024x768"
graphics_listen="127.0.0.1"
graphics_port="5902"
graphics_wait="yes"
xhci_mouse="no"
Если системные часы на машине показывают локальное время, то необходимо в файл настроек виртуальной машины /usr/local/bhyve/ulbsdtest/ulbsdtest.conf добавить строку:
utctime="no"
В папку /usr/local/bhyve/.iso/ необходимо поместить образ ОС Ульяновск.BSD. После этого можно начать установку гостевой ОС на виртуальную машину:
vm install ulbsdtest ulbsd-12.1-p3-amd64.iso
Чтобы проверить, что виртуальная машина запустилась можно выполнить команду:
vm list
Если всё в порядке, то можно подключиться любым VNC-клиентом и провести установку в привычном графическом режиме. В Ульяновск.BSD можно использовать «Приложения» → «Интернет» → «KRDC». В поле "Подключиться к" необходимо выбрать протокол vnc и ввести адрес "127.0.0.1:5902", а затем нажать кнопку "Перейти к адресу". Произойдет подключение к графическому режиму, в котором можно будет провести установку операционной системы.
После этого можно перезагрузить гостевую ОС Ульяновск.BSD и продолжить её настройку. При первом запуске необходимо выбрать пункт "3. Escape to loader prompt" и ввести следующие команды:
set boot_serial="NO"
boot
После загрузки необходимо добавить в файл /boot/loader.conf:
boot_serial="NO"
При загрузке необходимо выбирать универсальный графический драйвер SCFB.
Для отключения ожидания подключения по VNC необходимо в файле настроек виртуальной машины /usr/local/bhyve/ulbsdtest/ulbsdtest.conf закомментировать следующую строку:
#graphics_wait="yes"
Для запуска и остановки виртуальной машины нужно использовать команды:
vm start ulbsdtest
vm stop ulbsdtest
Если в файле /etc/rc.conf в параметре vm_list указать имена виртуальных машин, то эти машины будут запускаться автоматически одновременно со стартом хостовой операционной системы:
vm_list="ulbsdtest"
Подробнее о командах для работы с виртуальными машинами и параметрах конфигурационных файлов можно узнать, выполнив команду:
man vm
Примечание 1:
После установки и настройки гостевой ОС Ульяновск.BSD можно отключить встроенный в гипервизор доступ по VNC и воспользоваться доступом через VNC-сервер ОС Ульяновск.BSD. Предварительно в гостевой ОС Ульяновск.BSD должен быть настроен Ethernet-интерфейс и IP-адрес этого интерфейса должен быть известен. Подключение может выполняться с помощью KRDC или UltraVNC Viewer из ОС Windows. Порт для подключения 5990.
Примечание 2:
Приложения виртуальной машины с гостевой ОС Ульяновск.BSD (как, впрочем, и с другими подобными ОС) можно запускать используя X11Forwarding даже не открывая экран виртуальной машины и не логинясь в ОС. Как это сделать написано в документе «Как на рабочем столе Ульяновск.BSD запустить приложение с другой Linux/Unix-машины?»
Примечание 3:
В конфигурационном файле виртуальной машины можно задать количество используемых процессоров и/или ядер процессоров. Задается это количество параметром cpu. Например, если имеется четырёхъядерный процессор Intel Core i5, то для увеличения производительности виртуальной машины можно выделить ей два ядра:
cpu=2
Также можно задать объем оперативной памяти для виртуальной машины:
memory=4G
Примечание 4:
Гипервизор 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.
Примечание 5:
Всё выше описанное справедливо и при установке гостевой ОС FreeBSD c поддержкой графического режима. Подробности можно узнать по ссылке «Установка FreeBSD c графическим интерфейсом в bhyve».