问题描述
我的Ubuntu12.04中有很多虚拟机器,每次关机或重启我都必须逐个启动它们。
我想帮助编写脚本,以便在启动时自动启动VBox机器。
最佳解决方案
您可以使用VirtualBox Auto-start服务。在“Life of a Geek Admin” blog上发布了一个描述如何执行此操作的好教程。
以下步骤改编自链接的博客文章:
-
首先,您需要创建文件
/etc/default/virtualbox
并添加一些变量。VBOXAUTOSTART_DB,包含自动启动数据库目录的绝对路径和VBOXAUTOSTART_CONFIG,其中包含自动启动配置设置的位置。该文件看起来应该类似于:
# virtualbox defaults file VBOXAUTOSTART_DB=/etc/vbox VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
-
现在我们需要创建
/etc/vbox/vbox.cfg
文件并添加# Default policy is to deny starting a VM, the other option is "allow". default_policy = deny # Create an entry for each user allowed to run autostart myuserid = { allow = true }
注意:如果文件名
vbox.cfg
无效,请尝试将其命名为autostart.cfg
。如果您是唯一的用户,可以将
default_policy = allow
行添加到vbox.cfg
文件中。 -
将目录权限设置为vboxuser组,并确保用户可以写入目录以及粘滞位。
sudo chgrp vboxusers /etc/vbox sudo chmod 1775 /etc/vbox
-
将每个用户添加到
vboxusers
组。sudo usermod -a -G vboxusers USERNAME
(用用户名替换
USERNAME
)
注意:如果您已更改当前用户的组权限,请注销并重新登录以刷新权限。 (credit @ kR105)
-
每个想要为单个机器启用自动启动的用户都必须设置自动启动数据库目录的路径
VBoxManage setproperty autostartdbpath /etc/vbox
并为具有的单个VM启用自动启动
VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
这将在
/etc/vbox
目录中创建一个myuserid.start
文件 -
现在重新启动vboxautostart-service以读取更改。
sudo service vboxautostart-service restart
-
重新启动系统,您的VM应该启动
次佳解决方案
我有类似的不愉快事件在香草LTS上尝试这个操作。
~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.1 LTS, Trusty Tahr"
在此版本中,未安装密钥文件/etc/init.d/vboxautostart-service。
据我所知,所有的VitualBox和要求都是由apt-get提出的,所以我不能说为什么还没有提供’vboxautostart-service’文件。但是为了克服这个问题,我对kdmurray的帖子进行了更新。
1)/etc /default /virtualbox文件存在给我。所以必须添加变量:
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
2)必须创建/etc/vbox/autostart.cfg,如OP所示。
6b)需要获取vboxautostart-service脚本并使其可执行。
cd /etc/init.d/
sudo wget http://www.virtualbox.org/browser/vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh?format=raw -O vboxautostart-service
sudo chmod +x vboxautostart-service
6c)警告rc.d控制器,但我用24作为开始时间。只需20,它没有启动。也许它甚至在virtualbox工作之前就已经运行了。
sudo update-rc.d vboxautostart-service defaults 24 24
然后重新启动正确启动VM。
第三种解决方案
经过许多不愉快的时间试图从上面的kdmurray程序进入工作,没有成功,我最终找到了一个简单的方法。
首先,我的Linux主机(Mint 17)在启动时设置为自动登录到我的主帐户。
其次,我使用VirtualBox GUI(v4.3.12)中的工具为桌面上的每个虚拟机创建快捷方式。 {right-click左栏中的VM&选择“在桌面上创建快捷方式”}
下一篇:我已经发现启动Menu-> Control Center – >启动应用程序 – >添加和添加桌面快捷方式给出了无法正常工作的文件,我在本页的其他答案中发现,初创公司的位置是/home/USERNAME/.config/autostart,所以我在每个桌面虚拟机快捷方式上都做了一个right-click然后将它们粘贴到该文件夹中,覆盖早期的废话文件。现在他们开发了’pretty’ VirtualBox图标。
当然,在重新启动主机时,3个VM自动启动。
🙂
比尔威廉姆斯
PS:唉,我仍然缺少一些东西,因为虚拟机通常不会在启动时启动,而是生成一个错误对话框,表示它们被锁定,即使我已经告诉他们在主机为re-booted之前关机。
第四种方案
您可以使用vboxmanage startvm "my virtual machine" --type=headless|gui|sdl
(其中之一)。如果它们是通过除gui之外的其他方式连接的服务器,请使用”headless”。
要在引导期间的正确时间实际运行这些命令,您需要阅读Upstart。
第五种方案
除了上面对vboxautostart-service的良好描述外,您还可以做到
VBoxManage modifyvm server --autostop-type savestate
在关机时自动停止访客。对于Ubuntu 14.04,我不得不在vboxautostart-service停止部分添加一个睡眠30,以便它等待客人完全保存。
第六种方案
我在运行VBox 5.1.34的Ubuntu 16.04下找到了一种更简单的方法。
在VBox中,right-click在列表中运行或空闲的VM上,选择“在桌面上创建快捷方式”。一旦看到桌面上的图标,打开任何工具,让你看到VBox创建的基础命令(在我的系统上,我右键单击并选择’properties’)将其复制到剪贴板。
打开程序以更新’startup applications’并创建一个在启动时启动的新应用程序,粘贴您从VirtualBox创建的桌面链接复制的命令。