VirtualBox - RTR3InitEx失败,错误码为rc=-1912 (rc=-1912)。

我在Ubuntu 16.04 LTS上安装了VirtualBox Version 5.1.18 r114002 (Qt5.5.1)。我想要虚拟化Kali和Windows 10。
我遇到了以下错误:
RTR3InitEx失败,错误码为-1912(rc=-1912)。 VirtualBox内核模块与此版本的VirtualBox不匹配。 VirtualBox的安装似乎没有成功。 执行'/sbin/vboxconfig'可能会解决这个问题。 请确保不要混合使用OSE版本和PUEL版本的VirtualBox。
导致这个问题的原因是什么? 如何解决这个问题?
当我在终端中运行dpkg --list virtualbox-*时,我得到以下结果:
 Desired=Unknown/Install/Remove/Purge/Hold  
 | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend     
 |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)  
 ||/ Name       Version      Architecture Description
 +++-==============-============-============-================================= 
 rc  virtualbox-5.0 5.0.32-11293 i386         Oracle VM VirtualBox 
 rc  virtualbox-5.1 5.1.18-11400 i386         Oracle VM VirtualBox  
 un virtualbox-gue <none>       <none>       (no description available)
 un virtualbox-gue <none>       <none>       (no description available)
 un virtualbox-ose <none>       <none>       (no description available)

1你读过错误信息吗?它说执行/sbin/vboxconfig可能会解决问题。仓库中的最新版本是5.0.32,我建议从官方仓库安装VirtualBox。 - Ravexina
错误提示表明您的虚拟机安装在与当前版本不同的VirtualBox中。原因可能是混合使用了OSE(Ubuntu软件源)和PUEL版本(从Oracle安装并包含扩展包),或者由于不同的架构(32位与64位) - 在不知道错误发生前您所做的操作时很难说清楚。 - Takkat
@Ravexina 我已经移除了 5.1.18 并安装了 5.0.32,但是仍然出现之前的错误。 - Ali Hesari
@Ravexina 我运行了 dpkg --list virtualbox-* 并更新了我的问题。 - Ali Hesari
@Takkat 我运行了 dpkg --list virtualbox-* 并更新了我的问题。 - Ali Hesari
2似乎你仍然安装有5.1版本,执行以下命令:sudo apt-get autoremove --purge virtualbox-5.1,然后移除非官方的软件源,并安装VirtualBox。 - Ravexina
@Ravexina 我又遇到了这个错误。dpkg --list virtualbox-* 的结果是: +++-==============-============-============-================================= ii virtualbox-5.0 5.0.32-11293 i386 Oracle VM VirtualBox un virtualbox-gue <none> <none> (没有可用的描述) un virtualbox-gue <none> <none> (没有可用的描述) un virtualbox-ose <none> <none> (没有可用的描述) - Ali Hesari
uname -m的输出是什么? - Ravexina
@Ravexina x86_64 - Ali Hesari
@AliHesari:执行apt-cache madison virtualbox | grep -iv source的结果。 - Ravexina
@Ravexina 没有输出。 - Ali Hesari
@AliHesari:不使用grep来执行它:apt-cache madison virtualbox,然后在VirtualBox的“帮助”菜单中选择“关于”,查看您正在运行的版本。 - Ravexina
@Ravexina 没有输出!!VirtualBox 版本 5.1.18 r114002(Qt5.5.1) - Ali Hesari
@AliHesari,你还在运行错误的版本。运行命令:whereis virtualbox,看看有哪些可用的版本,试试正确的版本吧 ;) - Ravexina
我刚刚遇到了这个完全相同的问题(相同的vbox版本,相同的Ubuntu版本)。我按照@Ravexina的建议(清除,确保完全删除5.1.18,然后从Ubuntu存储库安装5.0.32)。我的现在正常工作。 - John
@AliHesari: 你试过用whereis virtualbox来定位正确的版本了吗? - Ravexina
@Ravexina 是的,输出结果是:virtualbox: /usr/bin/virtualbox /usr/lib/virtualbox /usr/share/virtualbox - Ali Hesari
10个回答

如果您按照官方手册安装了VirtualBox,并且没有忘记从默认的Ubuntu软件源中删除已安装的版本。
请检查是否已安装virtualbox-dkms
dpkg -l | grep virtualbox-dkms

如果是的话,那就删除它并安装dkms
sudo apt-get purge virtualbox-dkms && \
sudo apt-get install dkms

重建VirtualBox内核模块:
sudo /sbin/vboxconfig 

请先阅读!

请注意,本答案旨在特别地解决原帖作者的问题,当常见解决方案如运行sudo /sbin/vboxconfig或移除virtualbox-dkms并安装dkms无效时。

请先尝试这些简单的解决方法,它们可能会立即帮助您。


