当前位置: 首页>>技术教程>>正文


错误:未找到内核标头。 (但它们已经到位)

, ,

问题描述

我试图在VirtualBox 4.04中安装Guest Additions。主机操作系统是Ubuntu桌面11.04 64位,客户机操作系统是Ubuntu服务器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

最佳解决方法

为了让VirtualBox ubuntu服务器客户端正确接受guest-additions安装,您需要安装一个最少的xorg软件包:

sudo apt-get install xserver-xorg xserver-xorg-core

通过这样做,您将拥有shared-folder支持。

正如您发现的那样,客人添加的是一个非常大的脚本 – “VBoxLinuxAdditions.run”

你可能能够取出这个文件 – 我不会推荐它,因为随着更新版本的virtualbox发布,guest-additions的版本通常也会碰撞。

另外,我会建议(如果你还没有),安装dkms。当更新更新的ubuntu内核时,guest-additions内核模块将被自动编译。如果没有dkms,当进行内核更新时,您将失去shared-folder支持。

source

次佳解决方法

该消息是误导性的。

在我的情况下,它实际上是缺少dkms,所以在安装添加运行之前

sudo apt-get install build-essential linux-headers-`uname -r` dkms

第三种解决方法

(即使这个问题有一个被接受的答案,我会添加这个答案以防别人帮助其他人……)

虽然我有相同的症状,但我试着对这个问题提出任何建议,但没有任何成效。我终于发现this thread suggesting it’s the VirtualBox version没有及时更新Linux内核版本。

因此,如果没有任何适用于您的情况,请尝试安装最新版本:http://download.virtualbox.org/virtualbox/(在撰写本文时,这是针对Debian-based系统的4.2.6)。

第四种方法

我通过安装dkms和升级我的VirtualBox版本来解决这个错误。 Turns out VirtualBox guest添加版的旧版本通常不适用于最新的内核。

第五种方法

关于你需要X来使用客人添加的答案只是嘲讽。安装X之后它工作的原因是它将libglib作为一个依赖项,但是为了让添加运行而安装整个X服务器将是非常不必要的。

所有你需要的软件包如下:

  • build-essential

  • linux-headers-`uname-r`

  • libglib2.0-0

显然,它只是你需要的build-essential和libglib的一部分,而不是调查确切需要哪些软件包,只需让它们依赖它们就可以了。

一个旁注是,这些与您在vmware机器上与vmware相同的”VMware Tools”所需的包完全相同。

第六种方法

使用以下命令安装建议的软件包之后:

sudo apt-get install build-essential linux-headers-`uname -r` dkms

我按照dwurf的建议升级了我的VirtualBox版本。这为我修好了。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/940.html,未经允许,请勿转载。