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에서 사용되는 커널이 아니기 때문에 여기서는 배포판 패키지를 사용할 수 없습니다 . 대신 Microsoft는 제공하는 사용자 정의 커널을 보유하고 있으며 그 안의 모든 것이 컴파일되므로 initramfs가 필요하지 않습니다(즉, 부팅 속도가 더 빠릅니다). 그래서 /lib/modules일부러 비워두었습니다. 릴리스 헤더를 사용하면 결과 바이너리가 다른 버전용이므로 커널에 전혀 로드되지 않습니다.

이전에 WSL2 커널은 모듈을 전혀 지원하지 않았지만 지금은 변경되었습니다.저장소에 따르면. 커널을 빌드하는 방법에 대한 이 저장소와 관련된 일부 문서가 있지만 Microsoft는 사용할 수 있는 사전 빌드된 헤더를 제공하지 않는 것 같습니다. 그러나 저장소를 적절한 하위 디렉터리에 복제 /usr/src하고 문서를 사용하여 거기에 커널 및/또는 필요한 모듈을 빌드할 수 있습니다.

관련 정보