суббота, 28 мая 2011 г.

VirtualBox service или Автозапуск виртуальной машины в VirtualBox под windows host

Столкнувшись с необходимостью запускать виртуальную машину до старта пользователя сразу решить проблему мне не удалось. Пришлось прочитать кучу всякого трэша, собрать воедино и отредактировать. Возможно кому-то это поможет в буущем)

Есть 3 наиболее распространенных варианта автозапуска виртуальной машины:

а) Через планировщик задач, но для этого необходимо написать батник, который и будет запускать машину. В написани батников я не силен, да и в планировщик не верую. [b:page1]
б) Использовать VBoxVmService, но с этой штукой надо еще разобраться. [d] /UPD/ очень хорошо метод описан в этой статье.
в) С помощью 2х файликов из комплекта Windows Resource Kit создать пользовательский процесс, который будет стартовать нашу машину. [b:page2][c]

Рассмотрим третий способ:

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 savestate'

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

Скрипт должен сохранять состояние виртуалки перед завершением процесса.[e]

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

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

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

Ну вот и все +) Удачных настроек!



Использовал источники:
[a]http://forum.oszone.net/post-1207018.html
[b]http://forums.virtualbox.org/viewtopic.php?f=6&t=1887&start=15
[c]http://support.microsoft.com/kb/137890
[d]http://forums.virtualbox.org/viewtopic.php?p=16914
[e]http://www.windows-help-central.com/windows-shutdown-script.html

1 комментарий:

  1. "Записки системного администратора.

    В написани батников я не силен, да и в планировщик не верую."

    и это еще не 1-е апреля ! ))))))

    ОтветитьУдалить