make mrproper
이전 에 게시 한 젠투 설치가 있습니다 /usr/src/linux
.
VirtualBox 모듈을 설치하고 싶어서 /boot/System.map
및를 /boot/config
복사 했습니다 /usr/src/linux
(구성은 /usr/src/linux/.config에 복사되었습니다).
그런 다음 나는 다음을 실행했습니다.
emerge -1 =app-emulation/virtualbox-modules-4.3.32
다음과 같은 경고가 발행됩니다.
make[3]: Entering directory '/usr/src/linux-3.18.25-gentoo-r1'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo >&2; \
echo >&2 " ERROR: Kernel configuration is invalid."; \
echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
echo >&2 ; \
/bin/false)
mkdir -p /var/tmp/portage/app-emulation/virtualbox-modules-4.3.32/work/vboxpci/.tmp_versions ; rm -f /var/tmp/portage/app-emulation/virtualbox-modules-4.3.32/work/vboxpci/.tmp_versions/*
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
이머지는 실패하지 않지만, 완료되면 모듈을 로드할 수 없습니다:
# modprobe -v vboxdrv
insmod /lib/modules/3.18.25-gentoo-r1-09-07-2015/misc/vboxdrv.ko
modprobe: ERROR: could not insert 'vboxdrv': Exec format error
이 문제를 해결하는 방법에 대한 조언을 줄 수 있는 사람이 있나요?
답변1
커널에서 모듈 서명 옵션을 활성화했을 가능성이 높습니다. VirtualBox 모듈은 자동으로 서명되지 않으므로 새 커널을 빌드할 때마다 모듈을 다시 빌드하고 서명합니다.
이 경우 터미널에 다음을 입력하십시오(프로세스에 커널 구성이 내장되어 있는 경우).
zcat /proc/config.gz | grep CONFIG_MODULE_SIG
내장된 커널 구성이 없는 경우 커널 구성을 찾으십시오. 커널 구성은 /usr/src/linux/.config
다음 위치에 있을 수 있습니다./etc/kernels/kernel-config-<the-corresponding-kernel-version>
예를 들어 다음과 같거나 유사한 출력(YMMV)이 표시됩니다.
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
CONFIG_MODULE_SIG_ALL=y
# CONFIG_MODULE_SIG_SHA1 is not set
# CONFIG_MODULE_SIG_SHA224 is not set
# CONFIG_MODULE_SIG_SHA256 is not set
# CONFIG_MODULE_SIG_SHA384 is not set
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
선택한 해시 함수에 따라 동일한 해시 함수를 사용하여 모듈에 서명해야 합니다. 이라는 유틸리티가 있습니다 sign-file
.
이전 버전에서는 sign-file
에 위치했지만 이제 커널 /usr/src/linux/
의 경우 (다시 YMMV)에 위치합니다.4.5
/usr/src/linux/scripts/
서명 모듈을 활성화하고 실제로 서명 모듈을 사용하여 시스템을 부팅한다는 것은 should
일반적으로 생성된 키와 x509 파일이 이미 있다는 것을 의미합니다(서명 키를 직접 생성할 수 있음).
다음 명령을 실행합니다.
/usr/src/linux/scripts/sign-file sha512 /usr/src/linux/certs/signing_key.pem /usr/src/linux/certs/signing_key.x509 /lib/modules/<your-kernel-version>/misc/vboxdrv.ko
모듈은 유효하게 서명되어야 하며 사용할 준비가 되어 있어야 합니다 modprobe
.
x509 파일과 서명 키를 찾아 위 명령의 경로를 바꾸세요.
- 참고로, 서명이 필요한 4개의 virtualbox 모듈이 있습니다 -
vboxdrv
,vboxnetflt
및 .vboxnetadp
vboxpci