воскресенье, 9 мая 2010 г.

VirtualBox Service

Привет всем, сегодня я расскажу как заставить VirtualBox стартовать в качестве службы на Windows и корректно запускать и останавливать виртуальные машины без входа пользователя в систему.

Для этого нам понадобиться скачать и установить последний Virtual Box (выше 3.х), установка производиться по умолчанию (т.е. полная конфигурация).

Создать на диске С: (вообще можно на любом диске все это творить, просто исправьте потом пути) папки vbox\vdi и vbox\machines.

Теперь запустим VitualBox и настроим его. Файл - Настройка  там правим пути Папка для жестких дисков C:\vbox\vdi, Папка для машин C:\vbox\machines. Сохраняем, ставим обычным образом виртуальные машины или импортируем их. Закрываем VirtualBox.

Скачиваем проект http://sourceforge.net/projects/vboxvmservice/ и распаковать его файлы в папку C:\vbox\vms.

Для своей работы проект запрашивает:
- Microsoft Windows 2003 Resource Kit Tools
- Microsoft Visual C++ Runtime (version 2005 or later)
- Microsoft Dotnet Framework 2.0
поэтому их придется поставить после этого надо изменить файл конфигурации C:\vbox\vms\VBoxVmService.ini

[Settings]
ServiceName=VBoxVmService
PathToVBoxSDL=C:\Program Files\Sun\VirtualBox\VBoxSDL.exe
PathToVBoxHeadless=C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe
PathToVBoxManage=C:\Program Files\Sun\VirtualBox\VBoxManage.exe
VBOX_USER_HOME=C:\WINDOWS\system32\config\systemprofile\.VirtualBox
[Vm0]
VmName=UbuntuServer
CommandLineUp=E:\vbox\vms\startup.exe 0 BRUTEFORCE
CommandLineDown=E:\vbox\vms\shutdown.exe 0
WorkingDir=E:\vbox\vms
StartupMethod=vrdp
ShutdownMethod=savestate
VrdpPort=3001

имена машин можно узнать дав в консоле команду:
"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" -list vms

Далее необходимо создать жесткую ссыдку на xml-файл с конфигурацией машин:
fsutil hardlink create "%windir%\System32\config\systemprofile\.VirtualBox\VirtualBox.xml" "%userprofile%\.VirtualBox\VirtualBox.xml"

Все, теперь ставим службу VBoxVmService:
 C:\vbox\vms\VBoxVmService.exe -i

(удалить службу можно ключом -u)

Теперь  идем в Пуск - Администрирование - Службы и ставим тип запуска нашей службы в Авто.

Собственно все. Теперь машины будут подниматься автоматом до входа пользователя.

Добавлено 11.05.2010:
При разворачивании службы на Windows 2003 стокнулся с проблемами:
1. Не удается  создать папки начинающиеся на ".", решилось копированием папки ".VirtualBox" из профиля пользователя в нужную папку, с последующей ее очисткой и созданием ссылки.
2. Служба не находила VirtualBox.xml, поэтому не могла запустить виртуальную машину. Решил созданием жесткой ссылки в "C:\Document and Settings\Default User\.VirtualBox".
3. И самое обидное VirtualBox некорректно работает на сетевых картах в тиминге.