Я пытаюсь найти решение, чтобы корректно завершить работу любых гостевых виртуальных машин, работающих под Windows VirtualBox, когда компьютер выключен или перезапущен.
Кажется, что наиболее безопасным вариантом будет запуск команды «сохранить состояние», когда хост начинает отключаться, но неясно, будет ли хост ждать достаточно долго, чтобы виртуальные машины завершили сохранение состояния и отключили питание.
У кого-нибудь есть надежное решение этой (казалось бы, базовой) проблемы?
windows
virtualbox
virtual-machine
virtualization
shutdown
Мэтт Дженкинс
источник
источник
Ответы:
У меня была похожая проблема, и я решил ее, запустив VirtualBox как сервис:
http://vboxvmservice.sourceforge.net/
С VBoxVMService вы можете выбрать, как вы хотите выключить машину (сохранить состояние, отключить питание) и запустить. Поскольку он работает как служба, Windows автоматически будет ждать его завершения во время процесса выключения системы.
источник
К сожалению, это не представляется возможным для виртуальных машин, запущенных через VirtualBox GUI. Даже если графический интерфейс может перехватить событие отключения хоста и отреагировать, служба VirtualBox прекратит работу: https://forums.virtualbox.org/viewtopic.php?p=278668#p278668
Если вам не нужна графическая консоль, VBoxHeadlessTray или VBoxVMService могут помочь. Оба поддерживают автоматическое сохранение и возобновление работы при выключении и перезагрузке хоста Windows.
VirtualBox 5.0 вводит режим запуска «отсоединяемый пользовательский интерфейс» . Этот режим запускает безголовую виртуальную машину с отдельным процессом пользовательского интерфейса. Графическая производительность страдает, а 3D-ускорение пока не поддерживается. Но, возможно, это может быть объединено с VBoxHeadlessTray в будущем (VBoxHeadlessTray пока не поддерживает 5.0). Ссылки на репозиторий VBoxHeadlessTray GitHub и на соответствующий запрос GitHub для добавления поддержки VirtualBox 5 .
Изменить: VBoxVmService также не поддерживает новый режим отсоединения начиная с версии 5.0. Пока только без головы . Я добавил запрос функции для этого.
источник
У меня есть 3 пакетных сценария, которые я использую вместо кнопок питания в стартовом меню.
do_shutdown.bat (выключение компьютера с 10- секундным периодом ожидания, чтобы не дать виртуальному виртуальному компьютеру 10-секундное время для сохранения, но чтобы я мог отменить выключение в течение 10 секунд. Обратный отсчет начинается после того, как виртуальный компьютер был выключен)
do_reboot.bat (перезагружается сразу после закрытия виртуальной машины )
do_cancel.bat (позволяет мне отменить выключение компьютера в течение 10 секунд ожидания. Затем он снова перезапускает виртуальные машины, так как они были закрыты с помощью do_shutdown.bat)
Вместо этого
savestate
вы также можете использовать один из следующихисточник
Извините, я опоздал на вечеринку. Существует точный ответ на это, хотя для этого требуется некоторая командная строка-foo. См. Эту ветку сообщений для получения дополнительной информации: https://forums.virtualbox.org/viewtopic.php?f=6&t=53684#p285540
Команда, которую вы ищете:
"C: \ Program Files \ Oracle \ VirtualBox \ VBoxManage.exe" setextradata "ИМЯ Виртуальной машины" GUI / DefaultCloseAction Завершение работы
Это то, что я использую на нескольких виртуальных машинах, закройте окно, и оно автоматически начнет безопасное отключение. Завершите работу Windows и при попытке закрыть все будет ждать завершения этих процессов.
источник
У меня был похожий вопрос и я нашел эту страницу. Я не хочу запускать VirtualBox как сервис, потому что у меня много виртуальных машин для тестирования, и я обычно выбираю разные для запуска в пользовательском интерфейсе VirtualBox. Когда я выключаю свой компьютер, раздражает ручное сохранение состояния каждой виртуальной машины. Использование сценариев для сохранения всех работающих виртуальных машин представляется в этом случае практическим решением. Чтобы сделать ответ Даниэля Ф. более общим, я написал эти сценарии, которые автоматически сохраняют состояние всех работающих виртуальных машин, не называя их явно.
saveRunningVMs.bat для Windows:
saveRunningVMs.sh для Linux:
источник
Я создал скрипт Python, который приостановил бы все работающие виртуальные машины VirtualBox, а затем настроил систему для запуска сценария при выходе из системы в качестве запланированной задачи.
Я не знаю, насколько надежен этот метод. Как уже отмечали другие, существуют ограничения на то, как долго система будет ждать завершения задачи Winlogon 7002. Но лично у меня не было никаких проблем с предоставлением пригодных для сохранения состояний даже с несколькими запущенными виртуальными машинами на 4+ ГБ общей виртуальной памяти.
Вот шаги, чтобы настроить это:
python.exe
, напримерc:\Python27\python.exe
C:\Users\rakslice\Documents\vboxsuspend\vboxsuspend.py
Теперь виртуальные машины VirtualBox должны быть приостановлены при выходе из системы / перезагрузке / завершении работы.
Скрипт python для выключения находится ниже:
источник