1

Я использую vboxautostart-service для запуска всех моих vms при загрузке системы (Debian 7), они были настроены с помощью этой команды:VBoxManage modifyvm '<vm-name>' --autostart-enabled on --autostop-type savestate ,

Я также могу остановить их вручную, выполнив service vboxautostart-service stop , это займет около 10 секунд, чтобы сохранить состояние для всех vms.

Однако, если я перезагружаю хост-машину (ctrl+alt+del или выполняю reboot), он не будет ждать, пока виртуальные машины сохранят свое состояние, и в следующий раз, когда я загружаюсь, все они имеют состояние Aborted . Я попытался изменить vboxautostart-service , добавив режим sleep 15 , но безрезультатно . Кажется, процессы отрываются, я думаю, потому что они не выходят достаточно быстро.

Кто-нибудь знает, как обойти это?

1 ответ1

4

Короче говоря ... вам нужно написать собственный скрипт init.d для запуска на уровнях запуска 0(останов) и / или 6(перезагрузка) и, возможно, уровне запуска 1 (однопользовательский режим, типичный для ситуаций восстановления) ).

Например, в /etc/init.d/virtualbox создайте что-то вроде этого:

#!/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

Убедитесь, что он исполняемый (chmod +x /etc/init.d/virtualbox), а затем запустите update-rc.d virtualbox defaults чтобы создать все соответствующие символические ссылки в правильных местах для правильного запуска / остановки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .