内核升级后VirtualBox无法启动


15

昨天我收到了内核升级,重新启动后,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 '

不幸的是,三天前我在这里找到了一个论坛帖子,上面有此错误消息,很遗憾,没有解决方法。因此,我尝试从Ubuntu存储库中删除VirtualBox软件包,并使用此过程安装最新的5.2 。但是,即使重新启动计算机后,错误仍然存​​在。

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



2
目前的解决方法是在grub中加载先前的内核(4.4.0-112)。
ricab '18

对于那些想知道如何通过@ricab执行建议:保持简单shift引导的同时,选择“Ubuntu的高级选项”,并从菜单中选择一个较旧的内核版本,如解释在这里。我可以确认我以前的内核版本(4.4.0-112)没有问题中描述的问题,因此在发布解决方案之前,这是一个可行的解决方法。
matpen

在16.04中,这是Esc关键。
D.Bugger '18

我的16.04 shift上的@ D.Bugger 确实起作用。这不是我的情况,但是我读过一些人说它只能在“右移”或“左移”下工作。
matpen '18

Answers:


9

我面临着同样的问题。内核升级后,我的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,但是默认的virtualbox 5.0版本也可以正常工作。

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)

出色的工作帮助我
六个月

我想给你世界上的所有要点!:-)但是很遗憾,我只能投票给您一次。
shawty

4

@ricab的注释中列出的相关问题已归结为新内核的问题,该内核需要特定版本的gcc才能成功编译内核模块。

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

一旦找到根本原因,我就可以通过取消安装并重新安装新内核来修复系统。这修复了我的图形驱动程序,但是sudo /sbin/vboxconfig在启动到新内核后,我不得不发布修复virtualbox的命令。

我的系统是14.04,所以我不能建议您使用适合16.04系统的gcc版本,但这在https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937中进行了讨论


谢谢你的链接。不幸的是,对于Xenail而言,它似乎不起作用(而且我并不孤单)。我最近没有收到gcc升级,但是我已经升级了,gcc 5.4.1甚至尝试过gcc 7.2.0
matpen '18


@jfs对,但是我需要ppa gcc,所以我现在无法测试。
matpen '18

-1

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

错误报告在我的链接中。

Virtualbox突然停止工作

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


1
如果您的答案本质上是对其他问题的推荐,则在赢得15声誉后,最好将此问题标记为与其他问题重复。如果您享有声誉,别忘了为您发现有用的答案投票!
David Foerster,

明白了 会做。
hatterman's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.