如何修复VirtualBox中的vboxdrv安装失败问题?

所以,我尝试使用VirtualBox创建一个操作系统,然后出现了这个错误:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing

'/etc/init.d/vboxdrv setup'

as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary.

所以我做了显而易见的事情,运行了Vboxdrv设置。我执行了这个命令:
sudo service vboxdrv setup

我在进行操作时遇到了一个错误。
stopping kernel drivers...done.

Uninstalling old virtualbox dkms kernel modules/etc/init.d/voboxdrv: 302: /etc/init.d/vboxdrv: /usr/share/virtualbox/src/vboxhost/do_dkms: not found
...done.
(Failed, trying without DKMS)
recompiling VirtualBox kernel modules...failed!
(look at /var/log/vbox-install.log to find out what went wrong.)

所以,我查看了/var/log/vbox-install.log,看看能否找到什么。我得到了这个错误:
/etc/init.d/vboxdrv: 334: /etc/init.d/vboxdrv: /usr/share/virtualbox/src/vboxhost/build_in_tmp: not found

需要帮助吗?谢谢。

1可能是一个重复的问题,可以参考Virtualbox Kernel driver not installed - bain
4个回答

终于搞定了。看起来DKMS没有正常工作(?)。 重新安装virtualbox-dkms之后,我的虚拟机又可以使用了。
sudo apt-get --reinstall install virtualbox-dkms

1我说DKMS没有起作用,因为重新安装virtualbox-dkms会返回多个结果,如下所示: `vboxnetflt.ko: 进行模块版本的完整性检查。
  • 原始模块
    • 在此内核中不存在原始模块
  • 安装
    • 安装到/lib/modules/3.13.0-35-generic/updates/dkms/`
...`vboxpci.ko: 进行模块版本的完整性检查。
  • 原始模块
    • 在此内核中不存在原始模块
  • 安装
    • 安装到/lib/modules/3.13.0-35-generic/updates/dkms/`
- Crusty Barnacle
这对我来说很合适。 - Ker Ruben Ramos
1@CrustyBarnacle 我正在遇到同样的问题 :o ... 看起来在安装VirtualBox时,我没有'src'文件夹,所以当我运行设置命令时,它卸载了我的旧VB内核,但未能重新编译新的内核(与你的情况相同)- 这就是为什么会出现“不存在原始模块”的错误 - 顺便说一下,我的问题是在我进行了当天最新的Ubuntu更新之后开始的.... 嗯...有关联吗? - code_fodder
@christopher,兄弟,爱你。 - Haisum Usman

我建议以下操作:
首先,确保您具备构建程序所需的标题和其他元素。打开一个终端窗口 ctrl+alt+t
sudo apt-get install build-essential libssl-dev linux-headers-`uname -r`

其次,安装dkms模块,以免在内核更新后遇到此问题。
sudo apt-get install dkms

最后,按照第一个错误信息中的建议尝试执行该命令。
sudo -i
/etc/init.d/vboxdrv setup
exit

你好,谢谢你的回复。我还是遇到了之前说过的同样的错误信息。有什么建议吗? - user287210
@user287210 不,此时我会卸载/清除虚拟机程序并重新安装它-您知道您使用的是哪个版本吗? - Charles Green
我要么使用sudo apt-get install virtualbox virtualbox-dkms dkms安装它,要么从Oracle网站安装安装程序。我听说从网站安装对人们有好处,所以我要清除我现在拥有的任何东西,然后重新从网站安装,然后告诉你会发生什么。 - user287210
xfce ubuntu 14.04,我清除了软件包并从https://www.virtualbox.org/wiki/Linux_Downloads安装了VirtualBox,选择了适用于14.04的AMD64版本。我使用deb包安装程序进行了安装。我安装的VirtualBox版本是4.3.14。我打开了VirtualBox,但是出现了与上次相同的错误,建议我使用vboxdrv设置。我进行了设置,但是得到了与上次相同的错误。 - user287210
我浏览了一堆相似的问题 - 你似乎在正确的轨道上 - 日志文件/var/log/vbox-install.log中的输出与之前不同吗?你的操作系统版本是否完全更新? - Charles Green
我能够升级/更新了一些东西,所以现在它已经更新了。但是在那之后我尝试时仍然无法工作。所以我检查了日志是否有所不同,结果确实如此。我得到了这个错误信息:"Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop." 看起来内核驱动程序没有安装,或者它位于不同的目录中。 - user287210
你能在你的问题中加上 uname -aapt-cache policy linux-headers-$(uname -r) 的输出吗? - Charles Green
uname -a: "Linux localhost 3.8.11 #1 SMP Thu Jul 4 14:29:14 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux" apt-cache policy linux-headers-$(uname -r): "无法找到软件包 linux-headers-3.8.11" and "找不到与正则表达式 'linux-headers-3.8.11' 匹配的任何软件包" - user287210
嗯,你正在使用12.04.4 LTS版本 - 看起来你仍然需要安装Linux头文件。命令sudo apt-get install linux-headers-$(uname -r)是用来做什么的? - Charles Green
第一个错误是“无法找到软件包linux-headers-3.8.11”,第二个错误是“无法通过正则表达式'linux-headers-3.8.11'找到任何软件包”。 - user287210
嗯,我以为你在运行12.04.4版本,相当更新的。3.8内核相当老了 - 除非你想要更新内核,否则你可能需要在存档中找到头文件的位置。 - Charles Green
我检查了更新管理器,内核没有任何更新,而且在存档中也找不到任何有趣的内容。 - user287210
请尝试执行以下命令:sudo apt-get update && sudo apt-get dist-upgrade - Charles Green
我有一些东西要安装,我运行了 sudo service vboxdrv setup 命令,但是没有成功。我查看了日志,发现了之前遇到的错误:Makefile:183: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop. 你有什么建议吗? - user287210
完全按照LXLE 14.04的指示操作,结果非常成功。 - BJ292
@CharlesGreen 非常感谢你,互联网上有很多解决方案,最后这个起作用了。 - rajuGT

使用“所有发行版 - 运行安装程序”(this list的最底部条目)而不是deb或rpm包!这个方法对我解决了错误(Ubuntu 14.10 + VirtualBox 4.3.26)。

这解决了我所有的问题......一旦我清除了损坏的虚拟机 :( - code_fodder

经过尝试@Crusty_Barnacle和@Charles_Green的解决方案都没有成功,我确保我的发行版(Ubuntu 14.04)完全更新后,执行了以下操作:
aptitude purge virtualbox virtualbox-dkms virtualbox-qt
aptitude install virtualbox

一切又恢复正常了。 希望这能对其他人有所帮助。