Como o Debian espera que todos os convidados do VirtualBox parem durante o desligamento / reinicialização?

1

Estou usando o vboxautostart-service para iniciar todos os meus vms na inicialização do sistema (Debian 7), eles foram configurados com este comando: VBoxManage modifyvm '<vm-name>' --autostart-enabled on --autostop-type savestate .

Eu também posso pará-los manualmente executando service vboxautostart-service stop , isso leva cerca de 10 segundos para salvar o estado de todos os vms.

No entanto, se eu reiniciar a máquina host (ctrl + alt + del ou executar reboot ), ele não esperará que os vm salvem seu estado e, da próxima vez que eu inicializar, todos terão o estado Aborted . Eu tentei modificar o vboxautostart-service adicionando um sleep 15 , mas sem efeito. Os processos parecem ter sido eliminados, suponho, porque eles não saem rápido o suficiente.

Alguém sabe como resolver isso?

    
por Geir 18.06.2015 / 00:14

1 resposta

4

Longa história curta ... você precisa escrever seu próprio script init.d para rodar em nível de execução 0 (parada) e / ou 6 (reinicialização) e talvez executar nível 1 (modo de usuário único, típico para situações de recuperação).

Por exemplo, em /etc/init.d/virtualbox, crie algo assim:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          virtualbox_start_and_stop
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: 
# Description:       Start virtualbox on boot, and shutdown safely on shutdown/reboot.
### END INIT INFO

case "$1" in
  start)
    echo "Starting Virtualbox "

    # Do whatever to start or resume your virtualbox instances.
    # Perhaps look for a txt file someplace with VMs that need to be restarted or resumed... then start 'em.
    ;;
  stop)
    echo "Stopping Virtualbox"

    # Do something to either shutdown or savestate your virtualbox instances.
    # maybe also save the instances that should be resumed into a txt file someplace for the start method above.

    ;;
  *)
    echo "Usage: /etc/init.d/virtualbox {start|stop}"
    exit 1
    ;;
esac

exit 0

Verifique se é executável ( chmod +x /etc/init.d/virtualbox ) e, em seguida, execute update-rc.d virtualbox defaults para criar todos os links simbólicos apropriados nos locais corretos para iniciar / parar corretamente.

    
por 18.06.2015 / 00:39