由于缺少内核模块,无法安装VirtualBox。

我正在尝试在我的Ubuntu上安装VirtualBox。

我首先尝试在终端中运行sudo apt-get install virtualbox-ose,但在配置步骤之后,出现了一个错误

找不到适合运行内核的模块 当尝试启动virtualbox时,我遇到了这个错误: 警告:字符设备/dev/vboxdrv不存在。 请安装virtualbox-ose-dkms包和相应的头文件,很可能是linux-headers-generic。

在解决此问题之前,您将无法启动虚拟机。

所以我尝试了来自http://www.virtualbox.org/的软件包,但启动VirtualBox失败,显示以下错误:

WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (2.6.38-8-generic-pae) or it failed to load. Please recompile the kernel module and install it by

  sudo /etc/init.d/vboxdrv setup

You will not be able to start VMs until this problem is fixed.

所以我运行了sudo /etc/init.d/vboxdrv setup,但也失败了:

* Stopping VirtualBox kernel modules                                                           [ OK ] 
* Uninstalling old VirtualBox DKMS kernel modules                                                            [ OK ] 
* Trying to register the VirtualBox kernel modules using DKMS                                                       
Error! Your kernel headers for kernel 2.6.38-8-generic-pae cannot be found at
/lib/modules/2.6.38-8-generic-pae/build or /lib/modules/2.6.38-8-generic-pae/source.

* Failed, trying without DKMS
* Recompiling VirtualBox kernel modules                                                                             
* Look at /var/log/vbox-install.log to find out what went wrong

以下是/var/log/vbox-install.log的内容

由于遇到困难,我还尝试使用yum安装kernel-devel,但仍然没有成功:

root@ubuntu# yum install kernel-devel
Setting up Install Process
No package kernel-devel available.
Nothing to do

现在我完全不知道如何纠正这个问题。有什么想法吗?

1嗯?你在用Ubuntu吗?谁说你需要kernel-devel - enzotib
嘘,从软件源安装Virtualbox。 - nickguletskii
我还是卡在Yum上面,无法解决。 - binW
你能把/var/log/kern.log的内容发布到http://paste.ubuntu.com,并在这里贴上链接吗? - Lekensteyn
@Lekensteyn 在执行哪些命令后,你需要 /var/log/kern.log 吗? - SoftTimur
不,旧条目也是可见的。 - Lekensteyn
1@Lekensteyn 这是 /var/log/kern.log 的链接。 - SoftTimur
我遇到了一个类似的问题。我已经安装了VirtualBox 4.1.4,但当我将我的Ubuntu内核更新为2.6.35-30-generic-pae版本后,它就无法工作了。我有点惊讶的是,在我更新内核时,头文件居然没有一同更新。我通过运行sudo apt-get install linux-headers-2.6.35-30-generic-pae,然后再运行sudo /etc/init.d/vboxdrv setup来解决了这个问题。 - Antonio2011a
3个回答

在Redhat-based发行版中,通过使用suyum软件包管理器以root身份执行所有操作是可行的,但在Ubuntu中不适用。在Ubuntu中,您可以通过在命令前加上sudo来以root身份运行命令。Ubuntu使用的软件包管理器是apt。

要安装VirtualBox,请运行以下命令:

sudo apt-get install virtualbox-ose

这将处理依赖项,如包中包含的内核头文件linux-headers-generic。如果您有一个PAE内核,您需要先安装头文件(在您的情况下是linux-headers-2.6.38-8-generic-pae),可以通过以下方式完成:
sudo apt-get install linux-headers-$(uname -r)

uname -r 提供了当前加载的内核版本,免去了手动输入内核版本的麻烦。


谢谢您的回复,实际上我一开始就尝试了这种方法,但是遇到了一些问题,您能帮忙看一下吗?http://askubuntu.com/questions/49052/the-character-device-dev-vboxdrv-does-not-exist - SoftTimur
1virtualbox-4.0不在默认软件源中。您是否安装了第三方PPA?请删除该PPA或包,并安装virtualbox-ose - Lekensteyn
@SoftTimur,你不应该发布重复的问题,如果它们与同一个问题有关,可能会被标记为重复。 - Thomas Ward
大家,谢谢你们的回复。我已经编辑了两个相关的问题...希望能找到解决办法... - SoftTimur
1@SoftTimur:在卸载VirtualBox之前不要忘记清理(sudo apt-get purge virtualbox-4.0 virtualbox-ose - Lekensteyn
确实,在安装了“linux-headers-2.6.38-8-generic-pae”之后,我成功地安装了“virtualbox-ose”,非常感谢@Lekensteyn。 - SoftTimur
这对我来说确实起了作用,尽管我还不得不运行 sudo modprobe vboxdrv 来实际启动。 - Amanda
我认为安装顺序很重要,没有头文件,内核模块构建会失败。安装完成后,模块是可用的,但不会立即加载。所以在重新启动之后(或使用modprobe命令),它应该被加载。这是我的猜测。 - Lekensteyn

我遇到了同样的问题。我安装了linux-headers-<version>-generic-pae,但讽刺的是我却没有安装linux-headers-generic-pae。如果你安装了这些,可能会有所帮助。
祝你好运!

安装 build-essentials
apt-get install build-essentials 

安装linux-kernel-headers
apt-get install linux-kernel-headers 

或者
apt-get install linux-kernel-*

安装 dkms
apt-get install dkms

抱歉,凹进错了。请使用以下命令安装所需的软件包:apt-get install build-essential linux-kernel-* dkms - SH_Rohit
没有 build-essentials 这个软件包,正确的名称是 build-essentiallinux-kernel-* 软件包不存在,应该使用 linux-headers-...-generic 命名,其中 ... 是内核版本号。 - Lekensteyn