次のように、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