Ubuntuを実行しているWSL2で/usr/srcと/lib/modulesを埋める方法は?

Ubuntuを実行しているWSL2で/usr/srcと/lib/modulesを埋める方法は?
mark@L-R910LPKW:~$ uname -r
5.15.90.1-microsoft-standard-WSL2
mark@L-R910LPKW:~$

走れたらいいなトレーシーDockerコンテナで実行されますが、WSL2では機能しません。

mark@L-R910LPKW:~$ sudo docker run --name tracee --rm --privileged --pid=host -v /lib/modules:/lib/modules:ro -v /usr/src:/usr/src:ro -v /tmp/tracee:/tmp/tracee aquasec/tracee:0.4.0 --trace comm=ls
2023/05/16 00:37:43 missing kernel source code compilation dependency
mark@L-R910LPKW:~$

私はこれが私のコンピュータで/usr/src(そして?)が空であることを理解しています。/lib/modules

実際のLinuxシステムではなくWSL2の場合、これをどのように満たすのですか?

答え1

linux-headersディストリビューションのカーネルはWSL2で使用されるカーネルではないため、ここではディストリビューションパッケージを使用できません。代わりに、マイクロソフトは提供するカスタムカーネルを持っており、その中のすべてがコンパイルされるため、initramfsは必要ありません(つまり、起動速度が速い)。だから/lib/modulesわざと空にしておきました。リリースヘッダーを使用すると、結果のバイナリは異なるバージョン用であるため、カーネルにまったくロードされません。

以前は、WSL2カーネルはモジュールをまったくサポートしていませんでしたが、今は変更されました。リポジトリによると。カーネルを構築する方法については、このリポジトリに関連するいくつかのドキュメントがありますが、Microsoftは利用可能な事前に構築されたヘッダーを提供していないようです。ただし、リポジトリを適切なサブディレクトリに複製し、/usr/srcドキュメントを使用してそこにカーネルお​​よび/または必要なモジュールを構築できます。

関連情報