在 CentOS 上设置 VirtualBox 启动项
一 宿主机开机自动启动虚拟机
- 准备与授权
- 确认运行 VirtualBox 的用户已加入 vboxusers 组(例如用户名为 alice):
- usermod -aG vboxusers alice
- 建立自启动数据库目录并设权限:
- mkdir -p /etc/vbox
- chgrp vboxusers /etc/vbox
- chmod 1775 /etc/vbox
- 配置自动启动
- 写入环境变量(宿主机任一用户的 root 或 sudo 会话均可):
- echo ‘VBOXAUTOSTART_DB=/etc/vbox’ | sudo tee /etc/default/virtualbox
- echo ‘VBOXAUTOSTART_CONFIG=/etc/vbox/vboxauto.conf’ | sudo tee -a /etc/default/virtualbox
- 编辑策略文件 /etc/vbox/vboxauto.conf(示例允许 alice 自启,其他拒绝):
- cat >/etc/vbox/vboxauto.conf <<‘EOF’
default_policy = deny
alice = {
allow = true
startup_delay = 10
}
EOF
- 设置 VirtualBox 自动启动数据库路径:
- VBoxManage setproperty autostartdbpath /etc/vbox
- 为指定虚拟机启用自启
- 查看虚拟机名称:VBoxManage list vms
- 启用自启并设置宿主机停机时的关机行为(示例为 acpishutdown):
- VBoxManage modifyvm “centos7-vm” --autostart-enabled on --autostop-type acpishutdown
- 启动并持久化服务
- systemctl restart vboxautostart-service
- systemctl enable vboxautostart-service
- 验证
- 重启宿主机后检查:ls /etc/vbox 应出现以对应用户名开头的 .start / .stop 文件;VBoxManage list runningvms 应能看到目标虚机在运行。
二 虚拟机内部的启动顺序与从光盘引导
- 在虚拟机窗口中设置启动顺序
- 选中虚拟机 → 设置 → 系统 → 主板 → 启动顺序,将需要的设备(如 光驱/硬盘/网络)调整到顶部,确定保存。
- 使用命令行显式指定下次启动设备
- 例如临时从光盘引导(适合安装或救援场景):
- VBoxManage modifyvm “centos7-vm” --boot1 dvd --boot2 disk --boot3 none
- 说明:上述命令在宿主机执行,作用于指定虚机;完成后启动虚机将从设定设备引导。
三 常见问题与排查
- 权限与策略
- 确保运行 VBoxManage 的用户在 vboxusers 组,且 /etc/vbox 的组为 vboxusers、权限为 1775;否则自启动服务无法为该用户创建/读取启动标记文件。
- 服务与路径
- 若修改了配置,务必执行:systemctl restart vboxautostart-service;可用 VBoxManage list systemproperties 检查 Autostart database path 是否为 /etc/vbox。
- 虚机名称与状态
- 使用 VBoxManage list vms 确认名称大小写与空格;若虚机已设置 autostop-type,宿主机重启后会按策略自动关机/保存状态。
- 无界面运行
- 若不需要图形界面,可在脚本或手动启动时加上 --type headless,减少资源占用。