다음과 같이 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.0
8.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
내 말이 맞다면 서명되지 않았기 때문에 서명되지 않은 커널이 필요합니다 .