CentOS 中 VirtualBox 启动问题排查与修复
一、常见症状与快速判断
- 启动主机上的 VirtualBox 报错:“Kernel driver not installed (rc=-1908)”,或提示需以 root 执行 /sbin/vboxconfig。这是内核模块 vboxdrv 未就绪或未加载的典型表现。
- 执行重建模块命令时报错:“Recompiling VirtualBox kernel modules [失败]”,并在日志中出现 “unable to find the sources of your current Linux kernel. Specify KERN_DIR=…”。这是缺少匹配当前运行内核的 kernel-devel/headers 或未设置内核源码路径所致。
- 执行 modprobe vboxdrv 失败,或提示 “load modules failed”。多与 DKMS 未安装、内核版本不匹配、或模块签名策略有关。
二、标准修复流程(适用于 CentOS 7/8)
- 安装编译依赖与头文件(确保与当前运行内核版本一致)
- CentOS 7:
- 安装开发工具与头文件:
- yum groupinstall -y “Development Tools”
- yum install -y gcc make glibc kernel-headers kernel-devel dkms
- 若刚更新过内核,先重启以使用新内核:reboot
- CentOS 8:
- 启用 EPEL:dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
- 安装依赖:dnf install -y make gcc perl glibc-devel libelf-devel kernel-devel
- 重建内核模块(二选一或都尝试)
- 方法 A(脚本重建):/usr/lib/virtualbox/vboxdrv.sh setup
- 方法 B(兼容旧脚本):/sbin/vboxconfig
- 若仍失败,检查日志定位原因
- 查看编译日志:cat /var/log/vbox-install.log
- 查看 vboxconfig 日志:cat /var/log/vbox-setup.log
- 加载模块并验证
- modprobe vboxdrv
- lsmod | grep vboxdrv
- vboxmanage list vms(确认 VirtualBox 可用)
三、针对特定错误的处理要点
- 报错 “unable to find the sources of your current Linux kernel. Specify KERN_DIR=…”
- 原因:未找到匹配当前运行内核的源码目录。
- 解决:先确认内核版本:uname -r;再设置内核源码路径并重建:
- export KERN_DIR=/usr/src/kernels/$(uname -r)
- /usr/lib/virtualbox/vboxdrv.sh setup
- 报错 “Kernel driver not installed (rc=-1908)” 或 “load modules failed”
- 原因:依赖缺失、内核不匹配、DKMS 未注册模块。
- 解决:
- 安装/更新与当前内核一致的 kernel-devel(如:dnf/yum install kernel-devel-$(uname -r)),然后重建模块;
- 安装 dkms 后重建,便于后续内核升级自动注册模块;
- 如仍失败,查看 /var/log/vbox-setup.log 获取具体失败点。
- 提示需以 root 执行 /sbin/vboxconfig
- 原因:内核模块未就绪或权限不足。
- 解决:以 root 执行 /sbin/vboxconfig 或 /usr/lib/virtualbox/vboxdrv.sh setup 重建模块。
四、安装与版本选择建议
- 使用 Oracle 官方 YUM/DNF 仓库安装,避免版本混乱:
- 添加仓库:
- CentOS 7:在 /etc/yum.repos.d/ 新建 virtualbox.repo,内容包含 baseurl=http://download.virtualbox.org/virtualbox/rpm/el/$releasever/$basearch 与 gpgkey;
- CentOS 8:dnf config-manager --add-repo=https://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
- 导入公钥:rpm --import https://www.virtualbox.org/download/oracle_vbox.asc
- 搜索并安装:yum/dnf search VirtualBox;yum/dnf install VirtualBox-6.1(或所需版本)
- 注意:安装与重建模块时,务必保证 kernel-devel/kernel-headers 的版本与 uname -r 输出完全一致,否则会导致编译失败或模块无法加载。