This service is available only in Japanese-language.

kernel編集部分のみのbitbake

あるボードのbspに対して、kernel configの変更を加えましたが、変更が反映されていないようです。
元のbspのレイヤーより優先度を上げた自作レイヤーにて、パッチを用意しkernel部分のみbitbakeして確認しましたが、
menuconfigで確認すると変更が反映されていませんでした。

間違い、確認事項があればご教授いただければ幸いです。

よろしくおねがいします。

---------------------------------手順----------------------------------------------------

# kernel configの差分 fragment.cfg の生成
bitbake virtual/kernel -c kernel_configme -f
bitbake virtual/kernel -c menuconfig
bitbake virtual/kernel -c diffconfig

# 自作レイヤー準備
bitbake-layers create-layer meta-sample
BBFILE_PRIORITY_meta-sample = "7"  #bspのvirtual/kernelが含まれるレイヤー優先度は"6"だったので"7"へ
LAYERSERIES_COMPAT_meta-sample = "sumo"
bitbake-layers add-layer ../meta-sample/

# kernel configのパッチを自作レイヤーにて作成
cp fragment.cfg ~/${WORK}/meta-sample/meta-<board-bsp>/recipes-kernel/linux/linux-<board>/
touch ~/${WORK}/meta-sample/meta-<board-bsp>/recipes-kernel/linux/linux-<board>_%.bb
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://fragment.cfg"

# kernel のみbuild
bitbake virtual/kernel -c kernel_configme -f

# kernel のみbuild後、menuconfig確認
bitbake virtual/kernel -c menuconfig

--> 反映されておらず。

初歩的なミスがありました。
linux-<board>_%.bb ではなく、 linux-<board>_%.bbappend でした。

しかし、こちらにやり直してもmenuconfigの結果は変更が反映されていない状態でした。

ベンダーが提供するBSPの場合、特定のファイルを使用して.configの内容を変更する処理を追加している場合が有ります。

bitbake virtual/kernel -c listtasks
で、現在使用中のカーネルレシピに登録されているタスクが確認できます。

タスクの処理内容については
bitbake virtual/kernel -e
の表示の中で、該当タスクの処理も確認可能です。
出力結果は10000行を越えますので、ファイルにリダイレクトすることを
お勧めします。

コピー元のファイルが確認できましたら、そのファイルの末尾にfragment.cfg
の出力結果を追記するパッチを作成することで、menuconfig で行った変更を
再利用可能となります。

linux-imx の手順に関しては以下の記事を作成しております。
https://yoctobbq.lineo.co.jp/?q=node/332
imxの場合、以下の記事もご参考ください。
https://yoctobbq.lineo.co.jp/?q=node/184

また、新規にタスクを追加するのではなく、既存のタスクの前処理として
同じように.config を書き換える場合もありますので
bitbake virtual/kernel -e
の出力結果から、".config" を検索して、タスク内での書き換え処理を解析することで対応可能かと。

元のレシピのファイル linux-<board>_4.14.bb の内容は以下のようになっています。
自分がappendしたいことは、
  SRC_URI_append = " \
  file://fragment.cfg \
  "
なのですが、下記の内容だと、パッチが当たるタイミングと、kernelがbuildされるタイミングはどのように考えればよろしいでしょうか?

(kernelがbuildされた後、bbappendされているのではないか、と推測しております。)

linux-<board>_4.14.bb の内容
-------------------------------------------------------------------------------------------
require include/<****>
require recipes-kernel/linux/linux-yocto.inc
・・・
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/:"
・・・
LINUX_VERSION ?= "4.14.75"
PV = "${LINUX_VERSION}+git${SRCPV}"
PR = "r1"
・・・
SRC_URI_append = " \
file://<***> \
"
・・・
do_download_firmware () {
install -m 755 ${WORKDIR}/<*****>_v*.dlmem ${STAGING_KERNEL_DIR}/firmware
}

addtask do_download_firmware after do_configure before do_compile
-------------------------------------------------------------------------------------------

SRC_URI_append でファイルを追加した場合、bitbake実行時に最初に行われるレシピの解析の過程で、
.bb/.bbappendを確認し、元となるSRC_URI で指定された文字列、SRC_URIに対する追記演算子で指定された文字列の解析を行い、
実際の処理が始まる前にSRC_URI変数が決定となります。

念のため確認ですが、bbappendファイルは、追加したレイヤーのconf/layer.conf 内の BBFILES += で指定された
ディレクトリ以下に配置されている必要があります。bitbake create-layers を実行後、変更を行っていない場合は
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
となっていますので、レイヤーを作成したディレクトリ以下、recipes- で始まるディレクトリ内に配置する必要があります。