ここでは、defconfig からの差分で kernel の config を生成する方法について記述している
meta-coconport/coconx64/recipes-kernel/linux/ 内、例えばファイル構造はこんな感じ
$ ls -R .: files linux-longterm_%.bbappend ./files: coconx64 ./files/coconx64: coconx64-standard.scc coconx64.cfg
この例では coconx64.cfg が、今回の説明で作る差分 kernel config である。
linux-longterm_%.bbappend の以下の行の値に、Linux kernelであらかじめ入っている、各プラットフォームごとに定められた defconfig をあらかじめ入れておくようにする。
KBUILD_DEFCONFIG_coconx64 = "x86_64_defconfig"
新規にターゲットのkernelを起こすときは、最初は coconx64.cfg は空ファイルでよい。 ここでは上記ツリーの recipe をすでに作ってあると仮定して、最初の時点でのオリジナル .config を以下の通り生成しておく。
$ source ./opencocon-init-build-env $ bitbake linux-longterm -c kernel_configme -f
$ cp tmp/work-glibc/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config config-5.10.orig
あるいは、前バージョンや他ディストリからconfigを持ってくる場合は、下記をまず実行しておきたい。
$ source ./opencocon-init-build-env $ bitbake linux-longterm -c clean $ bitbake linux-longterm -c kernel_configme -f
$ cp tmp/work-glibc/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config config-5.10.orig
$ bitbake linux-longterm -c clean $ bitbake linux-longterm -c kernel_configme -f
$ diff -Nurp config-5.10.orig tmp-glibc/work/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config | sed -n "s/^\+//p" | sed "1d" | grep "CONFIG" > config-5.10-diff
$ cp config-5.10-diff ../meta-coconport/coconx64/recipes-kernel/linux/files/coconx64/coconx64.cfg
下記の手順の代わりに、coconx64.cfg を直接編集して書き加えてもよいとは思うが、整合性をあわせるため、できるだけ menuconfig か oldconfig を通しておいたほうがよいように思う。
$ bitbake linux-longterm -c clean $ bitbake linux-longterm -c kernel_configme -f $ bitbake linux-longterm -c menuconfig
編集がおわったら、普通に保存・終了してよい。 なお byobu が半分に割れてしまったときは、 Ctrl-a z で全画面になる。
$ diff -Nurp config-5.10.orig tmp/work-glibc/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config | sed -n "s/^\+//p" | sed "1d" | grep "CONFIG" > config-5.10-diff2
$ cp config-5.10-diff2 ../meta-coconport/coconx64/recipes-kernel/linux/files/coconx64/coconx64.cfg
$ bitbake linux-longterm -c clean $ bitbake linux-longterm