0 问题描述
安装VirtualBox,然后启动,提示如下:
1 探索过程
根据上述提示,输入如下命令重新配置VirtualBox:
sudo /sbin/vboxconfig
结果如下:
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
根据上述提示通过
dmesg查看失败原因:
[ 1256.917720] vboxdrv: Unknown symbol __fentry__ (err 0)
[ 1266.715879] vboxdrv: Unknown symbol __fentry__ (err 0)
[ 1668.647482] vboxdrv: Unknown symbol __fentry__ (err 0)
根据参考资料[4]的说明,这是GCC版本的问题,gcc-4.6以后就将__fentry__移除了。
此时我想起我的Ubuntu内核是自编译的,当时使用的GCC版本是gcc-4.4,而上面执行sudo /sbin/vboxconfig所使用的GCC版本是gcc-4.8。
2 解决方法
(1)更换GCC版本
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
sudo ln -sf /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -sf /usr/bin/g++-4.4 /usr/bin/g++
(2)重新配置VirtualBox
sudo /sbin/vboxconfig
参考资料
[1]Warning vboxdrv kernel module is not loaded
[2] [Solved]Vboxdrv kernel module is not loaded
[3]"Unknown symbol __fentry__ (err 0)" - loading compiled module on compiled kernel 3.18