2022/03/26(Sat) [長年日記]
[hard] PINE A64壊れた
使っていないPINE A64をなにかに使えないかなぁと思い、Buildrootしてみたのだが、デフォルト設定で起動せず。
しばらく更新などしてなかったので、パッケージ更新して、カーネル更新して、ブートローダーも更新したら、見事に立ち上がらなくなって文字通り、文鎮化した。おそらくブートローダーの書き換えで失敗したのだろう。起動時のメッセージが何も出なくなったので。
[kernel] KernelをClang+LTOでビルド
LTO付きでビルドしたカーネルの起動の速さは、ラズパイのBuildrootで体験済みなので、x86_64のもやってみるか、と思ってGentooでやってみた。
まず、clangとllvmを入れる。
emerge clang lld
そして、make.confへ、以下を書き込む
LD="/usr/bin/ld.lld"
ビルド時は、
make CC=clang LLVM=1 LLVM_IAS=1 -j17 menuconfig make CC=clang LLVM=1 LLVM_IAS=1 -j17
のようにする。カーネルオプションとしては、以下が必要。
CONFIG_LTO=y CONFIG_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y CONFIG_HAS_LTO_CLANG=y CONFIG_LTO_CLANG_THIN=y
結果を計ったところ、6秒の短縮となった。なお、カーネルの機能は必要最小限とまではしていないのであしからず。
Startup finished in 11.301s (firmware) + 3.135s (loader) + 762ms (kernel) + 2min 5.561s (userspace) = 2min 20.761s [ 0.000000] Linux version 5.17.0 (kai@pinga) (clang version 13.0.1, LLD 13.0.1) #1 SMP PREEMPT Sat Mar 26 21:35:41 JST 2022
[ツッコミを入れる]