让virtualbox虚拟机随系统自动运行

Virtualbox不能随系统启动,网上的一些方法大多是要添加到用户的启动菜单中。这样还需要用户登录后才能启动。非常不方便。

参考了 https://superuser.com/questions/922993/how-to-run-a-headless-vm-with-vboxmanager-as-a-windows-service 文中提供两种方法:

1、通过NSSM创建windows服务调用vbox自带的VboxHeadless.exe免登陆启动虚拟机。

2、安装vboxvmservice实现开机免登陆启动虚拟机。这里我选择了第二种方法。

下载vboxvmservice默认安装后需要修改配置文件格式如下:

1
2
3
4
5
6
7
8
9
[Settings]
VBOX_USER_HOME=C:\Users\Administrator\.VirtualBox #vbox默认配置文件位置一般不用更改
RunWebService=no
PauseShutdown=5000

[Vm0] #多个虚拟机配置数字依次增加
VmName=testwin #虚拟机名称
ShutdownMethod=savestate
AutoStart=yes #随vboxvmservice启动该虚拟机

安装完如下图:

有文档说,每次更改完VBoxVmService.ini配置文件之后都需要通过-u和-i参数卸载重新安装服务后才能生效,具体没有测试。

1
2
3
4
5
6
7
8
9
10
11
C:\vms>VmServiceControl.exe
VBoxVmSerice control utility
usage: VmServiceControl [options]
-i Install VBoxVmService service #安装服务
-u Uninstall VBoxVmService service #卸载服务
-s Start VBoxVmService service #运行服务
-k Stop VBoxVmService service #停止服务
-l List all configured VMs #显示所有虚拟机配置状态
-su n Startup VM with index n #运行指定虚拟机
-sd n Shutdown VM with index n #关闭指定虚拟机
-st n Show status for VM with index n #显示指定虚拟机状态

安装完毕后查看VBoxVmService.log提示错误:

1
Error finding machine! Could not find a registered machine named 'testwin'

该错误需要在服务管理器中找到VBoxVmService将登录标签设置为当前登录用户即可解决。

vboxvmservice让虚拟机随系统自启动有一个问题就是使用virtualbox自带的管理工具的时候将显示该虚拟机状态为“已关闭”。请不要再使用自带管理工具进行管理了。