This service is available only in Japanese-language.

構築

Yoctoビルド時に別途バイナリファイルを追加してイメージ化する方法はございますか?

Pokyのビルド時に、自作バイナリファイルをBitbake対象に追加して、Pokyと統合してイメージ化することは可能でしょうか。
私のイメージですと、レシピファイルのSRC_URIにバイナリファイルのパスを指定し、do_install以降のdo_packageやdo_rootfsの処理をレシピ内に書き加えれば可能ではないかと考えておりますが、本認識で正しいでしょうか。

yocto(warrior) + Raspberry Pi CM3+での libiconv の適用について

お世話になります。

yocto(warrior)にて、Raspberry Pi CM3+用のOSイメージを作成しましたが、その中には glibc は含まれているものの、libiconv が含まれておりませんでした。
そこで、meta-gplv2 レイヤー を clone して bblayers.conf に追加し、core-image-base.bbappend を作成しその中で「IMAGE_INSTALL_append = " libiconv"」を記述しました(core-image-base.bbappend は自分のレイヤーに追加してあります)。
そして bitbake core-image-base を実行すると
-----
ERROR: Nothing RPROVIDES 'libiconv' (but /opt/poky-warrior/meta/recipes-core/images/core-image-base.bb RDEPENDS on or otherwise requires it)
libiconv was skipped: libiconv is provided for use with uClibc only - glibc already provides iconv
NOTE: Runtime target 'libiconv' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['libiconv']
ERROR: Required build target 'core-image-base' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-base', 'libiconv']
----

どうもうまく入ってはくれないようです。どのようにすればよいでしょうか?

独自のスクリプトを自動実行としたい。

お世話になります。

自分で作成したシェルスクリプトをRaspberry pi CM3+起動時に自動実行したいと考えています。参考にしたのはこちら<https://qiita.com/tefunamu/items/e54bb9881aa11c26354e>です。

ただ、出来上がったイメージの中を確認すると当該シェルスクリプトは所定の位置(/etc/init.d)に置かれているは確認できましたが、自動実行のための登録(/etc/rc*.d)にはシンボリックリンクがない、といった状況です。
おそらく、"update-rc.d.bbclass"に対する指示がうまくできていないのだと思われます。

そこで、本件の参考となるレシピや気を付けなければいけない点などありましたらご教示いただきたく。

machineの定義の仕方について

お世話になっております。

VirtualBox向けのイメージをyoctoで生成しようとしています。
X86がターゲットなので、yoctoでサポートしている”genericx86”をMACHINEのコンフィグとして使いつつ、
自社の独自パラメータ(IMAGE_FSTYPES += "vmdk"など)をMACHINEファイルに記述したく、以下のような記述を行ってイメージの作成を試みています。

<ベース>
Morty-16.0.4

<追記>
・meta-hogehoge(自社レイヤー)を作成(bblayerに追加)
・meta-hogehoge/conf/machine/hogehoge.confを作成
・hogehoge.confで以下のような記述
--
include conf/machine/genericx86.conf # meta-yocto-bsp/conf/machine/genericx86.confを使うつもり
~~ 自社のパラメータ群 ~~
--

<作成手順>
・oe-init-build-env hogehogeでbuild-hogehogeを生成
・build-hogehoge/conf/local.confでMACHINE ?= "hogehoge"を宣言
・bitbake core-image-minimalを実行

上記のような手順を行うと、以下のようなエラーが出ます。
ERROR: Nothing PROVIDES 'virtual/kernel'
ERROR: linux-yocto-tiny PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-rt PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-rt PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-rt PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-dev PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-tiny PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto-tiny PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-yocto PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: linux-dummy PROVIDES virtual/kernel but was skipped: PREFERRED_PROVIDER_virtual/kernel set to linux-yocto, not linux-dummy
ERROR: linux-yocto PROVIDES virtual/kernel but was skipped: incompatible with machine hogehoge (not in COMPATIBLE_MACHINE)
ERROR: Required build target 'core-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 'virtual/kernel']

Local.confでMACHINE ?= "genericx86"を宣言してイメージを作成する場合は上記のようなエラーが出ないので、
Machineにgenericx86を宣言する場合と、自作のものを宣言する場合で作法が違うと考えています。

これに関してアドバイスなど頂けないでしょうか?
よろしくお願いいたします。

Toaster使用時の環境変数の追加・変更について

