모듈: x86/모듈: 잘못된 재배치 대상 건너뛰기

모듈: x86/모듈: 잘못된 재배치 대상 건너뛰기

다음과 같이 Debian 10(v4l2loopback)에서 모듈을 컴파일하려고 합니다.

sudo apt-get install linux-headers-$(uname -r)
git clone https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback/
make -j4
sudo make install
sudo modprobe v4l2loopback

이로 인해 오류가 발생합니다.

modprobe: ERROR: could not insert 'v4l2loopback': Exec format error

문제가 무엇인지 알아보려고 합니다. (이 문제에 대해 몇 가지 질문이 있습니다.https://github.com/umlaeute/v4l2loopback/issues/208또는https://github.com/umlaeute/v4l2loopback/issues/296, 그러나 문제는 내 시스템 구성과 관련된 것 같습니다 v4l2loopback.)

1. 확인dmesg

이것이 무엇을 의미하는지 모르겠습니다.

[   48.264449] v4l2loopback: loading out-of-tree module taints kernel.
[   48.264505] v4l2loopback: module verification failed: signature and/or required key missing - tainting kernel
[   48.264610] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000d85e721d, val ffffffffc0ba115b

2. 커널 헤더가 커널 설치와 일치하는지 확인

다음 출력을 보면 둘 다 일치한다고 생각됩니다.

$ sudo modinfo v4l2loopback 
filename:       /lib/modules/4.19.0-2-amd64/extra/v4l2loopback.ko
license:        GPL
author:         Vasily Levin, IOhannes m zmoelnig <[email protected]>,Stefan Diewald,Anton Novikovet al.
description:    V4L2 loopback video device
depends:        videodev
retpoline:      Y
name:           v4l2loopback
vermagic:       4.19.0-2-amd64 SMP mod_unload modversions

$ uname -a
Linux pingu1 4.19.0-2-amd64 #1 SMP Debian 4.19.16-1 (2019-01-17) x86_64 GNU/Linux

따라서 이것은 문제가 되지 않습니다.

3. 모듈을 빌드하는 데 사용되는 툴체인은 커널을 빌드하는 데 사용되는 툴체인과 동일합니까?

커널은 다음과 같이 구축된 것으로 보입니다 gcc version 8.2.0.

$ cat /proc/version
Linux version 4.19.0-2-amd64 ([email protected]) (gcc version 8.2.0 (Debian 8.2.0-14)) #1 SMP Debian 4.19.16-1 (2019-01-17)

모듈이 무엇으로 만들어졌는지 알아내는 방법을 모르겠습니다. 내 추측은 다음과 같다:

$ gcc --version
gcc (Debian 8.3.0-6) 8.3.0

그렇군요 .8.2.08.3.0이는 마이너 버전 변경이므로 아무 문제도 발생하지 않습니다.

4. depmod이전에 실행modprobe

아무런 차이가 없습니다. 문제의 모듈에는 종속성이 없기 때문에 아무런 영향을 미치지 않았다고 생각합니다.

다음에 무엇을 해야 할지 도와줄 사람이 있나요?

답변1

저도 같은 문제가 있었는데 커널 헤더를 다시 설치해서 문제를 해결할 수 있었습니다.

sudo apt update && sudo apt upgrade
sudo apt remove --purge linux-headers-*
sudo apt autoremove && sudo apt autoclean
sudo apt install linux-headers-generic

답변2

내 문제를 해결할 수 있습니다.

sudo apt-get install linux-image-4.19.0-6-amd64-unsigned linux-headers-4.19.0-6-amd64
cd v4l2loopback/
make clean
make
sudo make install
sudo depmod
sudo modprobe v4l2loopback

그렇지 sudo depmod않으면 커널 모듈을 찾을 수 없습니다.

그래서 결정적인 오류는 dmesg다음과 같습니다.

v4l2loopback: module verification failed: signature and/or required key missing - tainting kernel

v4l2loopback내 말이 맞다면 서명되지 않았기 때문에 서명되지 않은 커널이 필요합니다 .

관련 정보