差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
kitsuneko-edit-kernel-config [2022/02/15 23:34] shimadakitsuneko-edit-kernel-config [2022/02/28 21:56] (現在) shimada
行 1: 行 1:
 +====== ここん・きつねこにおける kernel の config 編集方法 ======
  
 ここでは、defconfig からの差分で kernel の config を生成する方法について記述している ここでは、defconfig からの差分で kernel の config を生成する方法について記述している
  
-  * なぜフルの config を入れるではなく、defconfig からの差分を取るのか?というと、差分で取っていたほうが、将来のバージョンアップ時にわかりやすく、変更が把握・追従しやすいためである。 +  * Q: なぜフルの config をリポジトリに入れるではなく、defconfig からの差分を取るのか? 
-  * 一応Yoctoはレイヤごとにkernelのconfigを分けることができるなど、より色んな組み方ができるのだが、以下の手順はあくまでここん流のやり方なので、参考程度に。+    *   A: 差分で取っていたほうが、将来のバージョンアップ時にわかりやすく、変更が把握・追従しやすいためである。 
 +  * 一応Yoctoはレイヤごとにkernelのconfigを分けることができるなど、より細かな組み方ができるのだが、以下の手順はあくまでここん流のやり方なので、参考程度に。
   * 以下の例のうち、 tmp-glibc/work/... と記載しているディレクトリは、ビルド環境やパラメータによって大きく異なるので、適時読み替える必要がある   * 以下の例のうち、 tmp-glibc/work/... と記載しているディレクトリは、ビルド環境やパラメータによって大きく異なるので、適時読み替える必要がある
  
-==== 編集する部分 ====+===== 編集する部分 =====
 meta-coconport/coconx64/recipes-kernel/linux/ 内、例えばファイル構造はこんな感じ meta-coconport/coconx64/recipes-kernel/linux/ 内、例えばファイル構造はこんな感じ
 <code> <code>
行 19: 行 21:
 coconx64-standard.scc  coconx64.cfg coconx64-standard.scc  coconx64.cfg
 </code> </code>
-この例では coconx64.cfg が、今回の説明で作る差分 kernel config である。新規にターゲットのkernelを起こすときは、最初はからファイルでよいが、前バージョンや他ディストリからconfigを持ってくる場合は、下記の「kernel のバージョンをげるときの準備」をまず実行しておきたい+この例では coconx64.cfg が、今回の説明で作る差分 kernel config である。
  
 +linux-longterm_%.bbappend の以下の行の値に、Linux kernelであらかじめ入っている、各プラットフォームごとに定められた defconfig をあらかじめ入れておくようにする。
 +<code>
 +KBUILD_DEFCONFIG_coconx64 = "x86_64_defconfig"
 +</code>
 +
 +===== 1からターゲットを起こす場合の準備 =====
 +
 +新規にターゲットのkernelを起こすときは、最初は coconx64.cfg は空ファイルでよい。
 +ここでは上記ツリーの recipe をすでに作ってあると仮定して、最初の時点でのオリジナル .config を以下の通り生成しておく。
 +
 +  * bitbake の準備をしたあと、以下のように .config を生成する
 +<code>
 +$ source ./opencocon-init-build-env
 +$ bitbake linux-longterm -c kernel_configme -f
 +</code>
 +  * オリジナルの .config ができるので。これを一旦buildディレクトリの外にコピーしておく。
 +<code>
 +$ cp tmp/work-glibc/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config config-5.10.orig
 +</code>
 +
 +
 +
 +===== 他から移植したり、kernel のバージョンを上げるときの準備 =====
 +
 +あるいは、前バージョンや他ディストリからconfigを持ってくる場合は、下記をまず実行しておきたい。
  
