CentOS 7环境下VirtualBox提示内核模块未加载问题求助
嘿,我来帮你搞定这个VirtualBox内核模块未加载的问题——这在CentOS 7上用RPM包安装VirtualBox后是个挺常见的坑,咱们一步步来修复:
VirtualBox要编译自己的内核模块,必须得有和当前系统内核版本完全匹配的开发包。先查一下你的内核版本:
uname -r
然后安装对应的内核开发包、头文件和编译工具:
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) gcc make perl
⚠️ 要是你最近刚更过内核,先重启系统让新内核生效,再装上面的包——版本不匹配的话,模块编译肯定失败。
依赖搞定后,手动触发模块的编译和加载流程:
sudo /usr/lib/virtualbox/vboxdrv.sh setup
这个脚本会自动处理模块的编译、安装,还会帮你加载到内核里。
执行完上面的命令后,查一下模块有没有被正确加载:
lsmod | grep vboxdrv
如果能看到vboxdrv相关的输出,那模块就加载成功了。要是还是没动静,大概率是SELinux在搞事情,接着往下看。
CentOS 7默认开着SELinux,有时候会阻止VirtualBox的内核模块加载。先临时关了试试:
sudo setenforce 0
这时候再查模块,如果加载成功了,说明就是SELinux的问题。推荐用更安全的方式调整策略,而不是直接关掉:
# 先装SELinux策略管理工具 sudo yum install policycoreutils-python # 给VirtualBox模块添加宽容策略 sudo semanage permissive -a vboxdrv_t
要是你实在不想折腾SELinux,也可以永久改成宽容模式(不推荐,毕竟SELinux是安全防护):编辑/etc/selinux/config,把SELINUX=enforcing改成SELINUX=permissive,然后重启系统。
最后,把VirtualBox的驱动服务设为开机自启,避免下次开机又出问题:
sudo systemctl start vboxdrv sudo systemctl enable vboxdrv
要是走完这些步骤还是不行,你可以检查一下VirtualBox版本和内核版本的兼容性——不过你用的是el7的5.2.8包,和CentOS7的内核应该是兼容的。另外,确保安装过程中没有报错,要是有编译错误,把错误信息贴出来我再帮你排查。
内容的提问来源于stack exchange,提问作者Davide Martorana




