温馨提示×

CentOS下VirtualBox虚拟机无法启动怎么办

小樊
38
2025-12-17 09:04:51
栏目: 云计算

CentOS 下 VirtualBox 无法启动的排查与修复

一、先快速定位问题

  • 查看内核与驱动日志,确认是否缺少内核模块或签名失败:
    • 执行:dmesg | tail -n 50
    • 执行:journalctl -xe | grep -i vbox
  • 查看 VirtualBox 自身日志(虚拟机目录下的 Logs/ 文件夹,打开 VBox.log),优先搜索 Error / Failed / rc= 等关键词,可快速定位是驱动、网络、还是状态恢复导致的问题。

二、常见原因与对应修复

  • 内核驱动未加载或编译失败(经典报错含:Kernel driver not installed (rc=-1908) 或提示运行 /sbin/vboxconfig

    • 安装构建依赖并重建模块:
      • sudo yum install -y kernel-devel kernel-headers gcc dkms
      • 重建模块:sudo /usr/lib/virtualbox/setupsudo /sbin/vboxconfig
    • 若仍失败,检查是否安装了与当前运行内核匹配的 kernel-devel/headers(版本号需与 uname -r 一致),必要时重启后再执行重建。
  • 启用 EFI Secure Boot 导致内核模块未签名(报错会明确提示需签名 vboxdrv、vboxnetflt、vboxnetadp、vboxpci

    • 方案 A(简单):在 BIOS/UEFI 中临时关闭 Secure Boot
    • 方案 B(推荐保留 Secure Boot):使用 MOK 对模块签名
      • 安装工具:sudo yum install -y mokutil
      • 生成密钥并导入 MOK:
        • mkdir -p /root/signed-modules && cd /root/signed-modules
        • openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj “/CN=VirtualBox/”
        • sudo mokutil --import MOK.der(重启后按蓝屏提示 Enroll MOK 并输入密码)
      • 签名并加载模块:
        • 对现有模块签名:
          /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/signed-modules/MOK.priv /root/signed-modules/MOK.der $(modinfo -n vboxdrv)
        • 批量签名脚本示例:
          #!/usr/bin/env bash
          for m in vboxdrv vboxnetflt vboxnetadp vboxpci; do
            f=$(modinfo -n "$m")
            [[ -f $f ]] && /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/signed-modules/MOK.priv /root/signed-modules/MOK.der "$f"
          done
          
        • 加载模块:sudo modprobe vboxdrv
      • 内核更新后需对新模块再次签名并加载。
  • 桥接网卡不存在(报错示例:Nonexistent host networking interface

    • 现象多为从其他主机迁移或网卡更换后,虚拟机的桥接仍指向旧接口。
    • 处理步骤:
      • 在虚拟机设置 → 网络中,将 桥接 改为当前主机存在的网卡(如 enp3s0/wlp2s0),或临时改用 NAT 验证。
      • 也可直接编辑虚拟机的 .vbox 配置文件,将

        改为
  • 从挂起状态恢复失败(报错示例:VERR_SSM_LOAD_CPUID_MISMATCHE_FAIL (0x80004005)

    • 在 VirtualBox 管理器选中该虚机,点击上方黄色的 Discard(丢弃状态)按钮,再启动;必要时先备份当前状态或从快照启动。

三、验证与后续

  • 确认模块已加载:lsmod | grep vbox,应看到 vboxdrv 等模块。
  • 若仍异常,保留 VBox.logdmesg 末尾的关键报错,便于进一步定位(如 CPU 特性不匹配、第三方软件干扰等)。

0