Linux

VirtualBox 失敗建構來賓添加模組

  • August 9, 2012

在Mac OS X 10.8 (Mountain Lion) 下執行的VirtualBox / Vagrant中安裝 GuestAdditions 時遇到問題。我以前沒有使用過 VB/Vagrant,也沒有使用過 Linux,所以尋求一些指導……

錯誤!在 /lib/modules/2.6.32-38-server/build 或 /lib/modules/2.6.32-38-server/source 中找不到核心 2.6.32-38-server 的核心標頭檔。

該錯誤可以在 shell 輸出底部的上下文中找到(如下)

vagrant@lucid64:~$ sudo apt-get install dkms -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
 fakeroot make patch
Suggested packages:
 make-doc diffutils-doc
The following NEW packages will be installed:
 dkms fakeroot make patch
0 upgraded, 4 newly installed, 0 to remove and 23 not upgraded.
Need to get 458kB of archives.
After this operation, 2,359kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ lucid/main make 3.81-7ubuntu1 [166kB]
Get:2 http://us.archive.ubuntu.com/ubuntu/ lucid/main patch 2.6-2ubuntu1 [121kB]
Get:3 http://us.archive.ubuntu.com/ubuntu/ lucid-updates/main dkms 2.1.1.2-2ubuntu1 [70.8kB]
Get:4 http://us.archive.ubuntu.com/ubuntu/ lucid/main fakeroot 1.14.4-1ubuntu1 [101kB]
Fetched 458kB in 1s (337kB/s) 
Selecting previously deselected package make.
(Reading database ... 44864 files and directories currently installed.)
Unpacking make (from .../make_3.81-7ubuntu1_amd64.deb) ...
Selecting previously deselected package patch.
Unpacking patch (from .../patch_2.6-2ubuntu1_amd64.deb) ...
Selecting previously deselected package dkms.
Unpacking dkms (from .../dkms_2.1.1.2-2ubuntu1_all.deb) ...
Selecting previously deselected package fakeroot.
Unpacking fakeroot (from .../fakeroot_1.14.4-1ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up make (3.81-7ubuntu1) ...
Setting up patch (2.6-2ubuntu1) ...
Setting up dkms (2.1.1.2-2ubuntu1) ...

Setting up fakeroot (1.14.4-1ubuntu1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.

vagrant@lucid64:~$ sudo vbox/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.18 Guest Additions for Linux.........
VirtualBox Guest Additions installer
Removing installed version 4.1.16 of VirtualBox Guest Additions...
tar: Record size = 16 blocks
Removing existing VirtualBox DKMS kernel modules ...done.
Removing existing VirtualBox non-DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.

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

查看/var/log/vboxadd-install.log:

vagrant@lucid64:~$ cat /var/log/vboxadd-install.log
Uninstalling modules from DKMS
Attempting to install using DKMS

Creating symlink /var/lib/dkms/vboxguest/4.1.18/source ->
                /usr/src/vboxguest-4.1.18

DKMS: add Completed.

Error! Your kernel headers for kernel 2.6.32-38-server cannot be found at
/lib/modules/2.6.32-38-server/build or /lib/modules/2.6.32-38-server/source.
You can use the --kernelsourcedir option to tell DKMS where it's located, or you could install the linux-headers-2.6.32-38-server package.
Failed to install using DKMS, attempting to install without
/tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again.  Stop.
Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.

錯誤!在 /lib/modules/2.6.32-38-server/build 或 /lib/modules/2.6.32-38-server/source 中找不到核心 2.6.32-38-server 的核心標頭檔。

您可以使用該--kernelsourcedir選項告訴 DKMS 它的位置,或者您可以安裝linux-headers-2.6.32-38-server 軟體包。

使用 DKMS 安裝失敗,嘗試在沒有 /tmp/vbox.0/Makefile.include.header:97 的情況下安裝:*** 錯誤:無法找到目前 Linux 核心的原始碼。指定 KERN_DIR= 並再次執行 Make。停止。

# sudo apt-get install linux-headers-2.6.32-38-server

然後再試一次。

引用自:https://serverfault.com/questions/415739