젠투에서 VirtualBox 모듈 만들기

젠투에서 VirtualBox 모듈 만들기

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및 .vboxnetadpvboxpci

Gentoo 모듈에 대한 공식 서명 기사 링크

관련 정보