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

# vi /etc/rc.conf

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

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

# vi /boot/loader.conf

vmm_load="YES"
if_bridge_load="YES"
if_tap_load="YES"
hw.vmm.topology.cores_per_package=2 #  Указывается колличетсво ядер на реальной машине. Если нее указать, то в гостевой системе ядра будут отображаться как отдельные процессоры.

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

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

Перезапускаем сервер.

# reboot

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

# mkdir -p /vm/iso

Скачайте в директорию /vm/iso установочный образ Windows.

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

# mkdir /vm/w10

Переходим в эту созданную директорию и создаем образ виртуальной машины.

# cd /vm/w10
# truncate -s 50G w10.img

Устанавливаем прошивку bhyve.

# pkg ins -y bhyve-firmwware

Скачиваем драйвер virtio-win.

# fetch https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.118-2/virtio-win-0.1.118.iso

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

# vi install.sh

#!/bin/sh

bhyve -c 2 -m 2G -H -w \
  -s 0,hostbridge \
  -s 3,ahci-cd,/vm/iso/windows10-install-cd.iso \
  -s 4,ahci-hd,w10.img \
  -s 5,virtio-net,tap1 \
  -s 29,fbuf,tcp=0.0.0.0:5900,wait \
  -s 30,xhci,tablet \
  -s 31,lpc \
  -l com1,stdio \
  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
  w10  

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

# chmod +x install.sh
# ./install.sh

Подключаемся любым vnc-клиентом к серверу и продолжаем установку.

После установки выключаем гостевую систему, прибиваем процесс:

# bhyvectl --destroy --vm=w10

Редактируем файл install.sh

Меняем строчку:

-s 3,ahci-cd,/vm/iso/windows10-install-cd.iso \

на:

-s 3,ahci-cd,virtio-win-0.1.118.iso \

Запускаем install.sh и снова подключаемся vnc-клиентом.

Ставим драйвер сетевого адаптера.

В сеансе windows открываем Этот компьютер-диск-CD(virtio-win).
Далее идем по пути: Net-KVM-w10-amd64 и нажимаем правой кнопкой мыши-установить на файле netkvm.

Настраиваем RDP-подключение.

Открываем Свойсва компьютера-Настройка удаленного доступа и ставим галочку Разрешить удаленные подключения к этому компьютеру.
Выключаем гостевую систему.

Прибиваем процесс.

# bhyvectl --destroy --vm=w10

Создаем файл загрузки системы.

# cp install.sh boot.sh
# vi boot.sh

#!/bin/sh

bhyve -c 2 -m 2G -H -w \
  -s 0,hostbridge \
  -s 4,ahci-hd,w10.img \
  -s 5,virtio-net,tap1 \
  -s 30,xhci,tablet \
  -s 31,lpc \
  -l com1,stdio \
  -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \
  w10  

Запускаем boot.sh

Подключаемся любым rdp клиентом к windows.