Доступны следующие функции:
vmm-firmware
.
Совместимость процессора может быть проверена с помощью следующей команды:
$ dmesg | egrep '(VMX/EPT|SVM/RVI)'Прежде чем продолжить, включите и запустите службу vmd(8).
# rcctl enable vmd # rcctl start vmd
install74.iso
.
# vmctl create -s 50G disk.qcow2 vmctl: qcow2 imagefile created # vmctl start -m 1G -L -i 1 -r install74.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, и виртуальные машины могут подключаться к Интернету.
Создайте интерфейс vether0
который будет
иметь частный IPv4-адрес, как определено выше. В этом примере
мы будем использовать подсеть 10.0.0.0/8
.
# echo 'inet 10.0.0.1 255.255.255.0' > /etc/hostname.vether0 # sh /etc/netstart vether0Создайте интерфейс
bridge0
интерфейсом vether0
в качестве порта моста:
# echo 'add vether0' > /etc/hostname.bridge0 # sh /etc/netstart bridge0Убедитесь, что NAT настроен правильно, если гостям в виртуальной сети нужен доступ за пределами физической машины. Скорректированная строка NAT в
/etc/pf.conf
может выглядеть так:
match out on egress from vether0:network to any nat-to (egress)Следующие строки в vm.conf(5) могут использоваться для определения виртуального коммутатора:
switch "my_switch" { interface bridge0 } vm "my_vm" { ... interface { switch "my_switch" } }
my_vm
гостевой системе my_vm теперь можно
назначить vio0
адрес в сети 10.0.0.0/24
и установить маршрут по умолчанию 10.0.0.1
.
Для удобства вы можете настроить DHCP-сервер на
vether0
.
Создайте интерфейс bridge0
с сетевым
интерфейсом хоста в качестве порта моста.
В этом примере сетевым интерфейсом хоста является
em0
- вам следует заменить имя интерфейса,
к которому вы хотите подключить виртуальную em0
:
# echo 'add em0' > /etc/hostname.bridge0 # sh /etc/netstart bridge0Как и в предыдущем примере, создайте или измените файл vm.conf(5), чтобы определить виртуальный коммутатор:
switch "my_switch" { interface bridge0 } vm "my_vm" { ... interface { switch "my_switch" } }Гостевая
my_vm
теперь в сети хоста, как если бы он
был физически подключен.
Примечание:
Если сетевой интерфейс (em0
в приведенном выше примере)
также настроен на использование DHCP,
dhcpleased(8),
работающий на этом же интерфейсе, может блокировать DHCP-запросы
от гостевых виртуальных машин. В этом случае вам следует выбрать
другой сетевой интерфейс, не использующий DHCP, или остановить
все процессы dhcpleased(8),
назначенные этому интерфейсу, перед запуском виртуальных машин,
или же использовать статические IP-адреса для виртуальных машин.