пятница, 22 июня 2012 г.

Windows server 2008/2003 + VirtualBox + Ubuntu - запуск виртуальной машины в качестве службы

Текст чистый копипаст с источника, на случай если там вдруг пропадёт и мне для быстрого поиска.

Исправил только один момент: в источнике виртуалка сохраняется командой savestate, у меня же она будет выключаться по команде acpipowerbutton.




1) Добываем файлики Srvany.exe и Instsrv.exe, которые есть в комплекте Windows Resource Kit, я брал отсюда.[a] Оба файла нужно поместить в C:\Windows\system32

2) Запускаем консоль (пуск > выполнить > cmd) и добавляем в нее запись ниже, заменяя выделенное жирным шрифтом на названия нашего будущего сервиса, первое название по идее должно быть без пробела, второе как пожелаете:

sc create ServiceName binPath= "%SystemRoot%\System32\srvany.exe" start= auto DisplayName= "Service Name"

Если все прошло удачно, то ответят что-то вроде success =)
Чтобы проверить работает ли процесс надо открыть services и попробовать стартануть его вручную.

Важно: далее все названия и пути указываем без кавычек (без 'example').

3) Запускаем `regedit` и ищем наш сервис тут '[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName]'

3.1) Добавляем раздел (section) и наываем его 'Parameters'

3.2) В этом разделе создаем ключ StringValue, называем 'Application' изменяем значение на 'C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe'

3.3) В этом же разделе создаем ключ StringValue, называем 'AppParameters' изменяем значение на '-s VmName -vrdp=off'
заменив VmName на название вашей виртуальной машины.

3.4) Там же создаем ключ StringValue, называем 'AppDirectory' изменяем значение на 'C:\Program Files\Sun\VirtualBox\'

4) Запускаем `gpedit.msc` и находим 'Computer Configuration/Windows Settings/Scripts/Shutdown'
Создаем скрипт и называем его 'C:\Program Files\Sun\VirtualBox\VBoxManage.exe', либо выбираем путь до него кнопкой browse, параметры задаем 'vboxmanage controlvm VmNname acpipowerbutton'

заменив VmName на название вашей виртуалки.


Проверить реагирует ли ваша виртуалка на команду acpipowerbutton можно запустив эту команду в командной строке windows и вы соответственно увидите выключится она или нет (В командной строке нужно соответсвенно зайти в папку где находится файл VBoxManage.exe и виртуалка должна быть у вас запущенна). Если виртуалка не реагирует, значит вам необходимо доставить компонент acpid.
sudo apt-get install acpid
После этого повторите попытку, ваша виртуалка выключится как положено.
Скрипт должен ПРАВИЛЬНО выключать виртуалку перед завершением процесса.

5) Копируем папку '.VirtualBox' из 'C:\Users\YourUser\' (где YourUser - имя вашей учетной записи) в 'C:\Windows\System32\config\systemprofile\'

Важно: 5 пункт нужно повторять после каждого изменения свойств машины, иначе она может не стартануть в следующий раз

Проверить запускается ли виртуалка можно поискав процесс VBoxHeadless.exe, если он есть значит машинка запущена. Также при наличии роутера в настройках сети для машины можно заменить NAT на bridge, тогда роутер отдаст по DHCP адрес из вашей подсети, если сказать роутеру мак виртуалки, то можно задать ей постоянный внутренний IP. Теперь можем проверить не залогиниваясь, работает ли наша машинка, попингав ее с другого компа. Настроив port forwarding можем получить к ней доступ, например по ssh, из внешней сети.





Комментариев нет:

Отправить комментарий