Устанавливаем загрузчик grub2.

# pkg ins grub2-bhyve

Создаем папку для образов установочных дисков.

# mkdir -p /vm/iso

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

# mkdir /vm/u3

Добавляем необходимые модули.

# vi /boot/loader.conf

vmm_load="YES"
if_bridge_load="YES"
if_tap_load="YES"

Добавляем автостарт интерфейса tap.

# echo 'net.link.tap.up_on_open=1' >> /etc/sysctl.conf

Создаем интерфейсы в rc.conf.

# vi /etc/rc.conf

cloned_interfaces="bridge0 tap1"
ifconfig_bridge0="addm tap1 addm re0 up"

Переходим в директорию, где будет находится наша виртуальная машина.

# cd /vm/u3

Создаем образ.

# truncate -s 8G u3.img

Создаем файл настроек для установки и запуска Ubuntu.

# vi device.map

(hd0) /vm/u3/u3.img
(cd0) /vm/iso/ubuntu_x64.iso

Перезагружаем сервер, чтобы подключились модули и создались интерфейсы.

# reboot

После перезагрузки начинаем установку.

# grub-bhyve -r cd0 -m /vm/u3/device.map -M 512 u3
# bhyve -c 1 -m 512 -H -P -A \
-l com1,stdio \
-s 0:0,hostbridge \
-s 1:0,lpc \
-s 2:0,virtio-net,tap1 \
-s 3,ahci-cd,/vm/iso/ubuntu_x64.iso \
-s 4,virtio-blk,/vm/u3/u3.img u3

Устанавливаете Ubuntu.

После установки прибиваем активный процесс.

# bhyvectl --destroy --vm=u3

Переходим в директорию с ВМ и создаем скрипт запуска.

# cd /vm/u3
# vi start.sh

#!/bin/sh
while [ 1 ] ; do
bhyvectl --destroy --vm=u3
grub-bhyve -r hd0,msdos1 -m /vm/u3/device.map -M 512 u3

bhyve -c 1 -m 512 -H -P -A \
-l com1,stdio \
-s 0:0,hostbridge \
-s 1:0,lpc \
-s 2:0,virtio-net,tap1 \
-s 4,virtio-blk,/vm/u3/u3.img u3
bhyve_exit=$?
if [ $bhyve_exit -ne 0 ]; then
break
fi
done
bhyvectl --destroy --vm=u3

Сохраняемся и выходим.

Даем права на запуск и запускаем.

# chmod +x start.sh
# ./start.sh