VirtualBox内核模块与VirtualBox版本不匹配。

VirtualBox 4.2.12在Ubuntu 12.04上一直运行良好,直到我需要安装客户机增强功能。在安装后:
 Failed to open a session for the VM Win 7 exit code 1;

 RTR3Init failed with rc=-1912(rc=1912)

运行dpkg --list | grep virtualbox之后:
ii  virtualbox                             4.1.12-dfsg-2ubuntu0.2                  x86 virtualization solution - base binaries
rc  virtualbox-4.2                         4.2.6-82870~Ubuntu~precise              Oracle VM VirtualBox
ii  virtualbox-dkms                        4.1.12-dfsg-2ubuntu0.2                  x86 virtualization solution - kernel module sources for dkms
ii  virtualbox-guest-additions             4.1.12-1                                transitional package for virtualbox-guest-additions-iso
ii  virtualbox-guest-additions-iso         4.1.12-1                                guest additions iso image for VirtualBox
ii  virtualbox-qt                          4.1.12-dfsg-2ubuntu0.2                  x86 virtualization solution - Qt based user interface

任何帮助都会受到赞赏...
谢谢...

请澄清一下:您使用的是哪个版本的VirtualBox,并且您是如何安装Guest Additions的?您想要运行的是哪个版本(没有4.2.12的版本)?DPKG告诉我们您安装了一个旧版本的4.1.12,但却移除了4.2.6。您是如何安装VirtualBox的?请同时提供主机的架构(amd64还是i386?)。 - Takkat
5个回答

你似乎安装了两个独立的VirtualBox版本!

我建议你完全卸载所有版本的VirtualBox:

sudo apt-get autoremove 'virtualbox*'

然后直接从Oracle重新安装。转到VB下载页面,向下滚动至“基于Debian的Linux发行版”,然后按照说明进行操作。
然后再试一次。
顺便说一句,你不需要使用grepdpkg。这是一个更好的替代命令:
dpkg --list 'virtualbox*'

一个不那么冒犯的解决方案可能是:
sudo dpkg-reconfigure virtualbox-dkms
sudo dpkg-reconfigure virtualbox

来源有更多信息。


多亏了这个建议,我才意识到我完全错过了virtualbox-dkms。我停止了VBManager,用apt-get安装了virtualbox-dkms,重新启动后一切都正常了。 - Marco Faustinelli
1这对我有用(而且我没有,也不需要安装virtualbox-dkms - aidan
1安装了来自Oracle的5.2版本后,我需要运行dpkg-reconfigure virtualbox-5.2来修复这个问题。 - NuSkooler

我在从Ubuntu仓库版本切换到PPA版本后遇到了这个问题。问题的根本原因正如错误消息所述:内核模块版本不匹配。我已确认了这一点。
modinfo vboxdrv

这个版本是5.0(从ppa来的,我有vbox 5.1)。

我已经卸载了virtualbox-dkms,因为安装它会同时安装ubuntu仓库中的常规vbox版本。但是内核模块仍然存在于由DKMS处理的模块之中(/lib/modules/(kernelversion)-generic/updates/dkms/),所以我猜测这就是脚本无法工作的原因:

我已经尝试过

sudo /sbin/vboxconfig

看起来一切都像往常一样,停止内核模块,重新编译,重新加载(应该是)新的内核模块。但是检查模块版本仍然显示为5.0。
然后我尝试了...
sudo /sbin/rcvboxdrv setup

结果相同:没有版本更改。

然后我决定删除这些模块,因为我不喜欢它们在dkms文件夹中的存在。要做到这一点,您需要使用以下命令卸载内核模块:

sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv

然后从/lib/modules/(kernelversion)-generic/updates/dkms中删除模块文件。然后运行
sudo /sbin/rcvboxdrv setup

再次,新的模块是v5.1版本了,而且不再使用dkms了,我的虚拟机正在运行。
现在我想起来了,也许模块确实重新编译到了/lib/modules/4.4.0-59-generic/misc/目录下,但加载时dkms模块可能具有优先级。不幸的是,我没有时间进一步调查这个问题。
附注:如果你从仓库版本转换到ppa版本,请确保将自己添加到(新创建的)vboxusers组中,然后退出并重新登录。

1在我切换到Oracle的PPA后,这个方法解决了我的Ubuntu 16.04的问题。非常感谢! - Josh
终于了!删除旧的.so文件解决了问题。我从apt重新安装了一切看起来都正常。 - nullsteph

在我的情况下,virtualbox-dkms 版本与其他包不匹配。
$ dpkg --list | grep virtualbox
ii  unity-scope-virtualbox                        0.1+13.10.20130723-0ubuntu1 all                         VirtualBox scope for Unity
ii  virtualbox                                    5.1.34-dfsg-0ubuntu1.16.04. amd64                       x86 virtualization solution - base binaries
ii  virtualbox-dkms                               5.0.40-dfsg-0ubuntu1.16.04. all                         x86 virtualization solution - kernel module sources for dkms
ii  virtualbox-ext-pack                           5.1.34-0ubuntu1.16.04.2     all                         extra capabilities for VirtualBox, downloader.
ii  virtualbox-qt                                 5.1.34-dfsg-0ubuntu1.16.04. amd64                       x86 virtualization solution - Qt based user interface

我只是重新安装了它。
$ sudo apt purge virtualbox-dkms
$ sudo apt install virtualbox-dkms
$ dpkg --list | grep virtualbox
ii  unity-scope-virtualbox                        0.1+13.10.20130723-0ubuntu1 all                         VirtualBox scope for Unity
ii  virtualbox                                    5.1.34-dfsg-0ubuntu1.16.04. amd64                       x86 virtualization solution - base binaries
ii  virtualbox-dkms                               5.1.34-dfsg-0ubuntu1.16.04. all                         x86 virtualization solution - kernel module sources for dkms
ii  virtualbox-ext-pack                           5.1.34-0ubuntu1.16.04.2     all                         extra capabilities for VirtualBox, downloader.
ii  virtualbox-qt                                 5.1.34-dfsg-0ubuntu1.16.04. amd64                       x86 virtualization solution - Qt based user interface
ii  virtualbox-source                             5.1.34-dfsg-0ubuntu1.16.04. all                         x86 virtualization solution - kernel module source

虚拟机启动时没有出现错误。

今天在Debian 8(Jessie)上发生了这件事,是由于内核补丁引起的。我按照以下方法修复了它:
  1. su(我不使用sudo;如果你使用sudo,请在下面的命令前加上sudo)
  2. dpkg-reconfigure virtualbox-dkms
  3. dpkg-reconfigure virtualbox
  4. /etc/init.d/virtualbox restart
感谢Rikard/hg8提供的第2和第3步的提示。在我的情况下,也许并不需要这些步骤,但无论如何做起来都很好。

我在将VB从5.0版本升级到5.2版本时遇到了同样的问题。我按照你的步骤操作,成功解决了问题,但是在第三步中,如果你已经安装了virtualbox,需要将其更改为virtualbox-5.2。 - TommyDo