在 Windows 启动时启动 VirtualBox 和 VM
Posted
技术标签:
【中文标题】在 Windows 启动时启动 VirtualBox 和 VM【英文标题】:Start VirtualBox and VM in windows boot 【发布时间】:2018-02-08 20:20:15 【问题描述】:我在 Windows Server 2016 中运行 VirtualBox。我想在 Windows 启动时同时启动 VirtualBox 和其中的 VM。我看过一些关于在 Windows 启动时启动 VB 的帖子,但我还没有让它工作。即使我这样做了,也不会自动启动虚拟机。我觉得一定有办法做到这一点,但数小时的谷歌搜索还没有找到方法。
【问题讨论】:
【参考方案1】:我有一个如何在 Windows 启动期间自动启动 VirtualBox VM 的示例。我运行的是 Windows 10,但在 Windows Server 2016 上应该不会有太大的不同。
我系统上的启动文件夹是:
C:\Users\chriwill\AppData\Roaming\Microsoft\Windows\开始菜单\程序\启动
在该文件夹中,我放置了一个批处理文件kubuntu.bat
,其内容如下:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm kubuntu --type headless
在我的示例中,VM 被命名为 kubuntu
。您必须为您的实例更改它。
插件:
如果您需要帮助来查找 Windows 实例上的启动文件夹,请按键 WINDOWS+R
并输入 shell:startup
。
参考:https://www.virtualbox.org/manual/ch08.html#vboxmanage-startvm
【讨论】:
当 Windows 关闭或重新启动时,VM 是否正常关闭? 我发现当我正确反弹或终止主机箱时,VM 会正确关闭(嘿,那里有两个词),是的。主要障碍是之后启动时(重新)启动。 我同意@DeeJayh,但是他提供的链接似乎是错误的。【参考方案2】:对我有用的是。
-
创建快捷方式。
打开虚拟盒子
突出显示您要启动的虚拟机
点击“机器”->“在桌面上创建快捷方式”
添加到 Windows 启动
开始 -> 运行
输入“shell:startup”
在此处复制和粘贴快捷方式。
【讨论】:
它很好,如果这可以变成无头,那就太棒了。【参考方案3】:Oracle VirtualBox 6.1.16 支持automatic startup via a windows service,无需第三方脚本或软件。这些是我遵循的步骤。在整个过程中将我的登录名替换为您的登录名。
-
在
C:\Users\Tim\.VirtualBox\autostart.properties
中创建配置文件:
# Default policy is to deny starting a VM, the other option is "allow".
default_policy = deny
# Bob is allowed to start virtual machines but starting them
# will be delayed for 10 seconds
Tim =
allow = true
startup_delay = 10
为VBOXAUTOSTART_CONFIG
添加环境变量并将其设置为C:\Users\Tim\.VirtualBox\autostart.properties
。
从管理 Powershell 创建自动启动服务:
cd "C:\Program Files\Oracle\VirtualBox"
.\VBoxAutostartSvc.exe install --user=Tim
.\VBoxManage.exe modifyvm "Peppermint x64" --autostart-enabled on
从Services
应用中找到VirtualBox Autostart Service tim@tim-pc
服务。
确保服务登录名是您上面配置的本地登录名。
确保已启用自动启动。
启动服务。
在应用程序日志下检查 Windows Event Viewer
应用程序中的错误。错误说明位于“详细信息”标签下。
【讨论】:
我的 VirtualBox 目录中似乎缺少 VBoxAutostartSvc.exe 二进制文件。有什么指点吗?【参考方案4】:您可以使用NSSM为其创建服务,例如:
打开cmd
cd /d A:\programs\nssm-2.24\win64
nssm.exe install kubuntu
填写表格:
# Application Tab
Application Path: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
Startup directory: C:\Program Files\Oracle\VirtualBox
Arguments: startvm "kubuntu" --type headless
# Details Tab
Display name: kubuntu
点击安装服务,完成。
【讨论】:
【参考方案5】:我需要一个作为服务运行的虚拟机——在用户第一次登录之前就可以从网络获得——所以fanxings' answer 几乎是一个理想的解决方案。
问题是 VBoxManage 启动虚拟机,然后简单地退出。所以服务管理器尝试再次运行它。然后再次。又一次……
我用一个小批处理文件解决了这个问题:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm zztop --type headless
pause
该批处理文件随后使用nssm
作为服务安装。这解决了使用 GUI 关闭虚拟机的问题——例如用于更改配置,并防止在系统日志中显示多条错误消息。
【讨论】:
【参考方案6】:计划任务。在操作下,程序/脚本
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
根据参数
startvm Pihole --type headless
【讨论】:
【参考方案7】:解决方案:
如果不对您的系统使用第三方包装器(阅读:另一个故障点),就不可能做到您要求的服务。但是,您可以通过任务计划程序轻松地将其实现为任务,该任务计划程序将在您的系统每次启动/启动之前用户登录时运行在。
可以在我的回答中找到相关信息: https://***.com/a/67305645/5387389
【讨论】:
【参考方案8】:添加计划任务是一个不错的选择。如何加热有很多选择。
无论用户登录如何,您都可以选择在启动时运行任务。
【讨论】:
【参考方案9】:如果您想在不登录系统的情况下运行虚拟机,您可以使用VBoxVmService 实用程序,该实用程序以无头模式将一台或多台虚拟机作为 Windows 服务运行,并在启动时自动启动它们。
【讨论】:
以上是关于在 Windows 启动时启动 VirtualBox 和 VM的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 启动时启动 VirtualBox 和 VM
如何编写一个在windows启动时自动启动的python程序?