😊

make[2]: *** /lib/modules/5.15.167.4-microsoft-standard-WSL2/build: No

に公開

状況

  • Buildrootでカーネルモジュールをビルドしようとすると上記エラーが発生
  • WSLを使用

原因

WSLを使っていること。

対策

WindowsマシンでやりたいならVMを使うのが手っ取り早い
(WSLでやる方法もあるにはあるらしい)

原因詳細

  • カーネルモジュールのビルドにはカーネルのヘッダファイルが必要
    • カーネルが定義している構造体やマクロを使うため
  • カーネルのヘッダは、/lib/modules/<ver>/buildにある
  • そのため、Makefileでは-C /lib/modules/$(uname -r)/buildでそこを指定してビルドしている
  • WSLの場合は/lib/modules/<ver>/buildにヘッダはない

自前のパッケージならMakefileを書き換えてもいいが、第三者から提供されるモジュールの場合はそうもいかないよね

Discussion