매우 민감한 상자에 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
. 기본 위치에서 값을 찾을 수 있어야 합니다.
답변2
CentOS 6.3에 VB 게스트 추가 기능을 설치하려고 했지만 "잘못된 커널 구성"이라는 동일한 오류가 발생했습니다. 나에게 맞는 솔루션을 찾았습니다. 위에 표시된 것처럼 심볼릭 링크를 만들 필요가 없습니다. yum install gcc kernel-devel kernel-headers dkms에서 yum groupinstall "개발 도구"를 실행하면
문제가 해결되었습니다. 이것이 없으면 게스트 추가가 설치되지 않습니다.