看起来你安装的VirtualBox版本是32位架构,而你正在运行64位操作系统,这可能是问题的原因。

我的解决方法是从PPA中移除已安装的版本,并从官方仓库安装VirtualBox。

要移除VirtualBox,请运行以下命令:

sudo apt autoremove --purge virtualbox*

在此之后,请确保您的系统上没有安装其他版本,方法如下:
dpkg -l 'virtualbox*' | grep ^i

你不应该得到任何输出,你也可以尝试运行VirtualBox来确保它没有安装。
然后从你的sources.list和sources.list.d目录中删除所有相关的PPA。例如:
mkdir ~/apt-tmp
sudo mv /etc/apt/sources.list.d/* ~/apt-tmp

确保/etc/apt/sources.list中只有官方软件源。

然后更新您的软件源:

sudo apt update

现在我们可以搜索以查看可安装的版本:
apt-cache madison virtualbox | grep -iv sources

产生这样的输出:
virtualbox | 5.0.32-dfsg-0ubuntu1.16.04.2 | http://mirrors.kernel.org/ubuntu xenial-updates/multiverse amd64 Packages
virtualbox | 5.0.18-dfsg-2build1 | http://mirrors.kernel.org/ubuntu xenial/multiverse amd64 Packages

然后我会安装在 xenial-updates 中提到的最新版本。
sudo apt install virtualbox=5.0.32-dfsg-0ubuntu1.16.04.2

此外,sudo apt install virtualbox也可以,但我会选择上述命令以确保安装我想要的版本。
最后,检查正确的版本是否已安装。 从命令行执行:
dpkg -l virtualbox* | grep ^i

ii  virtualbox                     5.0.32-dfsg-0ubuntu1.16.04.2 amd64        x86 virtualization solution - base binaries
ii  virtualbox-dkms                5.0.32-dfsg-0ubuntu1.16.04.2 all          x86 virtualization solution - kernel module sources for dkms
ii  virtualbox-qt                  5.0.32-dfsg-0ubuntu1.16.04.2 amd64        x86 virtualization solution - Qt based user interface

从GUI:确保正在运行正确的版本。

帮助菜单 -> 关于虚拟盒子

注意绿色高亮

vbox


谢谢您的回复。我运行了apt-cache madison virtualbox | grep -iv sources,但是没有得到输出!这有问题吗? - Ali Hesari
你应该得到一个输出,就像我的例子一样,将这个命令的输出添加到你的问题中cat /etc/apt/sources.list - Ravexina
5sudo mv /etc/apt/sources.list.d/* ~/apt-tmp 通过这样做,sudo apt-get install 不会在之后安装任何其他软件。所以不要忘记将它移动回去。 - Asme Just
遇到了同样的问题,使用一些第三方apt retro,非常感谢关于如何移除它的帮助!话虽如此,已经有可能以直接方式安装5.1,请参考我在这里的回答 - Frank N
我按照你的指示安装了VirtualBox,但是我无法安装客户附加组件。 - Sugumar Venkatesan
@vSugumar 创建一个新的问题,并解释为什么你无法安装“增强功能”(添加任何错误等),这样我们就可以帮助你 ;) - Ravexina
谢谢。如何使用 Pacman 进行操作?(适用于 Manjaro Linux) - SL5net
另一个典型的解决方案是重新启动您的计算机(对我来说有效)。 - mfnx

所以,在我的情况下,内核模块没有被正确删除。
以下是详细信息:
root@Dell5280 [~]# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS

root@Dell5280 [~]# uname -r
4.13.0-31-generic

问题:
root@Dell5280 [~]# modinfo vboxdrv
filename: /lib/modules/4.13.0-31-generic/updates/dkms/vboxdrv.ko
version: 5.0.40_Ubuntu r115130 (0x00240000)
license: GPL
description: Oracle VM VirtualBox Support Driver
author: Oracle Corporation
srcversion: 6D8B4900A693FC50489A130
depends:
name: vboxdrv
vermagic: 4.13.0-31-generic SMP mod_unload

修复:
root@Dell5280 [~]# rm /lib/modules/4.13.0-31-generic/updates/dkms/vboxdrv.ko

root@Dell5280 [~]# modinfo vboxdrv
filename: /lib/modules/4.13.0-31-generic/updates/dkms/vboxdrv.ko
modinfo: ERROR: could not get modinfo from 'vboxdrv': No such file or directory
[1] root@Dell5280 [~]# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.

root@Dell5280 [~]# modinfo vboxdrv
filename: /lib/modules/4.13.0-31-generic/misc/vboxdrv.ko
version: 5.2.7 r120349 (0x00290000)
license: GPL
description: Oracle VM VirtualBox Support Driver
author: Oracle Corporation
srcversion: 4880B21EFF1B605D6402982
depends:
name: vboxdrv
vermagic: 4.13.0-31-generic SMP mod_unload
parm: force_async_tsc:force the asynchronous TSC mode (int)

在这之后,一切都正常工作了(至少在我的情况下)。
希望能有所帮助。 隐藏 查看完整的活动日志
我在https://bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1736116上发布了回复。

看起来你的系统上安装了两个独立的VirtualBox版本!
我建议你完全卸载所有版本的VirtualBox:
sudo apt-get autoremove 'virtualbox*'

然后直接从Oracle virtualbox重新安装。转到VB下载页面,向下滚动到“基于Debian的Linux发行版”,按照说明进行操作或下载所有发行版的VB二进制包,然后像这样运行安装程序:
cd /path/to/downloaded/file
chmod +x VirtualBox-x.x.xx-xxxxxx-Linux_xxxxx.run
./VirtualBox-x.x.xx-xxxxxx-Linux_xxxxx.run

如果重新安装Virtualbox没有起作用,你应该尝试安装或重新安装Virtualbox的dkms
验证是否有错误:
dpkg -P virtualbox-dkms

如果你遇到错误,可能应该尝试做以下操作:
sudo apt-get install virtualbox-dkms

1这个操作在我的电脑上留下了文件,但是它却移除了所有的 autoremove --purge virtualbox* - mango
哇,对我来说解决问题的关键是在最底部... sudo apt autoremove --purge virtualbox* - wordsforthewise
我做了同样的事情,即仅重新安装了“virtualbox-dkms”软件包, 但之后必须按顺序执行最后一个命令 >>lsmod | grep vboxdrv 没有返回结果, 所以我不得不执行 >>modprobe vboxdrv ,然后执行 >>lsmod | grep vboxdrv 返回 vboxdrv 479232 0 。 然后VirtualBox在之后工作时没有出现错误。 - polendina

一个简单的 apt upgrade virtualbox 对我来说有效。

这有助于确定 virtualbox-dkms 没有与 virtualbox 一起升级,导致版本不匹配。 - Saftever

更新到6.0版本后,也出现了这个消息。如果你还没有这样做,请重新启动系统,以便将所有新模块加载到内核中。有时候问题就是这么简单。

检查您是否已加载vbox模块:
lsmod | grep vbox

在我的机器上,我有 vboxpcivboxnetadpvboxnetfltvboxdrv
检查它们是否是正确的版本:
modinfo vboxdrv

很有可能这个模块的版本是5.0.32 rxxxxxx,但你正在运行VirtualBox 5.1。
如果不是这种情况,这个答案可能无法解决你的问题。
否则,可能是因为没有删除旧版本VirtualBox留下的模块,新模块没有覆盖。
只需删除所有旧模块并重新启动,问题应该就会解决。
# This command list all files in the same directory of the vboxdrv module
# Double check they are all vbox* modules and are outdated
# Then change "ls" to "rm" to remove all
ls $(dirname $(modinfo vboxdrv | sed -n 's/filename: *(\.*\)/\1/p'))/*

如果你想使用最新版本的VirtualBox,你需要删除dkms文件夹中的模块。
VB 5.1及更早版本将模块放在misc文件夹中,而VB 5.0则将它们存储在dkms文件夹中。
  1. 使用apt清除所有的VirtualBox。
  2. 检查modinfo vboxdrv是否输出版本5.0

    $ modinfo vboxdrv
    filename: /lib/modules/4.13.0-31-generic/updates/dkms/vboxdrv.ko
    version: 5.0.40_Ubuntu r115130 (0x00240000)
    license: GPL
    description: Oracle VM VirtualBox Support Driver
    author: Oracle Corporation
    srcversion: 6D8B4900A693FC50489A130
    depends:
    name: vboxdrv
    vermagic: 4.13.0-31-generic SMP mod_unload
     parm:           force_async_tsc:force the asynchronous TSC mode (int)
    
  3. 如果输出5.0,删除dkms文件夹中的模块:

    $ sudo -i
    # sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv 
    # cd /lib/modules/(kernelversion)-generic/updates/dkms
    # rm vbox*
    
  4. 运行sudo /sbin/rcvboxdrv setup(然后检查modinfo vboxdrv是否给出正确的版本)

    $ modinfo vboxdrv
    filename:       /lib/modules/4.10.0-42-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.10.0-42-generic SMP mod_unload 
    parm:           force_async_tsc:force the asynchronous TSC mode (int)
    

我使用以下命令卸载了VirtualBox:
sudo apt autoremove --purge virtualbox*
但是它没有生效。
我发现旧的vboxdrv模块没有被删除,所以我不得不手动从"/lib/modules/$(uname -r)/updates/dkms/"中删除vboxdrv.ko文件。