Seele Vol's Blog

VirtualBox 开机自启动虚拟机

在无法完全脱离Windows生态系统的情况下,我们可能需要在Linux环境下运行虚拟机来解决问题。

然而,每次手动启动虚拟机可能会有些麻烦,因此我们可以设置自动启动功能。

创建配置文件

touch /etc/default/virtualbox
nano /etc/default/virtualbox

在打开的编辑器中添加以下内容:

VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vbox.cfg

接下来,我们需要编辑虚拟机配置文件:

nano /etc/vbox/vbox.cfg

确保文件中包含以下内容:

INSTALL_DIR=/usr/lib/virtualbox

然后,在文件末尾添加以下内容:

default_policy = deny
user1[seele] = {
    allow = true
}

接着,我们需要修改文件的权限和所属组:

sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox

最后,设置自动启动的数据库路径:

VBoxManage setproperty autostartdbpath /etc/vbox

创建系统服务

现在,我们将创建一个 systemd 服务以实现虚拟机的自动启动:

sudo nano /etc/systemd/system/autostart_vm@.service

在编辑器中添加以下内容:

[Unit]
Description=Guest VM %I
After=network.target vboxdrv.service
Before=runlevel2.target shutdown.target

[Service]
User=seele
Group=vboxusers
Type=forking
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm %i --type headless
ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton

[Install]
WantedBy=multi-user.target

启用自动启动

查看可用的虚拟机列表,记住要启动的虚拟机名字:

VBoxManage list vms

然后,启用自动启动服务,将“Windows”替换为你要自动启动的虚拟机名称:

sudo systemctl enable autostart_vm@Windows

现在,重新启动系统,查看虚拟机是否会自动启动。