Toasterを使用して環境変数(IMAGE_FSTYPESやIMAGE_INSTALLなど)を変更しようとしていますが、
toaster.confを直接編集してみましたが、リビルドによって初期値に戻ってしまいます。
新規に作成したレイヤー内のconfフォルダに、〇〇.confファイルを作成してリビルドを行いましたが、
ToasterのBitBake variablesを確認すると、設定が読み込まれていないように感じました。

Toasterを用いて環境変数を追加・変更する良い方法について教えていただけないでしょうか?

上書きしたいファイル(多数)を一気に適用する方法について

お世話になります。

これまで bbappend ファイルを作成して入れ替えたいファイルなどを適用してまいりましたが、そろそろファイルの数も膨大になりつつあります。
そのため、以下のようなことを考え付きました。

(1)あらかじめ、ルートからのディレクトリ構造をもち、入れ替えたい位置にファイルがあるzipファイルを作成しておく。
(2)展開するためにdo_install_prependにてzipファイルを${D}直下にコピーし、unzipで一気に展開。このような感じ。
  do_install_prepend() {
    cp -f /opt/rpi64/meta-local/recipes-core/base-files/files/replace-files.zip ${D}/replace-file.zip
    unzip -o ${D}/replace-files.zip
    rm -f ${D}/replace-files.zip
  }

 こうすることで、あとはzipファイルを入れ替えれば再構築も楽になるのでは?ということです。

実際にやってみますとbitbake core-image-base でOSイメージは作成できましたが、zip中のファイルは一切適用されていませんでした。
SRC_URIに掲載されたファイルでなければ無効になるのでしょうか?

yocto的にはイレギュラーな策かと思いましたが、これを実現させるにはどのようなbbappendを書けば実現できるでしょうか?ご教示ください。

----
追伸
書き込みのプレビューで以下の文章が表示されます。
Notice: Undefined variable: node _watcher_node_type_enabled() (/var/www/drupal-7.67/sites/all/modules/watcher/watcher.module ファイル 2805行).
Notice: Undefined variable: node _watcher_node_type_enabled() (/var/www/drupal-7.67/sites/all/modules/watcher/watcher.module ファイル 2805行).

マルチパーティションを構築するための方法(meta-ptx)について

Raspberry pi cm3用に作成したrootfsに対して、パーティションを分けようと考えています。
以前、「.sdcardイメージに複数のrootfsを格納」<https://yoctobbq.lineo.co.jp/?q=node/137>のトピックが作成されましたが、ここでは複数のrootfsを用意するのではなく1つのrootfsの内容を個別のパーティションにしたいという意味です。

個人的にいろいろと調べたところ「meta-ptx」を使うことで、出来上がったrootfsイメージを個別のパーティションとしてマウントできるようだ、というところまでは分かってきました。
いかんせん、情報が少なく使い方がいまいちよくわかりませんでした。ご教示いただけたらと思います。

拡張SDKのTaskHash mismatchエラーのデバッグ方法

ベンダー提供のBSPを拡張SDKに対応させています。
出来上がった拡張SDK環境で「devtool build-image」を行うと、
1回目のビルドでTaskhash mismatch のエラーが大量にでてしまいます。
(2回目以降はエラーになりません)

このTaskHash mismatchのエラーを解決したいと考えています。

通常のビルド環境では、このエラーは出ません。
また、ビルド開始時、「Checking sstate mirror object availability」の段階で、
下記のようなWARNINGが数十行にわたり出ています。(これは2回目以降のビルドでも現れます)
``````````
The レシピ名:タスク sig is computed to be 0b29a57195c8312078d40b12f7a12ce7, but the sig is locked to 6fe6c24e1ca1598005a502f05119e666 in SIGGEN_LOCKEDSIGS_t-cortexa9hf-vfpv3
``````````

TaskHash mismatchに対して、どう解析していいか理解できていません。
考えられる原因、解析のヒントになりそうなことなどありませんでしょうか?

QA Issue: Files/directories were installed but not shipped in any packageの対応方法

2038年問題の対策パッチを当てたglibcの動作確認を行うために、

https://github.com/lmajewski/meta-y2038

のREADMEファイルに従って、

git://git.yoctoproject.org/poky.git
git://git.openembedded.org/meta-openembedded.git
https://github.com/lmajewski/meta-y2038

のリポジトリをクローンし、リビジョンをそれぞれ、

