启动时如何自动启动虚拟机?

May*_*hux 60 boot virtualbox scripts autostart

我的 Ubuntu12.04 中有很多 Virtual box 机器,每次关机或重新启动时,我都必须一一启动它们。

我想帮助编写启动时自动启动 VBox 机器的脚本。

kdm*_*ray 60

您可以使用 VirtualBox 自动启动服务。“极客管理员的生活”博客上发布了一个很好的教程,描述了如何执行此操作

以下步骤改编自链接的博客文章:

  1. 首先,您需要创建文件/etc/default/virtualbox并添加一些变量。

    VBOXAUTOSTART_DB包含自动启动数据库目录的绝对路径和
    VBOXAUTOSTART_CONFIG包含自动启动配置设置的位置。该文件应类似于以下内容:

    # virtualbox defaults file
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在我们需要创建/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
    }
    
    Run Code Online (Sandbox Code Playgroud)

    注意:如果上面的文件名vbox.cfg不起作用,请尝试将其命名为autostart.cfg.

    如果您是唯一的用户,则只需将该行添加default_policy = allowvbox.cfg文件中即可。

  3. 将目录权限设置为 vboxuser 组,并确保用户可以写入目录以及粘滞位。

    sudo chgrp vboxusers /etc/vbox
    sudo chmod 1775 /etc/vbox
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将每个用户添加到vboxusers组中。

    sudo usermod -a -G vboxusers USERNAME
    
    Run Code Online (Sandbox Code Playgroud)

    (替换USERNAME为用户名)

注意如果您已更改当前用户的组权限,请注销并重新登录以刷新权限。(信用@kR105)

  1. 每个想要为单个机器启用自动启动的用户都必须使用以下命令设置自动启动数据库目录的路径

    VBoxManage setproperty autostartdbpath /etc/vbox
    
    Run Code Online (Sandbox Code Playgroud)

    并为单个 VM 启用自动启动

    VBoxManage modifyvm <uuid|vmname> --autostart-enabled on
    
    Run Code Online (Sandbox Code Playgroud)

    这将myuserid.start/etc/vbox目录中创建一个文件

  2. 现在重新启动 vboxautostart-service 以读取更改。

    sudo service vboxautostart-service restart
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新启动您的系统,您的虚拟机应该会启动


小智 16

我在 vanilla LTS 上尝试此操作时遇到了类似的不愉快事件。

~$ cat /etc/os-release 
NAME="Ubuntu" 
VERSION="14.04.1 LTS, Trusty Tahr" 
Run Code Online (Sandbox Code Playgroud)

在此版本中,未安装密钥文件/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
Run Code Online (Sandbox Code Playgroud)

2) 必须按照 OP 的指示创建/etc/vbox/autostart.cfg

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
Run Code Online (Sandbox Code Playgroud)

6c) 提醒 rc.d 控制器,但我使用 24 作为开始时间。只放了 20 个,它没有启动。也许它甚至在 virtualbox 工作之前就运行了。

sudo update-rc.d vboxautostart-service defaults 24 24
Run Code Online (Sandbox Code Playgroud)

然后重新启动正确启动了虚拟机。

  • 在版本 5.2 中,您必须编辑 vboxautostart-service 并将“#Required Start”/“#Required Stop”行中的“vboxdrv”替换为“virtualbox”。他们似乎重命名了该服务,因此操作系统无法正确检测启动/停止优先级。我认为如果您替换了这些行,则不需要步骤 6c。 (2认同)

Jo-*_*tad 9

您可以使用 vboxmanage startvm "my virtual machine" --type=headless|gui|sdl(其中之一)。如果它们是您通过使用 gui 以外的其他方式连接到的服务器,请使用“无头”。

要在启动期间在正确的时间实际运行这些命令,您需要阅读 Upstart。


Bil*_*ams 7

经过许多不愉快的时间试图上面的kdmurray获取程序工作,但没有成功,我最终找到了一种简单有效的方法。

首先,我的 Linux 主机(Mint 17)在启动时设置为自动登录到我的主帐户。

其次,我使用 VirtualBox GUI (v4.3.12) 中的工具为桌面上的每个虚拟机创建一个快捷方式。{右击左栏中的虚拟机并选择“在桌面上创建快捷方式”}

下一个:我已经发现打开菜单->控制中心->启动应用程序->添加和添加桌面快捷方式给出了不起作用的文件,我从本页的其他答案中发现启动的位置是/home /USERNAME/.config/autostart 所以我右键单击每个桌面虚拟机快捷方式,然后将它们粘贴到该文件夹​​中,覆盖之前的垃圾文件。现在他们开发了“漂亮”的 VirtualBox 图标。

果然在重新启动主机后,3 个虚拟机自动启动。

:-)

比尔威廉姆斯

PS:唉,我仍然缺少一些东西,因为虚拟机通常不会在启动时启动,而是会生成一个错误对话框,表明它们已被锁定,即使我已经告诉它们在重新启动主机之前关闭。

  • 仅供参考,没有“答案5”。您在每个答案左侧看到的数字是总投票数。话虽如此,您的方法是一种很好的替代 GUI 方法。感谢您的贡献。 (2认同)

小智 5

除了上面vboxautostart-service的好描述,你还可以做

VBoxManage modifyvm server --autostop-type savestate
Run Code Online (Sandbox Code Playgroud)

在关机时自动停止来宾。对于 Ubuntu 14.04,我必须将sleep 30添加到 vboxautostart-service stop 部分,以便它等到来宾完全保存。