从5.0.24更新到5.1后,启动虚拟机失败。

13

vboxmanage startvm出现以下错误信息:

VBoxManage: error: 虚拟机"VM02"在启动时意外终止,退出代码为1(0x1)
VBoxManage: error: 详细信息:code NS_ERROR_FAILURE (0x80004005),component MachineWrap,interface IMachine

/var/log/syslog显示存在版本不匹配,但我不知道出现了哪里的问题:

kernel: [45470.001207] SUP_IOCTL_COOKIE: Version mismatch. Requested: 0x260000 Min: 0x260000 Current: 0x240000

headless -h显示如下:

VBoxHeadless: Error -1912 in supR3HardenedMainInitRuntime!

VBoxHeadless: RTR3InitEx failed with rc=-1912

移除virtualbox 5.1并重新安装5.0.24后,虚拟机可以正常工作。

以下是我的升级过程。

sudo apt update
sudo apt autoremove virtualbox-5.0
sudo apt install virtualbox-5.1
sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.0-108711.vbox-extpack --replace

我升级虚拟机出了问题,有什么解决方法吗?我该怎么做才能在Ubuntu 16.04上使用VirtualBox 5.1?

6个回答

37

我在Debian上遇到了同样的问题,我不小心安装了Debian版本的virtualbox-dkms包,同时也安装了Oracle版本的virtualbox-5.1,这两个版本自然是不同的。

通过命令dpkg -l | grep virtualbox进行检查,如果你得到像下面这样的结果,那么你就遇到了同样的情况。

ii  virtualbox-5.1  5.1.8-111374~Debian~jessie amd64 Oracle VM VirtualBox
ii  virtualbox-dkms 5.1.6-dfsg-2 all           x86   virtualization solution - kernel module sources for dkms

通过以下方式修复:

  1. sudo rmmod vboxpci vboxnetadp vboxnetflt vboxdrv
  2. sudo apt-get purge virtualbox-dkms
  3. sudo /sbin/vboxconfig

我在从VirtualBox 5.1升级到5.2后遇到了类似的问题。这里提出的解决方案对我也起作用了。 - Martin Becker
这是在我的Ubuntu 16.04上发生的事情:virtualbox = 5.1.34-dfsg-0ubuntu1.16.04.2virtualbox-dkms = 5.0.40-dfsg-0ubuntu1.16.04.2。由于某种原因,dkms软件包被固定为5.0版本。手动执行apt-get install vitualbox-dkms命令解决了问题。 - oarcas
1
我做了完全相同的事情,最终像你描述的那样出现了版本混乱的问题,甚至没有想到检查版本不匹配。谢谢! - DaveStephens

9

我有一个类似的问题,后来我发现在移除旧模块时出现了问题。卸载、重启和重新安装后,我运行了以下命令:

sudo rm /usr/lib/modules/4.5.7-202.fc23.x86_64/extra/vbox*
sudo rmmod vboxpci
sudo rmmod vboxnetadp
sudo rmmod vboxnetflt
sudo rmmod vboxdrv
sudo vboxconfig

然后它就可以工作了。希望这有所帮助。

我不明白,为什么安装后要使用rmmod?卸载5.1、重启并安装5.1,然后按照你的方法操作没有起作用,现在我正在尝试回退到5.0。哦,顺便说一下,这个文件夹不存在:/usr/lib/modules/4.5.7-202.fc23.x86_64/。 - user2986683
由于卸载、重启、重新安装未能解决问题。我想可能是因为无法移除旧模块而导致的问题,所以为了以防万一,我把它们移除了。 - michael
那个文件夹是我的机器(Fedora 23)上内核模块的位置,它们在你的机器上可能会有所不同。 - michael
找到类似你所说的 /lib/modules/4.4.0-28-generic/kernel/ubuntu/vbox 的东西,我保留了 4.4.0-31 文件夹并删除了所有早于 4.4.0-31 的文件,但仍然无法正常工作。 - user2986683
在删除我发现与vbox相关的所有内容后,我进行了尝试并制作了它。尝试编辑您的答案但被拒绝,因此发布了另一个。感谢您的帮助。 - user2986683
在我看来,这是正确的答案(模块路径可能会有所不同)。在调用vboxconfig之前,删除模块非常重要,否则vboxconfig将失败。 - Nightscape

3

尝试了以上所有答案,均未奏效。问题是Debian虚拟机没有被正确卸载。以下方法可行:

  1. 关闭VirtualBox
  2. sudo apt-get remove virtualbox-5.1
  3. sudo apt-get install virtualbox
  4. sudo apt-get purge virtualbox virtualbox-qt virtualbox-dkms
  5. sudo apt-get install virtualbox-5.1
  6. sudo vboxconfig

你在这个过程中会丢失你的虚拟机吗? - bph
1
不,你的虚拟机保存在你的用户目录中并且不会被更改。但备份一下也无妨。 - frmdstryr

2
尝试这个命令:sudo /sbin/vboxconfig。这对我有效。

1

我是如何在Ubuntu 14.04服务器x64上解决问题的:

我尝试了以上所有方法,但都没有起作用。

  1. 先停止所有vbox服务(vboxautostart、vboxbaloon vboxdrv和vboxweb)
  2. 等待10-15秒,检查是否有任何vbox
  3. sudo apt-get remove virtualbox-5.*
  4. 首先尝试使用命令:sudo update-grub
  5. 重新启动机器,然后尝试安装virtualbox-5.*
  6. 如果不行,则停止所有vbox服务,删除virtualbox-5.*
  7. sudo apt-get autoremove(所有内核模块到最后一个版本,我有3个版本,我做了两次apt-get autoremove)
  8. sudo update-grub
  9. 重启
  10. 安装virtualbox-5.1,然后就可以工作了

1

好的,最终我做到了,试图编辑迈克尔的答案但被拒绝。
在这里发布:

Ubuntu解决方案:

版本不匹配是由于旧模块引起的,要清理它:

# stop all vbox services
sudo service vboxblahblah stop
# check all vbox is not running
ps -e | grep -i vbox
# remove 5.0 or maybe 5.1
sudo apt remove virtualbox-5.0
cd /
# find all vbox files to delete
sudo find -iname "vbox" 2>/dev/null

删除所有vbox二进制文件和源文件,然后重新启动以安装virtualbox-5.1。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接