我的目标是当我启动和停止主机(Ubuntu 10.04)时,让 Ubuntu 正常启动和停止无头虚拟机 VM。
我正在使用脚本由...提供Quadir Kareemullah 的页面。
这是脚本中的 LSB 注释头(我从“Required-Start”中删除了 vboxnet 以减少依赖性):
### BEGIN INIT INFO
# Provides: vboxsvc
# Required-Start: $local_fs $remote_fs vboxdrv
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: VirtualBox Service
# Description: VirtualBox Service to startup and shutdown Virtual Machines
### END INIT INFO
正如 Quadir 所解释的,我在 /etc/init.d/ 中找到了“vboxsvc”并执行:
$sudo update-rc.d vboxsvc
这为运行级别创建了链接。例如在运行级别 2 中:
$ls -l /etc/rc2.d/
...
lrwxrwxrwx 1 root root 17 2010-11-03 20:02 S20vboxdrv -> ../init.d/vboxdrv
lrwxrwxrwx 1 root root 25 2010-11-03 20:03 S20vboxweb-service -> ../init.d/vboxweb-service
lrwxrwxrwx 1 root root 17 2010-11-11 21:43 S21vboxsvc -> ../init.d/vboxsvc
...
如果我手动启动|停止服务:
$sudo /etc/init.d/vboxsvx start
它按预期工作。
如果我执行“service --status-all”,则不会列出该服务,但当我使用 sysv-rc-conf --list 时它会显示出来。
当我启动计算机时,它不会自动启动。另一方面,当我重新启动或关闭时,该服务会自动停止。由于某种原因,当系统启动时,链接 /etc/rc2.d/S21vboxnet 未执行或发生了其他事情。
我知道 Upstart 是现在 Ubuntu 的做事方式,但是 SysV init 仍然受支持,对吗?
编辑:我认为我快要解决这个问题了。我认为解决方案与加密我的主文件系统有关。当 init 进程执行相应的启动脚本并尝试执行“sudo -H -u myuser VBoxManage myVirtualMachine -type vrdp > /dev/null”时,它无法访问 myVirtualMachine 的数据(位于加密文件系统中),因为我尚未以 myuser 身份登录,因此我的主文件系统尚未挂载。
答案1
正如我所想,整个问题是由于我的主分区被加密而引起的。
我最终遵循了这一点问题删除加密。
我的建议是,除非你知道自己在做什么,否则不要在安装 Ubuntu 时加密你的主分区。如果你这样做,请注意,除非你已登录,否则你的主目录下的所有内容都将被锁定给其他用户(包括 root)。
答案2
让新的系统用户运行 VirtualBox 比解密你的主文件夹不是更好吗?
这样,您仍然受到保护,并且虚拟机可以顺利启动。