2024-07-18

Linux Kernel 6.9 の再コンパイルに失敗

LMDE 6 というか Debian 12 に Linux Kernel 6.9 が配信されたので、ソースを取得して自前ビルドを作ってみましたが失敗です。

以下が make のエラー内容です。さっぱり原因がわかりません。

  CALL    scripts/checksyscalls.sh
make[3]: *** [debian/rules:74: build-arch] エラー 2
dpkg-buildpackage: error: make -f debian/rules binary subprocess returned exit status 2
make[2]: *** [scripts/Makefile.package:121: bindeb-pkg] エラー 2
make[1]: *** [/mnt/DATA/mykernel/linux-source-6.9/Makefile:1565: bindeb-pkg] エラー 2
make: *** [Makefile:252: __sub-make] エラー 2

bindeb-pkg でのエラーっぽいので、make 用の .config の中身を点検してみます。

$ grep CONFIG_SYSTEM_TRUSTED_KEYS= .config
CONFIG_SYSTEM_TRUSTED_KEYS=""

CONFIG_SYSTEM_TRUSTED_KEYS には空文字列が指定されてあるのでここは問題なさそうです。

 

う~ん、何が悪いんでしょう?エラーメッセージをもうちょっと眺めてみます。

build-arch でエラーということで、ソースディレクトリー内の arch というサブディレクトリーを確認してみました。

amd64 がない?

てっきり amd64 というサブディレクトリーがあるのかと思っていましたが存在しないようです。そうすると x86_64 あたりですか?ん?それもないですね。

ということで、手持ちの Linux Kernel 6.7 のソースディレクトリーを確認してみます。

6.7 のソースには x86_64 が存在している

ん?こっちには x86_64 というサブディレクトリーが存在していますね。 これじゃないですか?make でエラーが発生する原因は。

 

6.9 のソースディレクトリーには certs/signing_key.pem も格納されていないので、なんかだいぶ失敗作がリリースされているようです。もう少し待つとまともなソースにアップデートされるのではないかと・・・・。

 

(追記)

すべてワタシが悪うございました。

make oldconfig した時に変なオプションを指定していたのが原因のようです。

CONFIG_SYSTEM_TRUSTED_KEYS あたりの再点検などをしていて、何かのオプションを少し変えて再コンパイルしてみたところ、少し先までコンパイルが進むようになりました。相変わらずコンパイルエラーで止まってしまいますが。

ということで、/usr/src/linux-config-6.9/config.amd64_rt_amd64.xz を展開してオリジナルの .config から再カスタマイズしてみることにしました。

というのも、 .config を点検している最中に 6.7 用の .config に CONFIG_HZ_1000 の指定が漏れていたり、CONFIG_PREEMPT あたりの有効化がすっぽりと抜けていたのを発見したからです。

ちょっと見た目がキレイな make nconfig でポチポチとカスタマイズを進めて行き、最後は LLVM が面倒になったので GCC 12.2 でコンパイルしてしまいました。

そしてようやくコンパイルが成功。長かった。


なんかあれですかね、面倒でも make oldconfig に頼らずに src に同梱されている config ファイルを毎回にポチポチと地道にカスタマイズした方が事故に遭う確率が低いのかもしれません。