This service is available only in Japanese-language.

レイヤ

レイヤーの優先度を一覧表示するコマンドはありますか?

レイヤーの優先度を一覧表示するコマンドはありますか?

レイヤ間のパッチの適用順序について

Yocto Project 公式実践講座 (LFD461-JP)の講座中よくいただく質問について紹介します。

■ レイヤ間のパッチの適用順序について

1つのレシピ(bb)に対して複数のレイヤにアペンドファイル(bbappend)が存在する場合の
do_patchの適用順序についてよく質問されます。

bbappendにおいてパッチが適用されない(エラーとなる)

perlスクリプトを/usr/binに格納するだけの自作レシピ(aaa.bb)があり,これはgit等ではなくローカルにファイルが存在します。
当該スクリプトの一部値をレイヤーごと切り替えたいため,
別途自作レイヤーを用意しました。
試しにdevtoolでパッチ作成を試みたところ,問題なさそうなaaa.bbappendとパッチが用意できたため,
ビルドを試行しました。
しかし,以下のようなエラーが発生します。
Applying patch aaa.patch
can't find file to patch at input line 14
Perhaps you used the wrong -p or --strip option?

patch内記載のpathが悪いのかと,見直したり変更したりしましたが,効果がなく,
おそらくpathの記載以外の原因でこのようになっていると思われます。
なにか本件解決するための情報がございましたら,ご教示いただけますと幸いです。

なお,エラーが発生するのはdevtool finishした後だけであり,devtool modify+編集だけではエラーが発生しません,

bbappendでの${WORKDIR}、${THISDIR}について

とあるパッケージで、.profileをinstallしています。
その.profileを変更したく、ローカルのレイヤにbbappendファイルを以下のように作成しました。
---
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"

SRC_URI += "file://dot.profile"

do_install_append() {
install -m 0644 ${WORKDIR}/dot.profile ${D}/home/root/.profile
}
---

bitbakeすると、とあるパッケージのパス/dot.profile': No such file or directory
と出てしまい、ビルドできませんでした。
${THISDIR},${WORKDIR}などを試しましたが状況は変わりませんでした。
${WORKDIR}が元のパッケージ側に引っ張られていると考えています。

FILESEXTRAPATHS_prependで、現在のパスに設定されると考えていたのですが、記述の不足などがありますでしょうか。
ご教授いただけましたら幸いです。

bitbake(systemd.bbclass)で生成されるpostinstの挙動の変更について

現在,bitbakeで生成されるdebとイメージの双方を使用しています。
systemdのserviceが存在するパッケージを新規に作成し,inherit systemd,SYSTEMD_AUTO_ENABLE_${PN} = "enable"
等記載することで,起動時に自動実行されるようにしています。
しかし,イメージ書き込み・Linux起動後にdebをインストールする際,systemdのdeamon-reloadやrestartが発生することを防ぎたいです。
systemd.bbclass内,systemd_postinst()を編集すればよいかとも考えましたが(未試行)
影響範囲があまりにも広いため,他になにか良い方法がございましたらご教示いただけますと幸いです。

meta-networkingレイヤーをbblayers.confに追加しても、ntpアプリケーションがinstallされない

Yoctoイメージに、ntp, ntpdataアプリケーションをインストールしたく、

bblayers.conf に下記レイヤーを追加してbitbakeしましたが、Yoctoイメージにはインストールされていませんでした。
${TOPDIR}/../meta-openembedded/meta-networking \
${TOPDIR}/../meta-openembedded/meta-python \

** Yocto imageでの実行結果:コマンドなし
~# ntp
-sh: ntp: command not found
~# ntpdata
-sh: ntpdata: command not found

meta-networking下には確かにntpレシピは存在するので、meta-networkingを追加すれば自然とinstallされると期待しておりました。

ntpレシピ:meta-openembedded/meta-networking/recipes-support/ntp/ntp_4.2.8p11.bb

また、downloadフォルダには、レシピに書いてあるようなntp-${PV}.tar.gz は存在しておらず、レシピが実行されていないのでは、と考えております。

解決方法をご教授いただければ幸いです。

よろしくお願い致します。

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

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

ホストPCでのmenuconfigの確認

実機でのmenuconfigの確認 (https://yoctobbq.lineo.co.jp/?q=node/394)
でご質問させていただいた者です。

bitbake後、host PCにてmenuconfigの変更点が反映されているか確認する方法はありますでしょうか?

build/tmp/work-shared/<board>/kernel-source/ 直下にて
$ make menuconfig
としましたが、host pcのmenuconfigが出てきているようです。

実機でのmenuconfigの確認

下記のコマンドにて、menuconfig設定を変更し、パッチを当ててbitbakeを実施しました。
 bitbake linux-yocto -c kernel_configme -f
 bitbake linux-yocto -c menuconfig
 bitbake linux-yocto -c diffconfig

実施後、実機にてきちんと設定が反映されているか確認がしたいのですが、下記試したところmenuconfigはできませんでした。
root@board:/usr/src# make menuconfig
make: *** No rule to make target 'menuconfig'. Stop.

実機にて確認する方法はありますか?

menuconfigの差分ファイル生成方法

bitbake virtual/kernel -c menuconfig の箇所でmenuconfigの変更を行ったときについて

①変更内容を確認するため、.configファイルを直接見たい場合、変更後の.configはどこのdirectoryに生成されますか?
 公式リファレンスでは、
  ${WORKDIR} under the linux-${MACHINE}-${KTYPE}-build directory.
 とありますが、${WORKDIR}、${MACHINE}、${KTYPE}はどのように確認すればよろしいでしょうか?

②bitbake virtual/kernel -c diffconfig で差分を取る際、その差分は”直前に上書きした内容で差分を取っている”ように見えますが正しいでしょうか?念押しでmenuconfigを何回か立ち上げて保存を繰り返すと、fragment.cfgが生成されないため。

③bitbake virtual/kernel -c menuconfig で行った変更内容を元に戻すにはどうすればよろしいでしょうか?

参考:https://www.yoctoproject.org/docs/1.6.1/kernel-dev/kernel-dev.html

bitbake virtual/kernel -c kernel_configme -f
bitbake virtual/kernel -c menuconfig
bitbake virtual/kernel -c diffconfig

ページ