内核升级后VirtualBox无法启动

昨天我收到了内核升级,重启后,VirtualBox停止了工作。

这是我的系统信息(在内核升级之后):

matteo@workstation:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS" matteo@workstation:~$ uname -a Linux workstation 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 

我很久以前就安装了VirtualBox

 sudo apt install linux-headers-$(uname -r) sudo apt install virtualbox-dkms virtualbox virtualbox-qt 

每天使用,从来没有内核更新的问题。 我现在收到的错误是

 matteo@workstation:~$ sudo modprobe vboxdrv modprobe: ERROR: could not insert 'vboxdrv': Exec format error matteo@workstation:~$ dmesg | tail -n 1 [ 1413.167311] vboxdrv: version magic '4.4.0-116-generic SMP mod_unload modversions ' should be '4.4.0-116-generic SMP mod_unload modversions retpoline ' 

我在三天前找到了一个带有此错误消息的论坛post,遗憾的是没有解决方案。 因此,我尝试从Ubuntu仓库中删除VirtualBox包,并使用此过程安装最新的5.2。 但是,即使重新启动机器,错误仍然存​​在。

在这种情况下我该怎么办?

我遇到了同样的问题。 内核升级后,我的gcc版本显示为5.4.1。 将此版本降级到5.4.0帮助我为vboxdrv内核模块提供了retpoline。

从这个链接的以下步骤帮我解决了我的问题:

 sudo apt-get install ppa-purge sudo ppa-purge ppa:ubuntu-toolchain-r/test #Select gcc version 5 using update-alternatives manually sudo update-alternatives --config gcc 

这些步骤之后gcc –version应该是(Ubuntu 5.4.0-6ubuntu1~16.04.9)5.4.0 20160609

然后清除所有新的linux头文件(4.4.0-116)

 sudo apt-get purge linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-image-4.4.0-116-generic linux-image-extra-4.4.0-116-generic linux-signed-image-4.4.0-116-generic 

再次安装它们

 sudo apt-get install linux-generic linux-signed-generic 

然后重新安装virtualbox,我这次安装了最新的virtualbox-5.2,但默认的5.0版本的virtualbox也应该可以正常工作。

 sudo apt-get purge virtualbox-dkms virtualbox virtualbox-qt sudo apt-get install virtualbox-5.2 

而且,我们在最新模块中提供了retpoline支持

 anirudh@AHDRMD34579:~$ modinfo vboxdrv filename: /lib/modules/4.4.0-116-generic/misc/vboxdrv.ko version: 5.2.6 r120293 (0x00290000) license: GPL description: Oracle VM VirtualBox Support Driver author: Oracle Corporation srcversion: 4880B21EFF1B605D6402982 depends: vermagic: 4.4.0-116-generic SMP mod_unload modversions retpoline parm: force_async_tsc:force the asynchronous TSC mode (int) 

@ricab评论中列出的相关问题已经追溯到新内核需要某个版本级别的gcc才能成功编译内核模块的问题。

在我的系统上,gcc更新在内核更新后被推出,导致重新编译失败。

一旦发现了根本原因,我就可以通过uninistalling并重新安装新内核来修复系统。 这修复了我的图形驱动程序,但我必须在启动到新内核后发出sudo /sbin/vboxconfig来修复virtualbox。

我的系统是14.04,所以我不能告诉你16.04系统的正确版本的gcc,但这可以在https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937上讨论

我最近也遇到过这个问题,并在这里发布了一个问题。 我做了一些挖掘,这确实是一个已知的问题。

错误报告在我的链接中。

Virtualbox突然停止工作

我认为一般的共识是引导进入4.4内核,直到问题得到解决。 (这对我来说无疑是最简单的解决方案。)