VirtualBox/FreeBSD как хост-машина

Материал из Lblss.ru
Перейти к: навигация, поиск

Тут все не так просто. Для FreeBSD удалось обнаружить только OSE версию в портах. Проблем со сборкой и установкой не возникло, но вот далее...

Содержание

Нет дисплея

На сервере нет GUI и ставить его нет никакого желания. Увы, VRDE не работает в OSE. Зато можно сделать скриншот. Пронаблюдать за процессом загрузки удалось скриптом, который создает кучу скриншотов

$ for i in {0001..5000} ; do echo $i ; VBoxManage controlvm VM_Name screenshotpng "scr-$i.png" ; done

Скрипт запускаем сразу после старта виртуальной машины.

Как создать виртуальную машину

Создаем машину, настраиваем... Ссылка на мануал

Но так как на сервере нет GUI и в VirtualBox OSE нет VRDE, то с установкой и с первоначальной настройкой гостевой ОС возникнут проблемы. Простейший выход - настроить все на другой хост-машине (с гуем или с пропиретарной сборкой виртуалбокса) и притащить уже готовое на сервер. Тем не менее, есть вариант миграции уже настроееной машины из MS Hyper-V, например. В этом случае можно взять файл виртуального диска *.vhd, а саму машину создать с нуля. Именно этот вариант ниже в подробностях.

Имя виртуальной машины в примерах vm2, файл жесткого диска vm2.vhd, пользователь webadmin, виртуальные машины выходят в сеть через физический интерфейс em1.

  • Логинимся или заходим через sudo -s в консоль юзера, от которого будет работать машина.
$ sudo -s -u webadmin
$ cd
  • Создаем и регистрируем новую виртуальную машину.
$ VBoxManage createvm --name vm2 --register

В прнципе, можно задать гораздо больше опций при создании машины, но можно настроить и по шагам. На этом этапе создается пустая виртуальная машина и некоторая часть структуры директорий, в частности "/home/webadmin/VirtualBox VMs/vm2".

  • Задаем тип гостевой ОС. Список поддерживаемых типов можно посмотреть командой:
$ VBoxManage list ostypes

Нас интересует FreeBSD_64

$ VBoxManage modifyvm vm2 --ostype FreeBSD_64
  • Оперативная память - 1024 МБ (1 гиг, но указывать нужно в мегабайтах). Видеопамять - 8 мегабайт.
$ VBoxManage modifyvm vm2 --memory 1024 --vram 8
  • Еще некоторые настройки... Ну и пару процессорных ядер добавим. Да и чипсет материнской платы установим.
$ VBoxManage modifyvm vm2 --acpi on --ioapic on --pae on --cpus 2 --chipset ich9
  • Дисковый контроллер
$ VBoxManage storagectl vm2 --name IDEcontroller --add ide --controller PIIX4 --bootable on
  • Создать HDD (если используем существующий диск, то этот шаг пропускаем)
$ VBoxManage createhd --filename /home/webadmin/VirtualBox\ VMs/vm2/vm2.vhd --size 8196 --format VHD --variant Fixed
  • Подключить HDD его к контроллеру
$ VBoxManage storageattach vm2 --storagectl IDEcontroller --port 0 --device 0 --type hdd --medium /home/webadmin/VirtualBox\ VMs/vm2/vm2.vhd
  • Создаем сетевой адаптер и подключем его мостом к физическому адаптеру хост-машины em1
$ VBoxManage modifyvm vm2 --nic1 bridged --nictype1 82543GC --bridgeadapter1 em1

В гостевой FreeBSD единственный адаптер 82543GC будет определяться как em0. Это следует заранее прописать в настройках в /etc/rc.conf

Запуск и остановка виртуальных машин

Так как GUI нет, то машины следует запускать в режиме headless:

$ VBoxManage startvm vm2 --type headless 

Остановку (с выключением питания) можно сделать как из ОС гостевой машины, так и командами

$ VBoxManage controlvm vm2 acpipowerbutton

или более жетоско

$ VBoxManage controlvm vm2 poweroff

Команды для controlvm: pause | resume | reset | poweroff | savestate | acpipowerbutton (есть и другие)

Как автоматически запускать виртуальную машину

Способы, описанные в мануале не будут работать. Причина та же - OSE. Однако, есть скрипт /usr/local/etc/rc.d/vboxheadless. Конфигурять в /etc/rc.conf, читать каменты в начале скрипта.

Маленькое замечание: если машина была запущена вручную (а не этим скриптом), то проверка статуса покажет что машина остановлена. Однако, это можно обойти и не выключая машину. Например, послать машине команду savestate (сохранить состояние), а затем запустить ее из скрипта (потом не забыть подкорректировать время).

Еще момент: при выключении хост-машины выртуалки будут по дефолту переходить в состояние savestate. Это недопустимо, например, для контроллера домена (возможны проблемы, если один из контроллеров уснет надолго). В таком случае, представляется более правильным делать полную остановку виртуальной машины. Например, vboxheadless_stop="acpipowerbutton". Разумеется, необходимо проследить, что виртуальная машина поддерживает отключение питания "от кнопки".

Еще по мелочам

  • Для синхронизации времени (и получения других фишек) гостевой машины через VirtualBox нужно в гостевую машину установить дополнения гостевой ОС. Для гостевой фряхи это будет порт virtualbox-ose-additions (он тащит много чего не особо нужного). Для сборки потребуются исходники /usr/sys.
  • Отключить диск от контроллера можно так:
$ VBoxManage storageattach vm2 --storagectl IDEcontroller --medium none --port 0 --device 0
  • Посмотреть список HDD можно так:
$ VBoxManage list hdds
  • Разрегистрировать диск так (а ключик --delete еще и удалит файл диска):
$ VBoxManage closemedium disk /home/webadmin/VirtualBox\ VMs/vm2/vm2.vhd --delete
  • Скриншот текстовой консоли (экрана):
$ VBoxManage debugvm vm2 info vgatext
  • Скриншот графического экрана виртуальной машины с сохранением в файл:
$ VBoxManage controlvm dc screenshotpng ./dc.png
  • Просмотр инфо о конфигурации машины
$ VBoxManage showvminfo dc --details
  • Подключить диск с дополнениями гостевой ОС (машину перед этим выключить?)
$ VBoxManage storageattach dc --storagectl IDE --type dvddrive --port 0 --device 0 --medium /usr/local/lib/virtualbox/additions/VBoxGuestAdditions.iso

Ссылки

Персональные инструменты