Estoy tratando de encontrar una solución para apagar con gracia cualquier máquina virtual invitada que se ejecute en VirtualBox Windows cuando la computadora host se apaga o reinicia.
Parece que la opción más segura sería activar el comando "guardar estado" cuando el host comienza a apagarse, pero no está claro si el host esperará lo suficiente para que las máquinas virtuales terminen de guardar el estado y se apaguen.
¿Alguien tiene una solución sólida para este problema (aparentemente básico)?
windows
virtualbox
virtual-machine
virtualization
shutdown
Matt Jenkins
fuente
fuente
Respuestas:
Tuve un problema similar y lo resolví ejecutando VirtualBox como servicio:
http://vboxvmservice.sourceforge.net/
Con VBoxVMService puede elegir cómo quiere que la máquina se apague (Guardar estado, apagado) y arranque. Como se está ejecutando como un servicio, Windows esperará automáticamente a que se apague durante el proceso de apagado del sistema.
fuente
Desafortunadamente, eso no parece ser posible para las máquinas virtuales iniciadas a través de VirtualBox GUI. Aunque la GUI puede detectar el evento de apagado del host y reaccionar, el servicio VirtualBox se termina: https://forums.virtualbox.org/viewtopic.php?p=278668#p278668
Si no necesita una consola gráfica, VBoxHeadlessTray o VBoxVMService pueden ser el camino a seguir. Ambos admiten guardar y reanudar automáticamente en el apagado y reinicio del host de Windows.
VirtualBox 5.0 presenta un modo de inicio "UI desmontable" . Este modo inicia una VM sin cabeza con un proceso de IU separado. Sin embargo, el rendimiento gráfico sufre y la aceleración 3D aún no es compatible. Pero tal vez esto se pueda combinar con VBoxHeadlessTray en el futuro (VBoxHeadlessTray aún no es compatible con 5.0). Enlaces al repositorio de VBoxHeadlessTray GitHub y a la solicitud de extracción de GitHub correspondiente para agregar soporte para VirtualBox 5 .
Editar: VBoxVmService tampoco es compatible con el nuevo modo desmontable a partir de la versión 5.0. Solo sin cabeza hasta ahora. Agregué una solicitud de función para eso.
fuente
Tengo 3 scripts por lotes que utilizo en lugar de los botones de encendido del menú de inicio.
do_shutdown.bat (apagado de la PC con un período de espera de 10 segundos, no para dar tiempo de 10 segundos a la vm para guardar el estado, sino para permitirme cancelar el apagado en 10 segundos. La cuenta regresiva comienza después de que las vm se hayan apagado)
do_reboot.bat (se reinicia inmediatamente después de que se cierre el vm)
do_cancel.bat (me permite cancelar el apagado de la PC dentro del período de espera de 10 segundos. Luego reinicia los vm nuevamente, ya que se cerraron con el do_shutdown.bat)
En lugar de
savestate
usted también puede usar uno de los siguientesfuente
Lo siento, llego tarde a la fiesta. Hay una respuesta exacta a esto, aunque requiere algo de línea de comandos-foo. Consulte esta publicación de hilo para obtener más información: https://forums.virtualbox.org/viewtopic.php?f=6&t=53684#p285540
El comando que estás buscando es:
"C: \ Archivos de programa \ Oracle \ VirtualBox \ VBoxManage.exe" setextradata "VM NAME" GUI / DefaultCloseAction Shutdown
Esto es lo que uso en varias máquinas virtuales, cierro la ventana y se inicia automáticamente un apagado seguro. Apague Windows y, en su intento de cerrar todo, esperará a que se completen estos procesos.
fuente
Tuve una pregunta similar y encontré esta página. No quiero ejecutar VirtualBox como un servicio, porque tengo muchas máquinas virtuales para probar, y generalmente elijo diferentes para ejecutar en la interfaz de usuario de VirtualBox. Cuando apago mi computadora, es molesto guardar manualmente el estado de cada VM. El uso de scripts para guardar todas las máquinas virtuales en ejecución parece ser una solución práctica en este caso. Para hacer la respuesta de Daniel F más general, escribí estos scripts que guardan automáticamente el estado de todas las máquinas virtuales en ejecución sin nombrarlas explícitamente.
saveRunningVMs.bat para Windows:
saveRunningVMs.sh para Linux:
fuente
Creé un script de Python que suspendería todas las máquinas virtuales de VirtualBox en ejecución y luego configuré el sistema para ejecutar el script al cerrar sesión como una tarea programada.
No sé qué tan confiable es este método exactamente. Como otros han señalado, hay límites en cuanto al tiempo que el sistema esperará a que se complete una tarea de Winlogon 7002. Pero, personalmente, no he tenido ningún problema al proporcionar estados de guardado utilizables incluso con múltiples máquinas virtuales en ejecución en más de 4 GB de RAM de VM en general.
Estos son los pasos para configurarlo:
python.exe
, por ejemploc:\Python27\python.exe
C:\Users\rakslice\Documents\vboxsuspend\vboxsuspend.py
Ahora las máquinas virtuales de VirtualBox deberían suspenderse al cerrar sesión / reiniciar / apagar.
La secuencia de comandos de Python para hacer el apagado está a continuación:
fuente