错误:找不到内核头文件。(但它们已经存在)

我正在尝试在VirtualBox 4.04中安装Guest Additions。主机操作系统是Ubuntu desktop 11.04 64位,客户操作系统是Ubuntu server 11.10 64位。
$ sudo ./VBoxLinuxAdditions.run

在输出一些内容后,打印出这行文字:
The headers for the current running kernel were not found.

但是标题已经安装了,至少根据 dpkg 的说法:
$ dpkg --get-selections | grep linux-headers
linux-headers-3.0.0-12            install
linux-headers-3.0.0-12-server     install
linux-headers-server              install

运行的内核是:
$ uname -a
Linux foobar 3.0.0-12-server #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 x86_64 x86_64 X86_64 GNU/Linux

如何修复问题,使得Guest Additions安装程序能够找到内核头文件?
更新:添加完整输出。
The headers for the current running kernel were not found. If the module compilation fails then this could be the reason.

Building the main Guest Additions module ...done.
Building the shared folder support module ...fail!
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Installing the Window System drivers ...fails!
(Could not find the X.Org or XFree86 Window System).

我不关心失败#2,因为那是一个服务器,我不需要X服务器。但我需要共享文件夹支持。

一些进一步的细节:

$ tail /val/log/vboxadd-install.log
..........
cc1: some warnings being treated as errors
make[2]: *** [/tmp/vbox.0/vfsmod.o] Error 1
make[1]: *** [_module_/tmp/vbox.0] Error 2
make: *** [vboxsf] Error 2

这是Vboxguest添加的标准输出 - 还有其他任何错误表明vbox内核模块没有正确编译吗? - fossfreedom
@foss 谢谢你的建议,我已经更新了我的问题。 - Paolo
@MihaiTodor 另一个问题可能是我的重复,而不是你所说的反过来。提示:请查看发布日期。祝好。 - Paolo
是的,没错。对不起,我很抱歉。 - Mihai Todor
14个回答

这个信息是误导性的。
在我的情况下,实际上是缺少了dkms,所以在安装补充内容之前,请运行以下命令。
sudo apt-get install build-essential linux-headers-`uname -r` dkms

这个对我也解决了问题。 - Nick Retallack
30请使用linux-headers-generic包,因为它将始终指向最新的内核头文件包。 - ortang
3更新到最新的VirtualBox是解决我的问题的方法,适用于Ubuntu 13.10安装。 - Răzvan Flavius Panda
7这应该是被接受的答案,你有一个服务器,为什么还要费心安装xorg?只需安装dkms问题就解决了! - Frederic Yesid Peña Sánchez
2sudo apt-get install --assume-yes build-essential dkms linux-headers-$(uname -r)sudo ln -s /usr/src/linux-headers-$(uname -r)/include/generated/uapi/linux/version.h /usr/src/linux-headers-$(uname -r)/include/linux/version.h 一定会有所帮助。 - user417498
@FredericYesidPeñaSánchez 我知道。接受的答案实际上并没有提供解决方案。尽管我知道我需要做dog所写的,但我还是看了被接受的解决方案...结果它没用。:D - rbaleksandar
这对我来说很合适。 - Organic Marble


没错。实际上,我已经遇到了“以上全部”的问题:缺少内核头文件、过时的内核头文件、缺少dkms软件包,以及确实是过时的VBox版本。 - youri

我通过安装dkms并升级我的VirtualBox版本来修复了这个错误。原来旧版本的VirtualBox客户附加组件经常无法与最新的内核兼容。

5安装dkms,重新启动,并重新运行安装脚本对我来说起作用了。官方文档也提到了这一点:http://www.virtualbox.org/manual/ch04.html#idp11274368 - resting
新版本的VirtualBox可以从这里下载deb文件:http://download.virtualbox.org/virtualbox/。他们还提供了客户机增强功能的ISO文件。使用最新版本的这个解决了我的问题。 - bacon
1当前官方文档链接:https://www.virtualbox.org/manual/ch04.html#idp46730490388960 - Max
安装DKMS对我来说非常顺利。 - Ash Catchem

关于你需要X来使用增强功能的回答真是荒谬。安装X后它能正常工作的原因是它会作为依赖项引入libglib,但是为了让增强功能运行起来而安装整个X服务器实在是不必要的。
你所需要的所有软件包如下:
  • build-essential
  • linux-headers-`uname-r`
  • libglib2.0-0
显然,你只需要build-essential和libglib的一部分,但与其详细研究哪些软件包是必需的,不如让它们自动拉取它们所依赖的软件包更容易。
值得一提的是,这些软件包正好也适用于VMware虚拟机上的等效工具"VMware Tools"。

在使用以下命令安装建议的软件包后: ``` sudo apt-get install build-essential linux-headers-`uname -r` dkms ```
我按照dwurf的建议升级了我的VirtualBox版本。这样问题就解决了。

要让VirtualBox的Ubuntu服务器虚拟机正确接受增强功能的安装,您需要先进行最小化的xorg软件包安装。
sudo apt-get install xserver-xorg xserver-xorg-core

通过这样做,您将获得共享文件夹支持。
正如您所发现的那样,增强功能是一个非常大的脚本 - "VBoxLinuxAdditions.run"
您可能可以解开这个文件 - 我不建议这样做,因为随着新版本的虚拟机发布,增强功能的版本通常也会提升。
此外,我建议(如果您还没有安装),安装dkms。当更新的Ubuntu内核被更新时,增强功能内核模块将自动编译。如果没有dkms,当内核更新时,您将失去共享文件夹的支持。 source

