mat*_*pen 15 upgrade virtualbox kernel
昨天我收到了内核升级,重启后,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
Run Code Online (Sandbox Code Playgroud)
我很久以前安装了 VirtualBox
sudo apt install linux-headers-$(uname -r)
sudo apt install virtualbox-dkms virtualbox virtualbox-qt
Run Code Online (Sandbox Code Playgroud)
每天使用,内核更新从来没有问题。我现在收到的错误是
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 '
Run Code Online (Sandbox Code Playgroud)
我在三天前在这里找到了一个带有此错误消息的论坛帖子,不幸的是没有解决。因此,我尝试从 Ubuntu 存储库中删除 VirtualBox 包,并使用此过程安装最新的 5.2 。但是,即使在重新启动机器后,错误仍然存在。
在这种情况下我能做什么?
小智 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
Run Code Online (Sandbox Code Playgroud)
经过这些步骤 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
Run Code Online (Sandbox Code Playgroud)
再次安装它们
sudo apt-get install linux-generic linux-signed-generic
Run Code Online (Sandbox Code Playgroud)
然后重新安装virtualbox,这次我安装了最新的virtualbox-5.2,但是默认的5.0版本的virtualbox应该也能正常工作。
sudo apt-get purge virtualbox-dkms virtualbox virtualbox-qt
sudo apt-get install virtualbox-5.2
Run Code Online (Sandbox Code Playgroud)
而且,我们在最新模块中支持 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)
Run Code Online (Sandbox Code Playgroud)
@ricab 的评论中列出的相关问题已追溯到新内核的问题,需要特定版本级别的 gcc 才能成功编译内核模块。
在我的系统上,gcc 更新是在内核更新后推出的,导致重新编译失败。
一旦发现根本原因,我就可以通过卸载并重新安装新内核来修复系统。这修复了我的图形驱动程序,但在启动到新内核后我必须发出sudo /sbin/vboxconfig
修复 virtualbox 的问题。
我的系统是 14.04,所以我无法建议您选择适合 16.04 系统的 gcc 版本,但这在https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937中进行了讨论
归档时间: |
|
查看次数: |
10317 次 |
最近记录: |