На данный момент, порт VirtualBox на FreeBSD уже достаточно стабилен и вполне пригоден для постоянного использования. Но при установке на gui-less машинах возникает несколько проблем. Дальше речь пойдет об установке и использовании VirtualBox на FreeBSD машине без X11.
Установка VirtualBox
Текущая актуальная версия порта VirtualBox — 3.1.2. Начиная, с 3.1.0 версии порт разбит на два: virtualbox-ose-kmod (модули ядра) и virtualbox-ose (сам virtualbox).
Под FreeBSD портирована только VirtualBox OSE (Open Source Edition). В ней, по сравнению с полным VirtualBox, нет поддержки USB устройств, а главное — вырезан vRDP сервер, который позволяет подключаться к виртуальной машине любым rdp клиентом.
Без него и без x11, для установки ОС на виртуальную машину потребуется ставить ее на отдельном компьютере и потом переносить образ диска на FreeBSD машину.
Эту проблему решил один из разработчиков FreeNAS, прикрутив к VirtualBox vnc-сервер.
Итак, далее собственно установка VirtualBox.
Первым делом ставим библиотеки vnc-сервера и модули ядра VirtualBox:
cd /usr/ports/net/libvncserver && make
make install
cd /usr/ports/emulators/virtualbox-ose-kmod && make
make install
После этого качаем патч для VirtualBox:
cd ~/patches
fetch www.mail-archive.com/freebsd-stable@freebsd.org/msg108586/vboxvnc-20100211.tar.gz
cd /usr/ports/emulators/virtualbox-ose
tar xvf ~/patches/vboxvnc-20100211.tar.gz
Делаем
make config
снимаем все галочки, кроме Guest Additions и DBUS, и ставим VirtualBox:
make
make install
Добавляем загрузку модуля VirtualBox и запуск скрипта для возможности работы адаптера виртульной машины в bridge-режиме (без нее — только NAT):
echo 'vboxdrv_load="YES"' >> /boot/loader.conf
echo 'vboxnet_enable="YES"' >> /etc/rc.conf
Чтобы лишний раз не перезагружаться, вручную грузим модуль и скрипт:
kldload vboxdrv
/etc/rc.d/vboxnet start
Создание и настройка виртуальной машины
Создание виртуальной машины из консоли описано в этой статье, поэтому приведу только последовательность команд:
# Создаем виртуалку (посмотреть все возможные ostype: VBoxManage list ostype)
VBoxManage createvm --name MicroXP --ostype WindowsXP --register
# Задаем парамерты виртуалки (bridgeadapter1 указывает адаптер хоста, к которому привязываем виртуалку)
VBoxManage modifyvm MicroXP —memory 256 —floppy disabled —audio none —nic1 bridged —bridgeadapter1 eth0 —vram 4 —accelerate3d off —boot1 disk —acpi on —cableconnected1 on
# Создаем жесткий диск, размер указывается в мегабайтах
VBoxManage createhd —filename /usr/local/vbox/iso/MicroXP.vdi —size 1000 —register
# Создаем контроллер на виртуалке
VBoxManage storagectl MicroXP —name «IDE Controller» —add ide
# Цепляем диск к контроллеру
VBoxManage storageattach MicroXP —storagectl «IDE Controller» —port 0 —device 0 —type hdd —medium /usr/local/vbox/MicroXP.vdi
# Цепляем установочный образ к контроллеру
VBoxManage storageattach MicroXP —storagectl «IDE Controller» —port 1 —device 0 —type dvddrive —medium /usr/local/vbox/MicroXP-v0.82.iso
# Устанавливаем загрузку с установочного образа
VBoxManage modifyvm MicroXP —boot1 dvd
Далее, запускаем машину и указываем ей параметры vnc:
VBoxHeadless --startvm MicroXP -v on -a 192.168.1.1 -p 5900 -S password
Поключаемся vnc-клиентом (например, UltraVNC под виндой) и ставим ОС. Затем нужно поставить guest additions в виртуалку, без них vnc сервер иногда глючит:
VBoxManage storageattach MicroXP --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /usr/local/lib/virtualbox/additions/VBoxGuestAdditions_3.1.2.iso
После этого, виртуальная машина готова к использованию:
On Tue, Jan 15, 2013 at 5:06 PM, Edho Arief wrote:
>
> This also costed me few hours googling and few recompiles to find this:
>
> https://forums.virtualbox.org/viewtopic.php?f=31&t=50085
>
> and this http://lists.freebsd.org/pipermail/freebsd-ports/2012-September/078427.html
Thanks for these excelent pointers. Just what I needed.
A small recap for future googlers
VNC implementation is changed from 4.1 to 4.2. No more —vnc option in 4.2.
to enable VNC in 4.2, stil check the VNC option in «make config»
before building the port, and then do (for a vm called test1):
VBoxManage setproperty vrdeextpack VNC
VBoxManage modifyvm test1 —vrdeproperty VNCPassword=somepass
VBoxManage modifyvm test1 —vrdeauthlibrary null
VBoxManage modifyvm test1 —vrdeport 5901
VBoxHeadless —startvm test1
if moving from a 4.1 installation and using the rc.conf way of
starting vms, remove the «—vnc —vncport 5901 —vncpass=somepass»
from vboxheadless_test1_flags
getting rid of the —vncpass option was nice. Everyone with access to
ps could see the password. Now the cleartext password is stored in the
test1.vbox control file (with -rw——- rights)
some google bait: FreeBSD Virtualbox 4.2 VNC howto enable vnc console headless