Virtualbox — виртуализация во FreeBSD без X11. Установка, создание виртуальной машины ...

:

Итак, как всегда, начнём с задачи: Установить virtualbox на сервер без X11 на FreeBSD, создать виртуальную машину и установить на неё другую операционную систему. Я ставить буду тоже FreeBSD, но это уже не принципиально. Таким образом, на одном физическом ПК можно установить несколько виртуальных машин.Сначала установим всё необходимое:
make BATCH=yes -C/usr/ports/net/libvncserver install clean
make BATCH=yes -C/usr/ports/emulators/virtualbox-ose-kmod install clean
cd /usr/ports/emulators/virtualbox-ose
make config

Options for virtualbox-ose 3.2.8_1
[ ] QT4 Build with QT4 Frontend
[ ] DEBUG Build with debugging symbols
[X] GUESTADDITIONS Build with Guest Additions
[X] DBUS Build with D-Bus and HAL support
[ ] PULSEAUDIO Build with PulseAudio
[ ] X11 Build with X11 support
[X] VDE Build with VDE support
[X] VNC Build with VNC support
[X] WEBSERVICE Build Webservice
[ ] NLS Native language support

make BATCH=yes -C/usr/ports/emulators/virtualbox-ose install clean
rehash

Нужно загрузить модуль vboxdrv в ядро, выполняем:
kldload vboxdrv

Без этого при старте vboxnet будем видеть ошибку:
Kernel driver not installed (rc=1908)]
Make sure the kernel module has been loaded seccessfully.

чтобы при перезагрузке модуль vboxdrv подгружался автоматически в /boot/loader.conf дописываем строку:
vboxdrv_load="YES"

Добавляю в /etc/rc.conf строку:
vboxnet_enable="YES"

О строках в /boot/loader.conf и /etc/rc.conf было написано в сообщении после инсталяции virtualbox-ose.
Стартуем vboxnet:
/usr/local/etc/rc.d/vboxnet start

Теперь можно создавать машину.
Примечание:
Виртуальные диски и файл конфигурации виртуальной машины по умолчанию создаются в профиле пользователя, по-моему это не удобно. Удобнее сделать так, чтобы местом хранения всех дисков(.vdi, .vmdk, .vhd) была одна директория, а конфигураций виртуальных машин(.xml) — другая директория.
Создам директории, кторорые будут использоваться в примере ниже:
директория, где будут храниться виртуальные hdd:
mkdir -p /mnt/pools/dsk00/virtual/sr/vbhdd/

директория, где по умолчанию будут сохраняться файлы настроек виртуальных машин:
mkdir -p /mnt/pools/dsk00/virtual/vb/vpc/vbpcset

даём права на директорию:
chmod -R 0777 /mnt/pools/dsk00/virtual/

для установки по умолчанию хранилища файлов виртуальных винчесетров выполняем:
VBoxManage setproperty hdfolder /mnt/pools/dsk00/virtual/sr/vbhdd

для становки по умолчанию хранилища настроек виртуальных машин выполняем:
VBoxManage setproperty machinefolder /mnt/pools/dsk00/virtual/vb/vpc/vbpcset

теперь посмотрев:
cat ~/.VirtualBox/VirtualBox.xml

увидим секцию, где и прописались наши изменения.
Создаём виртуальный hdd под названием vbhdd003 для виртуальной машины с именем vbpc003 (имена могут быть произвольными):
VBoxManage createhd --filename vbhdd003 --size 61440 --remember

Oracle VM VirtualBox Command Line Management Interface Version 3.2.8_OSE
(C) 2005-2010 Oracle Corporation
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: adc3efcb-209e-4dc7-9a5e-78a069aee779

здесь
vbhdd003 -имя будущего виртуального винчестера
61440Mb -размер будущего виртуального винчестера в Mb (1024*60=61440Mb)
remember -зарегестрировать в менеджере виртуальных винтов
По умолчанию формат виртуального hdd — *.VDI

Переходим к созданию виртуальной машины:
VBoxManage createvm -name vbpc003 -register

Oracle VM VirtualBox Command Line Management Interface Version 3.2.8_OSE
(C) 2005-2010 Oracle Corporation
All rights reserved.

Virtual machine 'vbpc003' is created and registered.
UUID: 09cd25c3-dd06-43b0-9926-682fbcd16abb
Settings file: '/mnt/pools/dsk00/virtual/vb/vpc/vbpcset/vbpc003/vbpc003.xml'

здесь
vbpc003 -имя виртуального ПК
register -зарегистрировать виртуальный ПК

Создаём контроллер IDE в наш виртуальный ПК vbpc003:
VBoxManage storagectl vbpc003 --name "IDE Controller" --add ide

Подключаем к IDE0 наш виртуальный винчестер vbhdd003.vdi:
VBoxManage storageattach vbpc003 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /mnt/pools/dsk00/virtual/sr/vbhdd/vbhdd003.vdi

Модифицируем машину vbpc003:
VBoxManage modifyvm vbpc003 --ostype FreeBSD --memory 128 --hardwareuuid adc3efcb-209e-4dc7-9a5e-78a069aee779 --audio none --cableconnected1 on --usb off --nic1 bridged --bridgeadapter1 re0 --acpi on

