Настройка запуска VirtualBox-машин демоном в режиме headless

Некоторое время назад столкнулись с задачей сделать виртуальную машину, которая будет подниматься как сервис на одном из серверов.

Для реализации этой задачи нам нужен Virtualbox с поддержкой Headless. Ставим либо app-emulation/virtualbox-bin, либо app-emulation/virtualbox. На virtulbox-bin версии 4.1.12 столкнулись с проблемой отсутствия звука, потому мы использовали ту версию, что полностью собирается из исходников.

echo "app-emulation/virtualbox headless extensions alsa" >> /etc/portage/package.use/custom
emerge -a app-emulation/virtualbox

После того, как мы установили Virtualbox, добавим /etc/conf.d/modules модули необходимые для работы виртуальных машин: vboxdrv vboxnetflt vboxnetadp. Чтобы не перезагружать компьютер, а работать прямо сейчас выполним: modprobe -a vboxdrv vboxnetflt vboxnetadp

Теперь нам необходимо создать пользователя, от которого мы будем запускать нашу виртуальную машину и производить все последующие действия и перейдем на выполнение команд от этого пользователя.

useradd vbuser -m -G audio,cdrom,video,cdrw,users,vboxusers
su vbuser
cd

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

VBoxManage createvm --name "winxp" --register

Потом мы задаем настройки для этой машины. Сеть делаем в режиме бриджа, чтобы машина имела свой собственный ip в сети.

VBoxManage modifyvm "winxp" --memory "512" --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0

Создаем виртуальный жесткий диск размером 10Гб и устанавливаем его первым для нашей машины.

VBoxManage createhd --filename "WinXP.vdi" --size 10000
VBoxManage storagectl "winxp" --name "IDE Controller" --add ide --controller PIIX4
VBoxManage storageattach "winxp" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium "WinXP.vdi"

Включаем звук.

VBoxManage modifyvm "winxp" --audio alsa

Теперь подключаем cd-образ, с которого мы будем ставить систему:

VBoxManage storageattach "winxp" --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /full/path/to/iso.iso

Теперь попробуем запустить нашу виртуальную машину, если все настроено нормально, то мы увидим строчки с копирайтами и информацию о том, на каком порту поднят RDP для доступа к виртуальной машине.

VBoxHeadless --startvm "winxp"

Нормальный запуск выглядит следующим образом.

Oracle VM VirtualBox Headless Interface 4.1.12_Gentoo_
(C) 2008-2012 Oracle Corporation
All rights reserved.

VRDE server is listening on port 3389.

Теперь используя net-misc/rdesktop подключаемся к нашей машине rdesktop host:3389 и производим установку системы.

Порт VRDP можно поменять следующим образом.

VBoxManage modifyvm "winxp" --vrdeport 3390

В случае, если на машине несколько сетевых интерфейсов, то можно указать на каком из них будет подниматься VRDP.

VBoxManage modifyvm "winxp" --vrdeaddress 192.168.1.51

Теперь настало время настройки автозапуска виртуальной машины. Для этого нам понадобится несколько файлов:
Приложенный файл virtualbox.winxp содержит в себе настройки для запуска виртуальной машины. Его следует разместить в папке /etc/conf.d/

В данном файле мы указываем от какого пользователя, какую машину и как именно будем запускать.

 # Username to start vbox as, must be part of vboxusers group.
VM_USER="vbuser"

 # Virtual Machine Name
VM_NAME="winxp"

 # Shutdown Method: pause|resume|reset|poweroff|savestate|acpipowerbutton|acpisleepbutton
VM_SHUTDOWN="savestate"

 # Nice Priority: -20 (most favorable scheduling) to 19 (least favorable)
VM_NICE=0

Файл virtualbox следует сделать исполняемым и разместить в папке /etc/init.d/ - это демон для запуска виртуальных машин.

Остались финальные штрихи: создаем символическую ссылку для демона запуска и добавляем его в автозагрузку.

ln -s /etc/init.d/virtualbox /etc/init.d/virtualbox.winxp
rc-update add virtualbox.winxp default

Теперь виртуальная система будет стартовать при запуске и к ней можно будет подключиться по RDP.

Большое спасибо, используем headless и Ваша статья помогла решить некоторые вопросы

Интересна статья.
Когда-то пробовал
virtualbox USE=“headless vboxwebsrv”
сходу не разобрался и оставил попытки.
Вы не пробовали разобраться с vboxwebsrv?

PS
Решил погуглить. Похоже сам себе нашел ответ
и он даже в портежах есть

 # eix phpvirtualbox
* app-emulation/phpvirtualbox
     Available versions:  (4.1.7) ~4.1.7
        {{vhosts}}
     Homepage:            http://phpvirtualbox.googlecode.com
     Description:         Web-based administration for VirtualBox in PHP

За статью огромное спасибо
только у меня вопрос
как подсадить драйвера на сетевую если винда 2008 не видит сетивых драйверов(решение это нужно поставить драйвера на AMD PCNET Family Ethernet Adapter (PCI))
и у Вас мышка нормально в рдп работает у меня она то подвисает то притормаживает (проблему мыши решил добавлением Guest Additions драва на сетевую так и не могу решить )…
был бы очень признателен помощи.
подключение общей папки
незабываем тушить
VBoxManage controlvm testmachine poweroff
VBoxManage sharedfolder add “VM name” --name “sharename” --hostpath “/home/vbuser/общая папка” --automount