-==== kernel のバージョンをげるときの準備 ==== +  * まずは defconfig 状態にするため、coconx64-standard.scc ファイル内の kconf からはじまる行をすべてコメントアウト(行頭に # でよい)する
-  【kernelのバージョンを上げるときのみ】 まずは defconfig 状態にするため、coconx64-standard.scc ファイル内の kconf からはじまる行をすべてコメントアウト(行頭に # でよい)する+
   * 次に bitbake の準備をしたあと、以下のように .config を生成する   * 次に bitbake の準備をしたあと、以下のように .config を生成する
 <code> <code>
行 32: 行 58:
   * オリジナルの .config ができるので。これを一旦buildディレクトリの外にコピーしておく。   * オリジナルの .config ができるので。これを一旦buildディレクトリの外にコピーしておく。
 <code> <code>
-$ cp tmp/work/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config config-5.10.orig+$ cp tmp/work-glibc/coconx64-poky-linux/linux-longterm/5.10.36-r0/linux-coconx64-standard-build/.config config-5.10.orig
 </code> </code>
-  * 【kernelのバージョンを上げるときのみ】次に、coconx64-standard.scc において、前のバージョンの差分config、または defconfig の記述のある kconf 行を有効化(アンコメント)し、以下のコマンドで再度 .config を生成する+  * 次に、coconx64-standard.scc において、前のバージョンの差分config、または defconfig の記述のある kconf 行を有効化(アンコメント)し、以下のコマンドで再度 .config を生成する
 <code> <code>
 $ bitbake linux-longterm -c clean $ bitbake linux-longterm -c clean
 $ bitbake linux-longterm -c kernel_configme -f $ bitbake linux-longterm -c kernel_configme -f
 </code> </code>
-  * 【kernelのバージョンを上げるときのみ】ここまでの差分を取る。 ここでできた差分 config ファイルが編集のたたき台となる。+  * ここまでの差分を取る。 ここでできた差分 config ファイルが編集のたたき台となる。なお、コメントを削りたくないときは、最後2つのsedコマンドを適時編集する。
 <code> <code>
-$ diff -Nurp config-5.10.orig tmp/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+$ 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
 </code> </code>
   * あとはリポジトリに反映する   * あとはリポジトリに反映する
行 48: 行 74:
 </code> </code>
  
-==== kernel の config を編集して recipe に反映するとき ====+===== kernel の config チューニングをするとき =====
  
-  * menuconfig動かして、追のチューニングう。 +下記の手順の代わりに、coconx64.cfg 直接編集して書きえてもよいとは思うが、整合性あわせるため、できるだけ menuconfig か oldconfig を通しておいたほうがよいように思う。
-<code>+
  
 +  * 前述の準備ができたら、menuconfigを動かして、チューニングを行う。
 +<code>
 +$ bitbake linux-longterm -c clean
 +$ bitbake linux-longterm -c kernel_configme -f
 $ bitbake linux-longterm -c menuconfig $ bitbake linux-longterm -c menuconfig
 </code> </code>
行 58: 行 87:
 なお byobu が半分に割れてしまったときは、 Ctrl-a z で全画面になる。 なお byobu が半分に割れてしまったときは、 Ctrl-a z で全画面になる。
  
-これをいっん kernel 内 revcipe の cocon486.cfg に上書きし +  オリジナルの .config と、今回 menuconfig で編集した内差分取る
- +
-* もう一度configmeまわし+
 <code> <code>
-bitbake linux-longterm -c kernel_configme -f+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
 </code> </code>
  
-もう一度差分取って、新しい cfg を生成する+  変更リポジトリに反映する
 <code> <code>
-diff -Nurp config.orig tmp-glibc/work/cocon486-pc-linux/linux-longterm/5.10.22-r0/linux-cocon486-standard-build/.config | sed -n "s/^\+//p" > cocon486-5.10-add1+ cp config-5.10-diff2 ../meta-coconport/coconx64/recipes-kernel/linux/files/coconx64/coconx64.cfg
 </code> </code>
  
-出力された cocon486-5.10-add1 の最初の1行しておく +  あとはkernelビルドしてテストする
- +
-* あとはリポジリに反映する+
 <code> <code>
-cp cocon486-5.10-add1 ../meta-coconport/cocon486/recipes-kernel/linux/files/cocon486/cocon486.cfg+bitbake linux-longterm -c clean 
 +$ bitbake linux-longterm
 </code> </code>
 +
文書の先頭へ