здесь:
modifyvm vbpc003 -модифицируем ПК vbpc003
FreeBSD — тип устанавливаемой на виртуальную ПК операционной системы (посмотреть возможные варианты можно командой VBoxManage list ostypes)
128 — размер ОЗУ, выделяемой для виртуальной машины
adc3efcb-209e-4dc7-9a5e-78a069aee779 — на какой виртуальный HDD устанавливать гостевую ОС. Этот UUID из сочетания множества букв и цифр был виден после выполнения VBoxManage createhd.
audio none — выклюючаем аудио
usb off — выключаем usb

можно посмотреть параметры созданной машинки vbpc003:
VBoxManage showvminfo vbpc003

К IDE1 машины vbpc003 подключаем образ iso с которого будем устанавливать ОС FreeBSD:
VBoxManage storageattach vbpc003 --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /mnt/pools/dsk02/fcd/soft/unix/bsd/freebsd/FreeBSD-8.1-RELEASE-i386-dvd1.iso

Здесь:
/mnt/pools/dsk02/fcd/soft/unix/bsd/freebsd/FreeBSD-8.1-RELEASE-i386-dvd1.iso — Образ ОС, который будет являться загрузочным DVD для установки ОС.

Ставим первым загрузочным устройством виртуальный dvd
VBoxManage modifyvm vbpc003 --boot1 dvd

Всё готово к запуску.
Запускаем виртуальную машину:
VBoxHeadless --startvm vbpc003 -n -m 3389

n, —vnc — Включить VNC server
m, —vncport — номер порта vnc
3389 — порт vnc
Если нажать Ctrl+c виртуальная ПК выключится.
Чтобы запустилось в бэкграунде, то запускаем так:

nohup VBoxHeadless —startvm vbpc003 -n -m 3389 &

в этом случае можно жать Ctrl+c машина останется запущенной и к ней можно будет подключиться по vnc, например, через ultra vnc.

Посмотреть запущенные виртуалки:
VBoxManage list runningvms

Для выключения виртуальной машины vbpc003 выполняем:
VBoxManage controlvm vbpc003 poweroff

Сохранить текущее состояние виртуальной машины, а затем выключить её:
VBoxManage controlvm vbpc003 savestate

После того как выключили, ставим первым загрузочным устройством виртуальный HDD
VBoxManage modifyvm vbpc003 --boot1 disk

Если надо отключить установочный iso образ, выполняем:
VBoxManage storageattach vbpc003 --storagectl "IDE Controller" --port 1 --device 0 --medium none

Для регистрации ISO образа ОС в менеджере:
VBoxManage openmedium dvd /full/path/to/iso.iso

После того как запустили ПК, начнётся загрузка с FreeBSD-8.1-RELEASE-i386-dvd1.iso. Подключиться к запущенной машине из под M$ w!n можно с помощью UltraVNC. Качаем , устанавливаем, запускаем UltraVNC Viewer. В поле VNC Server указываем IP ПК, НА КОТОРЫЙ УСТАНАВЛИВАЛИ VIRTUALBOX и номер порта vnc (пример: ПК_с_virtualbox:3389). Жмём “Connect” и видим экран виртуальной ПК.

Так же бывает необходимо автоматически запускать виртуальную машину после запуска ПК, на котором установлен virtualbox, для этого создадим скриптик:
ee /usr/local/etc/rc.d/vbpc003load

с таким содержимым.
Здесь:
vboxnet -демон, после запуска которого стартовать скрипт
vbpcname –это имя создаваемого выше виртуального ПК
vncport –номер порта vnc
vbpc003load -название скрипта и name

Если в скрипте стоит vbpc003load_enable=»NO»(как у меня в примере), то требуется строка vbpc003load_enable="YES" в /etc/rc.conf

Делаем его исполняемым:
chmod +x /usr/local/etc/rc.d/vbpcload

в /etc/rc.conf добавляем строку:
vbpc003load_enable="YES"

После перезагрузки физического ПК, на котором установлен VirtualBox, виртуальная машина с именем vbpc003 будет стартовать автоматически.

Для удаления виртуальной машины:
1) сначала отключаем hdd от ВМ:
VBoxManage storageattach vbpc003 --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium none

здесь
—port 0 —device 0 -параметры которые мы задавали выше при подключении к IDE0 нашего виртуального винчестера vbhdd003.vdi

2) Теперь удаляем hdd из менеджера виртуальных носителей:
VBoxManage closemedium disk /mnt/pools/dsk00/virtual/sr/vbhdd/vbhdd003.vdi

здесь
если добавить параметр —delete то удалится и файл /mnt/pools/dsk00/virtual/sr/vbhdd/vbhdd003.vdi. Если —delete не добавлять то диск удалится из менеджера виртуальных носителей, но физически останется в диретории /mnt/pools/dsk00/virtual/sr/vbhdd/

3) Далее если остальные диски, включая iso-образы, отключены, нам будет позволено удалить виртуальную машину:
VBoxManage unregistervm vbpc003 --delete

здесь
—delete -удалит и файл XML с описанием ВМ

Подведём итог:
Мы разобрались как установить virtualbox на сервер без X11 на FreeBSD, создать и настроить виртуальную машину, к которой можем подключаться по vnc для установки ОС, отключить/удалить диски виртуальной машины и саму ВМ, а так же организовали автозапуск этой виртуальной машины.