У меня есть машина VirtualBox с Windows XP на хосте Windows XP.
Как я могу запустить VirtualBox как сервис, чтобы я мог получить виртуальную машину под капотом, и мне не нужно запускать VirtualBox для доступа к моей виртуальной машине (через VNC из сети)?
Я обнаружил, что VirtualBox Manage может быть способом, но так как я новичок в этом, я не знаю, с чего начать.
Есть идеи?
windows-xp
virtualbox
Джонни Д. Кано
источник
источник
Обратите внимание, что принятый в настоящее время ответ (Molly7244) фактически запускает виртуальную машину при входе в систему, а не при загрузке компьютера. Другими словами, это не услуга.
Для реальной службы, которая запускается при загрузке машины, я использую два сценария (изначально отсюда ) в сочетании с cygwin (cygrunsrv). Использует режим VBoxHeadless, как упомянуто в другом месте на этой странице.
Первый скрипт запускает вашу виртуальную машину через VBoxHeadless; он получает имя нужной виртуальной машины для запуска (и другую информацию, такую как домашний каталог VBOX) из переменных среды. Второй сценарий устанавливает службу для конкретной виртуальной машины (используя cygrunsrv для вызова первого сценария с установленным правом env. Vars). Наконец, есть третий файл, который содержит общие функции. Если вы поместите все это в каталог вместе, вы можете установить новый vm следующим образом:
А затем запустите службу с помощью «net start vboxd-MyVMName» или «cygrunsrv -S vboxd-MyVMName».
Вот скрипт для запуска виртуальной машины "vboxd":
А вот скрипт установщика "vboxd-install":
И, наконец, вот скрипт ".libcommon", на который ссылаются оба из них:
Это решение прекрасно работает для меня; надеюсь, вам повезет.
источник
Похоже, самый простой ответ на данный момент VBoxVMService . Я еще не пробовал, я постараюсь не забыть прийти сюда и обновить ответ, если / когда я это сделаю.
источник
Договорились на VBoxVMService. Это действительно легко настроить и, кажется, работает хорошо. Вы можете найти, как настроить это здесь:
http://www.windows-noob.com/forums/index.php?/topic/4931-have-virtualbox-vms-start-as-a-service-on-a-windows-host/
**** РЕДАКТИРОВАТЬ **** Согласно запросу ниже, резюме ссылки. Хотя решение сработало для меня, заслуга Питера Апфолда - http://peter.upfold.org.uk/
Замените в VBOX_USER_HOME на папку .VirtualBox в правильном домашнем каталоге пользователя, а также на директивы RunAsUser и UserPassword и задайте имя целевой виртуальной машины в приложении VirtualBox в VmName. Вы также можете добавить дополнительные секции [Vmx] после [Vm0] с другими виртуальными машинами, чтобы запускаться при загрузке машины.
Если вы довольны своей конфигурацией, в командной строке с включенным администратором выполните следующую команду, чтобы установить службу. После установки службы вы можете удалить свой пароль пользователя из INI-файла, так как он сохраняется в конфигурации службы:
Теперь вы должны перезагрузить компьютер, прежде чем пытаться запустить службу в первый раз, иначе он не сможет найти виртуальные машины.
После перезагрузки служба должна запуститься (с задержкой «Автоматический (отложенный запуск)»), и ваши виртуальные машины будут запущены при загрузке.
источник
Просто предлагая это как еще один вариант:
Используйте встроенную команду Windows «sc» для создания службы. Объедините это с vboxheadless, и вы попадете туда, куда хотите.
Непроверенный с vboxheadless, но я создал тестовый сервис, который запускает calc.exe. Вы должны делать что-то вроде этого:
sc create servicenamehere start= auto binPath= "C:\path\to\vboxheadless.exe --startvm name"
Обратитесь к документации для sc для получения дополнительной информации. Примечание. Эти пробелы после знака равенства являются преднамеренными.
источник
Если сценарии vboxd доставляют вам столько же проблем, сколько и мне, вы можете попробовать это; это довольно простое решение, реализованное в Perl, которое обеспечивает ту же функциональность. В частности, виртуальная машина запускается вместе с системой (при условии, что служба настроена на автоматический запуск (по умолчанию)) и полностью отключается при остановке службы.
Основными отличиями от решения vboxd, помимо того, что по моему опыту с ним значительно проще справиться, является то, что этот сценарий не передает настройку порта VRDE в VBoxHeadless и что завершение работы виртуальной машины обрабатывается с помощью «acpipowerbutton», а не «savestate» ,
Если это не соответствует вашим целям, это достаточно легко изменить; в первом случае добавьте '-e "TCP / Ports = [, port ...]"' в строку командной строки VBoxHeadless ($ cmd), а во втором случае просто измените "acpipowerbutton" на "savestate" в обработчик SIGTERM.
Вот скрипт Perl:
А вот командная строка cygrunsrv, которую я использовал для установки службы Windows:
Оттуда, это должно быть просто вопросом 'sc start <имя-службы>', и вы должны быть готовы - помните, что по умолчанию службы cygrunsrv записывают в / var / log / <имя-службы> .log, так что если что-то плохо себя ведет, это первое место, где нужно искать причину.
Следует иметь в виду, что когда вы запускаете виртуальную машину таким образом, она будет работать под встроенной учетной записью SYSTEM, а не под вашей собственной. В этом случае вы не сможете администрировать виртуальную машину через консоль VirtualBox, пока она работает как служба; он будет находиться в состоянии «Выключен», и вы не сможете перейти к его настройкам. (Попытка включить виртуальную машину, пока она работает как служба, не рекомендуется - я не знаю, что произойдет, но в лучшем случае это будет неработоспособность, а в худшем случае это приведет к повреждению вашей виртуальной машины.) Если вам нужно изменить настройки виртуальной машины или получить доступ к консоли, сначала остановите службу (и дождитесь выхода VBoxHeadless.exe), а затем настройте его / включите его в консоли VirtualBox, как обычно.
Возможно, вы могли бы решить эту проблему, установив второй интерактивный сервис для запуска консоли VirtualBox; так как это будет запускать консоль также под учетной записью SYSTEM, она, скорее всего, сможет видеть и управлять работающей виртуальной машиной. У меня не было необходимости делать это самому, поэтому я не уверен, что это сработает, но я не вижу причины, по которой это не сработает. (Если вы попробуете это, я буду признателен за комментарий к этому ответу, который даст мне знать, как это сработало для вас. Спасибо!)
Надеюсь это поможет!
источник
vboxd-install
полезно, потому что удобно скрывает детали аргумента cygrunsrv. Я согласен, однако, чтоacpipowerbutton
это лучший вариант «остановки», чемsavestate
.