Открыто тестирование BSD Hypervisor (BHyVe)
Разработчики FreeBSD приглашают принять участие в тестировании гипервизора
 BSD Hypervisor (BHyVe), открытого в этом году компанией NetApp. Гипервизор
 BHyVe обладает прекрасной производительностью, но пока не входит в состав
 основной кодовой базы FreeBSD и нуждается в дополнительном тестировании.
Для работы BHyVe требуется наличие новых CPU Intel Core i3, i5 и i7,
 поддерживающих механизм виртуализации VT-x и работу со вложенными страницами
 памяти (EPT – Extended Page Tables). Опционально для проброса PCI-устройств в
 госетвые окружения может быть задействована технология VT-d (Direct Device
 Attach). Проверить наличие VY-x можно просмотрев флаги в секции “Features” в
 выводе dmesg, в списке должен присутствовать флаг VMX.
 
 В качестве гостевой системы пока может работать только FreeBSD. Созданные в
 рамках проекта паравиртуальные драйверы для ускорения работы с устройствами
 хранения и сетевого доступа (virtio, if_vtnet, virtio_pci, virtio_blk) в
 дальнейшем могут быть адаптированы для работы гостевых систем совместно с
 другими системами виртуализации.
Подготовка хост-окружения
Пользователи FreeBSD-CURRENT могут загрузить необходимые патчи из специального репозитория:
| 1 |  svn co http://svn.freebsd.org/base/projects/bhyve /usr/src/ | 
Для FreeBSD 9.0BETA3 можно использовать ревизию 225769 из этого же SVN-репозитория BHyVe.
Устанавливаем необходимые порты:
| 1 2 3 4 |  pkg_add -r subversion pkg_add -r binutils pkg_add -r curl rehash | 
Загружаем исходные тексты из SVN (грузим ревизию 225769):
| 1 |  svn co http://svn.freebsd.org/base/projects/bhyve@225769 /usr/src/ | 
Пересобираем ядро и перезагружаем систему:
| 1 2 3 4 |  cd /usr/src make buildkernel KERNCONF=GENERIC make installkernel KERNCONF=GENERIC reboot | 
После перезагрузки необходимо загрузить модуль ядра vmm.ko:
kldload vmm
Для управления BHyVe необходимо установить несколько вспомогательных утилит:
 /usr/sbin/bhyve, /usr/sbin/bhyveload и /usr/sbin/vmmctl, а также библиотеку
 /usr/lib/libvmmapi.*. Уже собранные данные компоненты можно загрузить здесь,
 для установки следует запустить скрипт cpinstall.sh.
Для сборки из исходных текстов можно использовать примерно такие команды:
cd /usr/src/
 make buildworld
 mkdir /usr/jail/
 make installworld DESTDIR=/usr/jail/
 cp /usr/jail/usr/sbin/bhyve* /usr/sbin/
 cp /usr/jail/usr/sbin/vmm* /usr/sbin/
 cp /usr/jail/usr/lib/libvmmapi* /usr/lib/
 rehash
Правим /boot/loader.conf. Отключаем вывод отладочных предупреждений и изменяем
 лимит памяти до 4 Гб для системы с 8 Гб ОЗУ (остальные 4 Гб будут отданы
 гостевым системам):
debug.witness.watch=”0″
 hw.physmem=”0x100000000″
После перезагрузки вывод dmesg для системы с 8 Гб ОЗУ выглядит примерно так:
real memory = 8589934592 (8192 MB)
 avail memory = 3021811712 (2881 MB)
Подготовка гостевой системы:
Для упрощения тестирования подготовлен уже сконфигурированный образ гостевой
 системы, который можно загрузить и установить выполнив:
cd /usr/share/
 curl -O http://people.freebsd.org/~neel/bhyve/vm1.tar.gz
 gunzip vm1.tar.gz
 tar -xf vm1.tar
Данный образ содержит скрипт запуска и образ коревой ФС, размером 300 Мб
 (/usr/share/vm1/boot/kernel/mdroot). При загрузке создаётся два virtio-устройства:
vtnet0: виртуальный сетевой интерфейс, привязанный к интерфейсу tap0 на стороне хост-системы
 vtbd0: виртуальной блочное устройство, использующее 32 Гб дисковый образ /usr/share/vm1/diskdev
Скрипт /usr/share/vm1/vmprep.sh предназначен для подготовки хост-системы для
 использования BHyVe, включая загрузку модуля ядра vmm.ko и настройку сети
 (вместо em0 следует указать текущий сетевой адаптер).
#!/bin/sh
 kldload vmm
 kldload if_tap
 ifconfig tap0 create
 kldload bridgestp
 kldload if_bridge
 ifconfig bridge0 create
 ifconfig bridge0 addm em0
 ifconfig bridge0 addm tap0
 ifconfig bridge0 up
 ifconfig tap0 up
Запуск гостевой системы в среде виртуализации:
Выполняем скрипт конфигурации хост-системы и запускаем гостевое окружение vm1:
cd /usr/share/vm1/
 sh vmprep.sh
 sh vmrun.sh vm1
Если не удаётся загрузить модуль vmm.ko на экран будет выведена примерно такая ошибка:
Launching virtual machine “vm1” with 768MB memory below 4GB and 2048MB memory above 4GB …
 vm_create: No such file or directory
В случае успеха будет отображён процесс загрузки FreeBSD:
Launching virtual machine “vm1” with 768MB memory below 4GB and 2048MB memory above 4GB …
 Consoles: userboot
FreeBSD/amd64 User boot, Revision 1.1
 (neel@freebsd.org, Sun Sep 25 22:19:14 PDT 2011)
 Loading /boot/defaults/loader.conf
 /boot//kernel/kernel text=0x41e94f data=0x57ac0+0x273590 syms=[0x8+0x737b8+0x8+0x6abe3]
 /boot//kernel/virtio.ko size 0x4ad8 at 0xbc8000
 /boot//kernel/if_vtnet.ko size 0xac80 at 0xbcd000
 /boot//kernel/virtio_pci.ko size 0x56c0 at 0xbd8000
 /boot//kernel/virtio_blk.ko size 0x4f60 at 0xbde000
 ….
Если используемый в системе процессор не содержит возможностей, необходимых
 для работы BHyVe, будет выведен примерно такой текст ошибки:
…
 AMD Features=0x20100800
 AMD Features2=0x1
 kldload vmm.ko
 vmx_init: processor does not support desired primary processor-based controls
 module_register_init: MOD_LOAD (vmm, 0xffffffff816127a0, 0) error 22
Тестовая гостевая система сконфигурирована с пустым паролем для пользователя
root. После входа следует настроить параметры сети указав IP в ручную через
 команду ifconfig или получив адрес по DHCP, запустив “dhclient vtnet0”.
Для остановки виртуальной машины нужно перезагрузить гостевое окружение, нажать
 ESC при появлении экрана загрузки и набрать “quit” в приглашении загрузчика.
Дополнительно от Rcstar.net:
 #SOURCE – 
 #PDF – HVFreeBSD
 #PDF – BHyVe