ee7dd3194411695e659c0c5cfbe2d938764dcc78
cca27b5ea7569d2730ee5da7ee7f47b39d775d89
bd8cd0fc9d805a563ab7d73dbb0c274e878a7812

として、conf/local.confに下記を追記

MACHINE ??= "y2038"
PREFERRED_PROVIDER_virtual/kernel = "linux-y2038"
IMAGE_INSTALL_append = " y2038-glibc"
IMAGE_INSTALL_append = " y2038-tests"

さらに、conf/bblayers.confのBBLAYERSに下記を追加

meta-y2038
meta-openembedded/meta-oe
meta-openembedded/meta-networking
meta-openembedded/meta-python
meta-openembedded/meta-filesystems
meta-openembedded/meta-perl

して、下記のコマンドを入力しました。

bitbake y2038-image-devel && runqemu -d y2038-image-devel

下記エラーが出てしまい、ビルドが止まってしまいます。

ERROR: linux-y2038-5.0+gitAUTOINC+48166e6ea4-r0 do_package: QA Issue: linux-y2038: Files/directories were installed but not shipped in any package:
/include
/include/linux
/include/rdma
/include/xen
/include/scsi
/include/drm
/include/asm-generic
/include/misc
/include/asm
/include/sound
/include/mtd
/include/video
...略...
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
linux-y2038: 996 installed and not shipped files. [installed-vs-shipped]
ERROR: linux-y2038-5.0+gitAUTOINC+48166e6ea4-r0 do_package: Fatal QA errors found, failing task.
ERROR: linux-y2038-5.0+gitAUTOINC+48166e6ea4-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /***/tmp/poky/y2038/tmp/work/y2038arm-poky-linux-gnueabi/linux-y2038/5.0+gitAUTOINC+48166e6ea4-r0/temp/log.do_package.21931
ERROR: Task (/***/tmp/poky/y2038/meta-y2038/recipes-kernel/linux/linux-y2038_git.bb:do_package) failed with exit code '1'

WEB等で調査したところ、

/***/tmp/poky/y2038/meta-y2038/recipes-kernel/linux/linux-y2038_git.bb

FILES_${PN} += "\
${includedir}/linux/* \
${includedir}/rdma/* \
${includedir}/xen/* \
${includedir}/scsi/* \
${includedir}/drm/* \
${includedir}/asm-generic/* \
${includedir}/misc/* \
${includedir/asm/* \
${includedir}/sound/* \
${includedir}/mtd/* \
${includedir}/video/* \
"

を追記せよとのことだったので追記しましたが、変化はありませんでした。
正しい対策方法をご存知の方がいらっしゃいましたら、教えていただけると助かります。
よろしくお願いいたします。

yocto BSPに含まれるカーネルの変更

https://yoctobbq.lineo.co.jp/?q=node/80
を参考に、カーネルバージョンの変更を試みています。
レシピ
~/yocto/sources/meta-freescale-3rdparty/recipes-kernel/linux/linux-congatec_4.9.88.bb

レシピ内で指定しているファイル
~/yocto/sources/meta-freescale-3rdparty/recipes-kernel/linux/linux-congatec-4.9.88

このカーネル4.9.88と同位置にカーネル4.1.15が存在しています。
(提供されているBSPがこの構成になっています)
linux-boundary-rt_4.1.15.bb
linux-boundary-rt-4.1.15

そこで、PREFERRED_VERSIONにてカーネルバージョン変更(4.9.88から4.1.15へ変更)を試みました。
local.conf内に下記の1行を追加してbitbakeを実行しました。

PREFERRED_VERSION_lnux-boundary-rt=“4.1%"

結果はエラーが起きまして、下記のメッセージでした。
---------------------------------------------------------------------------------------------------------------
test1234@test1234:~/yocto/build$ bitbake fsl-image-machine-test
ERROR: Unable to start bitbake server
ERROR: Server log for this session (/home/test1234/yocto/build/bitbake-cookerdaemon.log):
--- Starting bitbake server pid 9596 at 2019-09-12 18:22:54.974762 ---
ERROR: ParseError at /home/test1234/yocto/build/conf/local.conf:23: unparsed line: 'PREFERRED_VERSION_lnux-boundary-rt = “4.1%"'

test1234@test1234:~/yocto/build$
----------------------------------------------------------------------------------------------------------------
bitbake-cookerdaemon.logを見てみても、上記のエラーメッセージが載っているだけでした。
考えられる原因と対策は何でしょうか?

ページ