我正在使用vboxautostart-service
在系统启动时启动我的所有虚拟机(Debian 7),它们已使用此命令进行配置:
VBoxManage modifyvm '<vm-name>' --autostart-enabled on --autostop-type savestate
。
我也可以通过执行手动停止它们service vboxautostart-service stop
,这需要大约 10 秒钟来保存所有虚拟机的状态。
但是,如果我重新启动主机(ctrl+alt+del 或执行reboot
),它不会等待虚拟机保存其状态,下次启动时,它们都具有状态Aborted
。我尝试vboxautostart-service
通过添加来修改sleep 15
,但没有效果。这些进程似乎被终止了,我想是因为它们退出得不够快。
有人知道如何解决这个问题吗?
答案1
长话短说...您需要编写自己的 init.d 脚本以在运行级别 0(停止)和/或 6(重新启动)以及运行级别 1(单用户模式,通常用于恢复情况)上运行。
例如,在 /etc/init.d/virtualbox 中创建如下内容:
/bin/sh #!/bin/sh 复制代码 ### 开始初始化信息 # 提供:virtualbox_start_and_stop # 必需启动:$local_fs $network # 必需停止:$local_fs # 默认开始: 2 3 4 5 # 默认停止: 0 1 6 # 简短的介绍: # 描述:在启动时启动 virtualbox,并在关机/重启时安全关闭。 ### 结束初始化信息 案例“$1” 开始) echo“启动 Virtualbox” # 尽一切努力启动或恢复您的虚拟盒实例。 # 也许在某个地方寻找需要重新启动或恢复的虚拟机的 txt 文件...然后启动它们。 ;; 停止) echo“停止 Virtualbox” # 采取一些措施来关闭或者保存你的虚拟盒实例。 # 也许还可以将需要恢复的实例保存到某个 txt 文件中,以供上述启动方法使用。 ;; *) echo "用法:/etc/init.d/virtualbox {start|stop}" 出口 1 ;; 埃萨克 出口 0
确保它是可执行的(chmod +x /etc/init.d/virtualbox
),然后运行update-rc.d virtualbox defaults
以在正确的位置创建所有适当的符号链接,以正确启动/停止。