编辑宿主机的/etc/default/virtualbox文件,添加以下两行以定义自动启动数据库和配置文件的路径:
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/vboxauto.conf
这一步是自动启动服务的基础配置,确保VirtualBox能识别自动启动的相关文件。
创建/etc/vbox/vboxauto.conf文件,添加以下内容(将wx替换为实际操作VirtualBox的用户):
default_policy = deny
wx = {
    allow = true
    startup_delay = 10  # 可选:设置虚拟机启动延迟(单位:秒),避免同时启动多个虚拟机导致资源竞争
}
default_policy = deny:默认拒绝所有虚拟机自动启动,仅允许明确指定的用户;wx:允许该用户操作的虚拟机自动启动;startup_delay:可选参数,用于设置虚拟机启动前的等待时间。确保/etc/vbox目录的权限正确,允许指定用户写入:
sudo usermod -aG vboxusers wx  # 将用户wx添加到vboxusers组(vboxusers组是VirtualBox的默认操作组)
sudo chgrp vboxusers /etc/vbox  # 修改/etc/vbox目录的组所有权为vboxusers
sudo chmod 1775 /etc/vbox  # 设置目录权限(1775:所有者可读写执行,组可读执行,其他用户无权限;sticky位防止组内用户删除他人文件)
这一步是确保VirtualBox能正常访问和修改自动启动配置的关键。
使用VBoxManage命令设置自动启动数据库的路径(需与/etc/default/virtualbox中的VBOXAUTOSTART_DB一致):
VBoxManage setproperty autostartdbpath /etc/vbox
这一步将自动启动的虚拟机信息存储到指定目录,便于服务管理。
使用VBoxManage命令为特定虚拟机启用自动启动(将your_vm_name替换为虚拟机名称,可通过VBoxManage list vms查看):
VBoxManage modifyvm your_vm_name --autostart-enabled on
执行后会生成/etc/vbox/目录下的vmuser.start(启动脚本)和vmuser.stop(停止脚本)文件,记录虚拟机的自动启动配置。
重启vboxautostart-service服务以应用配置,并设置为开机自启:
sudo systemctl restart vboxautostart-service
sudo systemctl enable vboxautostart-service
sudo service vboxautostart-service restart
sudo chkconfig vboxautostart-service on
这一步确保宿主机启动时,自动启动服务会加载并执行虚拟机的启动脚本。
重启宿主机,使用以下命令检查虚拟机是否自动启动:
VBoxManage list runningvms  # 查看正在运行的虚拟机列表
top  # 查看是否有VBoxHeadless进程(无头模式启动的虚拟机进程)
若虚拟机出现在运行列表中,说明自动启动配置成功。
以上步骤完成后,CentOS宿主机重启时,指定的VirtualBox虚拟机将自动启动。如需调整启动顺序或延迟,可通过VBoxManage modifyvm命令进一步配置(如--autostart-delay设置延迟时间)。