Доступны следующие функции:
vmm-firmware.
Совместимость процессора может быть проверена с помощью следующей команды:
$ dmesg | egrep '(VMX/EPT|SVM/RVI)'Прежде чем продолжить, включите и запустите службу vmd(8).
# rcctl enable vmd # rcctl start vmd
install76.iso.
# vmctl create -s 50G disk.qcow2
vmctl: qcow2 imagefile created
# vmctl start -m 1G -L -i 1 -r install76.iso -d disk.qcow2 example
vmctl: started vm 1 successfully, tty /dev/ttyp8
# vmctl show
   ID   PID VCPUS  MAXMEM  CURMEM     TTY        OWNER NAME
    1 72118     1    1.0G   88.1M   ttyp8         root example
Чтобы просмотреть консоль недавно созданной виртуальной машины, 
подключите ее к последовательной консоли:
# vmctl console example Connected to /dev/ttyp8 (speed 115200)Escape sequence
~. необходима, если требуется
выйти из последовательной консоли.
Для получения дополнительной информации см. справочную страницу
cu(1).
При использовании последовательной консоли
vmctl через SSH, символ ~ (тильда)
должен быть экранирован, чтобы
ssh(1)
не прервал соединение. Чтобы выйти из последовательной
консоли через SSH, используйте ~~..
Остановить виртуальную машину можно при помощи vmctl(8).
# vmctl stop example stopping vm: requested to shutdown vm 1Виртуальные машины могут быть запущены с файлом vm.conf(5) или без него. Следующий пример
/etc/vm.conf будет дублировать
вышеуказанную конфигурацию:
vm "example" {
    memory 1G
    enable
    disk /home/user/disk.qcow2
    local interface
}
Некоторые свойства конфигурации в
vm.conf(5)
могут быть перезагружены
vmd(8) на лету.
Другие изменения, такие как настройка объема RAM или
дискового пространства, требуют перезагрузки виртуальной машины.
В приведенных ниже примерах будут указаны различные диапазоны адресов IPv4 для разных вариантов использования:
10.0.0.0/8, 172.16.0.0/12
и 192.168.0.0/16, которые не являются глобально
маршрутизируемыми.100.64.0.0/10.
Использование флага -L
vmctl(8)
создает локальный интерфейс в гостевой системе, который
будет получать адрес от vmd через DHCP.
По сути, это создает два интерфейса: один для хоста,
а другой для виртуальной машины.
Следующая строка в /etc/pf.conf включит 
NAT сетевых адресов и
перенаправит DNS-запросы на указанный сервер:
match out on egress from 100.64.0.0/10 to any nat-to (egress)
pass in proto { udp tcp } from 100.64.0.0/10 to any port domain \
	rdr-to $dns_server port domain
Перезагрузите набор правил pf, и виртуальные машины
могут подключаться к Интернету.
Создайте интерфейс vport0, который будет
иметь частный IPv4-адрес, как определено выше. В этом примере
мы будем использовать подсеть 10.0.0.0/8.
# cat <<END > /etc/hostname.vport0 inet 10.0.0.1 255.255.255.0 up END # sh /etc/netstart vport0Создайте интерфейс
veb0
при помощи vport0 в качестве порта моста:
# cat <<END > /etc/hostname.veb0 add vport0 up END # sh /etc/netstart veb0Убедитесь, что NAT настроен правильно, если гостям в виртуальной сети нужен доступ за пределами физической машины. Скорректированная строка NAT в
/etc/pf.conf может выглядеть так:
match out on egress from vport0:network to any nat-to (egress)Следующие строки в vm.conf(5) могут использоваться для определения виртуального коммутатора:
switch "my_switch" {
    interface veb0
}
vm "my_vm" {
    ...
    interface { switch "my_switch" }
}
my_vm гостевой системе my_vm теперь можно
назначить vio0 адрес в сети 10.0.0.0/24
и установить маршрут по умолчанию 10.0.0.1.
Для удобства вы можете настроить DHCP-сервер на 
vport0.
Сеть Ethernet будет переключаться между реальной сетью,
хостом и виртуальной машиной с помощью
veb(4).
Поскольку veb(4) отключает интерфейсы, добавленные как порты,
от стека IP, любая конфигурация IP на реальном интерфейсе должна
быть перемещена на интерфейс
vport(4),
чтобы хост мог участвовать в сети.
В этом примере em0 — это интерфейс, подключенный
к реальной сети.
Скопируйте конфигурацию интерфейса em0
для нового vport0:
# mv /etc/hostname.em0 /etc/hostname.vport0 # echo up >> /etc/hostname.vport0 # echo up >> /etc/hostname.em0 # sh /etc/netstart em0 vport0
Создайте интерфейс veb0 и добавьте интерфейсы
em0 и vport0:
# cat <<END > /etc/hostname.veb0 add em0 add vport0 up END # sh /etc/netstart veb0Как и в предыдущем примере, создайте или измените файл vm.conf(5), чтобы определить виртуальный коммутатор:
switch "my_switch" {
    interface veb0
}
vm "my_vm" {
    ...
    interface { switch "my_switch" }
}
Гостевая my_vm теперь в real network, как если бы он
был физически подключен.
Примечание:
Если интерфейс хоста (em0 в приведенном выше примере)
использует автоматическую настройку адреса (например, DHCP), он может
полагаться на MAC-адрес интерфейса для назначения определенного
IP-адреса. В этом случае MAC-адрес em0 может быть
назначен vport0, чтобы он мог использовать его в
реальной сети (real network).
Виртуальные машины могут быть подключены к реальной сети, но изолированы от хоста, путем исключения интерфейса vport в конфигурации выше.