centos PAE 虚拟盒子

centos PAE 虚拟盒子

我正在尝试将 virtualbox 安装在一个非常敏感的盒子上。它一直在抱怨。

/etc/init.d/vboxdrv 设置 KERN_DIR=/root/linux-2.6.18.5

运行并给出此错误:

Attempting to install using DKMS

Creating symlink /var/lib/dkms/vboxhost/4.1.0/source ->
                 /usr/src/vboxhost-4.1.0

DKMS: add Completed.
You can use the --kernelsourcedir option to tell DKMS where it's located.
Failed to install using DKMS, attempting to install without
make KBUILD_VERBOSE=1 SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -C /root/linux-2.6.18.5 modules
test -e include/linux/autoconf.h -a -e include/config/auto.conf || (            \
        echo;                                                           \
        echo "  ERROR: Kernel configuration is invalid.";               \
        echo "         include/linux/autoconf.h or include/config/auto.conf are missing.";      \
        echo "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \
        echo;                                                           \
        /bin/false)

  ERROR: Kernel configuration is invalid.
         include/linux/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.

mkdir -p /tmp/vbox.0/.tmp_versions
rm -f /tmp/vbox.0/.tmp_versions/*

  WARNING: Symbol version dump /root/linux-2.6.18.5/Module.symvers
           is missing; modules will have no dependencies and modversions.

make -f scripts/Makefile.build obj=/tmp/vbox.0
  gcc -m32 -Wp,-MD,/tmp/vbox.0/linux/.SUPDrv-linux.o.d  -nostdinc -isystem /usr/lib/gcc/i386-redhat-linux/4.1.2/include -D__KERNEL__ -Iinclude  -include include/linux/
autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O2 -pipe -msoft-float -mpreferred-stack-boundary=2  -ffreestanding -Iincl
ude/asm-i386/mach-default -fomit-frame-pointer  -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -include /tmp/vbox.0/include/VBox/SUPDrvMangling.h
 -I/root/linux-2.6.18.5/include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -I/tmp/vbox.0/vboxdrv/ -I/tmp/vbox.0/vboxdrv/include -I/tmp/vbox.0/vboxd
rv/r0drv/linux -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DCONFIG_VBOXDRV_AS_MISC -DRT_ARCH_X86
 -DVBOX_WITH_64_BITS_GUESTS   -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(SUPDrv_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(vboxdrv)" -c -o /tmp/vbox.0/linu
x/SUPDrv-linux.o /tmp/vbox.0/linux/SUPDrv-linux.c
cc1: error: include/linux/autoconf.h: No such file or directory

有没有具有编译 linux 内核(希望还有 virtualbox)经验的人可以帮助我解决这个问题?

答案1

你自己编译内核了吗?看起来您正在将内核源代码树(在 中/root/linux-2.6.18.5)传递到模块编译系统。但这不是您现阶段所需要的。要编译外部模块,你需要一堆文件;其中一些文件直接来自内核源代码,其他文件是在内核编译过程中生成的。这些文件大多数是 C 头文件(.h诸如 之类的文件include/linux/autoconf.h),但也有一些其他文件,例如Module.symvers.

如果您正在运行自己编译的内核,则需要保留编译树的一部分。最简单的方法是不删除任何内容,但如果空间有限或其他原因,则必须至少保留每个名为*.hKbuild的文件Makefile,以及内核源代码树根部的一些文件:.config.kernelvariablesModule.symvers

如果您正在运行发行版提供的内核,只需安装包含相应内核头文件的软件包(在 CentOS 上,我认为是kernel-devel)。并且不要将任何KERNEL_DIR值传递给安装程序,它应该能够在默认位置找到它。

答案2

我一直在尝试在 CentOS 6.3 上安装 VB Guest Additions,但收到相同的错误“内核配置无效”。我找到了一个适合我的解决方案。我不需要创建如上所示的符号链接。在 yum install gcc kernel-devel kernel-headers dkms 之上,运行 yum groupinstall “开发工具”
这为我解决了问题。如果没有它,Guest Additions 将无法安装。

相关内容