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
ドキュメントを使用してそこにカーネルおよび/または必要なモジュールを構築できます。