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

カーネルを直接コンパイルしましたか?カーネルソースツリー(in /root/linux-2.6.18.5)をモジュールコンパイルシステムに渡すようです。しかし、今の段階ではそのようなものは必要ありません。外部モジュールをコンパイルするには複数のファイルが必要です。そのうちのいくつかはカーネルソースコードから直接インポートされ、他のものはカーネルのコンパイルプロセス中に生成されます。これらのファイルのほとんどはCヘッダーファイル(.hこのようなファイルinclude/linux/autoconf.h)ですがModule.symvers

直接コンパイルしたカーネルを実行する場合は、コンパイルツリーの一部を保存する必要があります。最も簡単な方法は何も削除しないことですが、スペースが制限されているか、他の理由で、少なくとも名前が含まれているすべてのファイルと*.hカーネルKbuildソースMakefileツリーのルートにあるいくつかのファイル.config(、.kernelvariablesおよび)を保持する必要がありますModule.symvers

ディストリビューションで提供されたカーネルを実行している場合は、そのカーネルヘッダーを含むパッケージをインストールするだけです(CentOSではそうですkernel-devel)。そしてインストーラに値を渡さないでくださいKERNEL_DIR。デフォルトの場所で値を見つけることができるはずです。

おすすめ記事