在 CentOS 的 VirtualBox 中,启动项设置通常包含两类:一是虚拟机从哪个设备引导(启动顺序),二是宿主机开机后是否自动启动该虚拟机。下面分别给出操作步骤与命令示例。
设置虚拟机启动顺序
- 图形界面
- 打开 VirtualBox,选中目标 CentOS 虚拟机,点击设置。
- 进入 系统 → 主板,在启动顺序中调整设备优先级(如将硬盘或光驱置顶)。
- 点击确定保存。
- 命令行
- 仅从硬盘启动:
VBoxManage modifyvm “<虚拟机名称>” --boot1 disk --boot2 none --boot3 none --boot4 none
- 优先从光驱启动:
VBoxManage modifyvm “<虚拟机名称>” --boot1 dvd --boot2 disk
以上方法可精确控制虚拟机的启动设备顺序。
设置宿主机开机自动启动虚拟机
- 前置准备
- 确保运行 VirtualBox 的宿主机用户已加入 vboxusers 组(用于权限与自动启动数据库访问)。
- 配置步骤
- 创建并写入自动启动配置
echo -e “VBOXAUTOSTART_DB=/etc/vbox\nVBOXAUTOSTART_CONFIG=/etc/vbox/autostartvm.cfg” | sudo tee /etc/default/virtualbox
- 编辑策略文件(示例允许用户 centos 自动启动,并延迟 10 秒)
sudo tee /etc/vbox/autostartvm.cfg <<‘EOF’
default_policy = deny
centos = {
allow = true
startup_delay = 10
}
EOF
- 设置数据库路径并赋权
sudo VBoxManage setproperty autostartdbpath /etc/vbox
sudo chgrp vboxusers /etc/vbox
sudo chmod 1775 /etc/vbox
- 为指定虚拟机启用自动启动(并设定宿主机关机时的行为)
sudo VBoxManage modifyvm “<虚拟机名称>” --autostart-enabled on --autostop-type acpishutdown
- 重启自动启动服务(不同系统服务名可能不同)
CentOS 7
sudo systemctl restart vboxautostart-service
sudo systemctl enable vboxautostart-service
如未找到该服务,可尝试
sudo systemctl restart vboxautostart
sudo systemctl enable vboxautostart
- 验证
sudo VBoxManage list vms
sudo VBoxManage showvminfo “<虚拟机名称>” | grep -i autostart
以上流程基于 vboxautostart 机制,支持按用户授权与延迟启动,并在宿主机关机时按策略(如 acpishutdown)安全停止虚拟机。
常用命令与排错要点
- 常用命令
- 查看虚拟机:VBoxManage list vms
- 查看运行中:VBoxManage list runningvms
- 无界面启动(适合服务器):VBoxManage startvm “<名称>” --type headless
- 正常关机:VBoxManage controlvm “<名称>” acpipowerbutton
- 排错要点
- 权限问题:确保执行用户属于 vboxusers,且 /etc/vbox 的组为 vboxusers、权限为 1775。
- 服务名称:不同发行版/版本的服务名可能为 vboxautostart-service 或 vboxautostart,可用 systemctl list-unit-files | grep vbox 检查。
- 策略生效:确认 /etc/vbox/autostartvm.cfg 中 default_policy 与对应用户的 allow = true 配置正确。
- 启动顺序验证:VBoxManage showvminfo “<名称>” | grep -i boot,核对 Boot order 是否符合预期。