37这根本没有解决问题的任何办法。 - Sliq
11我强烈建议不要安装这些软件包。它们会使您的服务器安装变得臃肿,并且无法解决问题。虽然您将不再收到关于X11的错误消息,但这几乎是唯一的好处。 - dwurf
3@Panique解决了问题,否则我不会接受这个答案。我可不是傻瓜。 - Paolo
@Guandalino - 很有可能是xserver-xorg软件包安装了你所需要的其他软件包。这就像用电锯割一片草叶一样——它能工作,只是有点过头了 :) - Martin Konecny
5狗的回答应该被接受为正确答案;安装xorg是不必要的。 - Nathan
2-1 这个答案是误导性的。 - ortang
就我个人而言,使用dkms安装解决了我的这个问题。 - engineerDave
未解决问题。 - mrgloom
xserver-xorg已经是最新版本。对于xserver-xorg-core也是类似的消息,而在执行此操作后,安装增强功能仍然失败。@dog下面的回答有效。 - Inaimathi
1为什么这是被选为答案的?为什么它被投票赞成了?我已经举报了。就像大家提到的一样:它不是正确答案。请尝试:https://askubuntu.com/a/202760/169878 - B. Shea
它确实能工作,但是有误导性... 就好像你要求一把刀来剪绳子,他给了你一把刀、一把电锯、一把剑以及许多其他无关的物品,这些都会拖慢你的系统。 - MaXi32

通常我会直接通过VirtualBox安装增强功能(挂载光盘,运行sh ./VBoxLinuxGuestAddtions.run)。然而,大多数Linux发行版都提供了一个可以通过软件包管理器安装的软件包。对我来说,以下命令解决了这个问题:
sudo apt-get install virtualbox-guest-dkms

我尝试了所有其他的安装解决方案,但是无论是插件还是安装脚本都一直出现问题。这个解决方案直接解决了根本问题。非常感谢! - sadakatsu

我认为这个错误是由于使用了一个旧版本的Virtual Box,或者至少是一个旧版本的Guest Additions ISO镜像引起的。
我通过下载一个新的VBox Guest Additions ISO并运行VBoxLinuxAdditions.run脚本来取得成功。我在这里下载了一个新的ISO:Virtual Box download site
由于某些原因(太无聊不值得一提),我无法更新我的VirtualBox版本(Windows主机),但我可以将新的ISO文件复制到本地文件系统的某个位置。
然后,在虚拟机窗口的"设备"菜单中,我选择了一个新的虚拟CD/DVD,并选择了我下载新ISO镜像的位置。
然后,在Debian虚拟机中,我进入\media\cdrom目录,并以root身份运行了新的VBoxLinuxAdditions.run脚本(我已经安装了dkms、当前的内核头文件等)。然后脚本停止了对缺少头文件的错误警告(它们并不存在),并构建了所需的内核对象。
我之所以这样做的原因是为了让X.org给我提供额外的显示分辨率,以便我可以以比保守设置的默认分辨率更高的分辨率运行虚拟机。

我已经尝试了上面的所有解决方案,我很确定我已经安装了正确的头文件,但是还是没有运气!
root@test:~# dpkg --get-selections | grep linux-headers
linux-headers-4.0.0-kali1-amd64         install
linux-headers-4.0.0-kali1-common        install
linux-headers-amd64             install

我今天也安装了最新版本的Virtual Box(版本为5.0.4),但是在尝试安装增强功能时仍然出现错误。
The headers for the current running kernel were not found.

解决方案:
最终解决我的问题的方法是从/root目录而不是其他目录(如/home/)运行VBoxLinuxAdditions.run!
我最初是从/home/目录运行VBoxLinuxAdditions.run,并一直遇到这个烦人的错误,但在从根目录使用下面的命令后,问题解决了!
cp /media/cd-rom/VBoxLinuxAdditions.run /root/
chmod 755 /root/VBoxLinuxAdditions.run
cd /root
./VBoxLinuxAdditions.run

在此之后,您只需使用reboot,然后您应该正确地完成了Guest Additional并且全屏显示也正常!耶!

我尝试了,但还是不起作用。举手 - yaochiqkl
对我来说不起作用。 - muneeb_ahmed

我在尝试编译VirtualBox Guest Additions v4.1.12时,遇到了与OP相同的错误,在各种版本的K/Ubuntu 13.04客户机中。
Building the shared folder support module ...fail!

这是由于VirtualBox客户附加组件与Linux源代码(在GUEST中)的各个部分存在错误(或未满足期望)所致。不幸的是,Oracle选择将VirtualBox主机版本与VirtualBox客户附加组件版本紧密关联,因此如果客户附加组件存在错误,则必须同时升级主机。
我在Ubuntu 12.04 LTS主机上安装了以下VirtualBox版本:
virtualbox       4.1.12-dfsg-2ubuntu0.3
virtualbox-dkms  4.1.12-dfsg-2ubuntu0.3
virtualbox-qt    4.1.12-dfsg-2ubuntu0.3

根据以下说明: http://www.ubuntuupdates.org/ppa/virtualbox?dist=precise 我升级到了4.2.10-dfsg-0ubuntu2~ubuntu12.04.1~ppa1,使用的方法如下:
sudo add-apt-repository ppa:debfx/virtualbox
sudo apt-get update
sudo apt-get install virtualbox virtualbox-dkms virtualbox-qt
cd ~/.VirtualBox
http://download.virtualbox.org/virtualbox/4.2.10/VBoxGuestAdditions_4.2.10.iso

现在K/Ubuntu 13.04的虚拟机可以构建并安装VirtualBox Guest Additions了。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install make gcc build-essential linux-headers-`uname -r` dkms
cd /media/VBOXADDITIONS_4.2.10_81404
sudo ./VBoxLinuxAdditions.run
sudo shutdown -r 0