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

Bha*_*wad 31 virtualbox kernel virtualization guest-additions 12.04

Ubuntu 12.04 上的 VirtualBox 4.2.12 运行良好,直到我需要安装来宾插件。安装后:

 Failed to open a session for the VM Win 7 exit code 1;

 RTR3Init failed with rc=-1912(rc=1912)
Run Code Online (Sandbox Code Playgroud)

运行后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
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏...

谢谢...

Pad*_*dau 44

您似乎安装了两个不同版本的 VirtualBox!

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

sudo apt-get autoremove 'virtualbox*'
Run Code Online (Sandbox Code Playgroud)

然后直接从Oracle 重新安装。转到VB 下载页面,向下滚动到“基于 Debian 的 Linux 发行版”,然后按照说明进行操作。

然后再试一次。

顺便说一句,您不需要使用grepwith dpkg。这是您命令的更好替代方法:

dpkg --list 'virtualbox*'
Run Code Online (Sandbox Code Playgroud)


小智 14

侵入性较小的解决方案可能是:

sudo dpkg-reconfigure virtualbox-dkms
sudo dpkg-reconfigure virtualbox
Run Code Online (Sandbox Code Playgroud)

提供更多信息的来源


小智 10

从 ubuntu repo 版本切换到 ppa 版本后,我遇到了这个问题。问题的根本原因与错误消息中所述完全一致:内核模块版本不匹配。我已经确认了这一点

modinfo vboxdrv
Run Code Online (Sandbox Code Playgroud)

它以 5.0 版的形式返回。(来自 ppa,我有 vbox 5.1)。

我已经卸载了 virtualbox-dkms,因为安装它也会安装来自 ubuntu repo 的常规 vbox 版本。但是内核模块仍然是由 DKMS 处理的模块(/lib/modules/(kernelversion)-generic/updates/dkms/),所以我猜测这就是脚本不起作用的原因:

我试过了

sudo /sbin/vboxconfig
Run Code Online (Sandbox Code Playgroud)

它似乎像往常一样做了一切,停止内核模块,重新编译,重新加载(据说)新的内核模块。除了检查模块版本仍然出现5.0。

然后我试过了

sudo /sbin/rcvboxdrv setup
Run Code Online (Sandbox Code Playgroud)

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

然后我决定删除这些模块,因为我不喜欢它们在 dkms 文件夹中的事实。为此,您需要卸载内核模块

sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv
Run Code Online (Sandbox Code Playgroud)

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

sudo /sbin/rcvboxdrv setup
Run Code Online (Sandbox Code Playgroud)

再次,瞧,新模块是 v5.1,不再在 dkms 下,我的 VM 正在运行。

现在我想起来,也许模块在 /lib/modules/4.4.0-59-generic/misc/ 中被正确重新编译,但在加载 dkms 模块时可能具有优先权。不幸的是,我没有更多时间对此进行调查。

ps.:如果您从 repo 版本到 ppa 进行相同的转换,请确保将自己添加到(新创建的)组 vboxusers,然后注销并返回。