2026 年 02 月 09 日 Yocto Project よもやま話
2025年12月、Yocto Project 5.3 Whinlatter リリースのアナウンスがありました。
リリースノートの冒頭に「本リリースには、ユーザーが認識しておくべき重要な変更点が含まれています。」と注意喚起がなされており、リンク先the migration guideに以下の一文があります。
The Poky repository master branch is no longer updated.
Pokyリポジトリのマスターブランチは更新されなくなりました。
これはPokyディストリビューションが廃止されたことを意味するものではなく、ベースレイヤーのクローン作成方法およびPoky構築環境の設定方法が変更されたことを示すとのことです。
Ross Burton 氏は「実際のところはpokyをbitbake+oe-core+meta-yoctoに切り替える」と表現しています。
本稿ではいつもと順番を変更して最初にpokyの変更について記述します。
物は試しということで、従来と同様の手順のgit cloneコマンドでpokyを指定してダウンロードをすると、中にはREADMEファイルが一つ入っているだけでした。poky取得時のディレクトリ構造をひとつ前のバージョンのwalnascarと比較すると以下のようになります。
Walnascar(5.2)

Whinlatter(5.3)

whinlatterのこの構成では当然ですがbitbakeは動きません。中にあるREADMEファイルを読んでみると、
a)自力でbitbake, openembedded-core, meta-yocto, yocto-docsをここにクローニングする
b)bitbake-setupツールを使ってセットアップする
どちらかの方法で中身を取得してください、と説明があります。
bitbake-setupツールはRichard Purdie氏が7-8年かけて作り上げたものだとのことで、で、一章まるまる割いて紹介するほどのお勧めぶりなので、b)のbitbake-setupツールを実行しました。まずgit cloneでbitbakeを取得します。
$git clone https://git.openembedded.org/bitbake
取得した中にあるbitbake-setupを実行します。
$ ./bin/bitbake-setup init
その結果、以下のフォルダ構成が得られます。
この状態で、初期化スクリプトinit-build-envを実行します。
$ source ./poky-master/build/init-build-env
これでbitbake コマンドを実行できるようになります。
これはYocto 5.2で変更されたことですが、そのままだとqemu起動時に例外が出て起動そのものが失敗するので、local.confに以下を追記します。
$ vi ./bitbake-builds/poky-master/build/conf/local.conf
IMAGE_FEATURES += "allow-empty-password allow-root-login empty-root-password post-install-logging"
5.1以前ではIMAGE_FEATURES += "debug_tweaks"と記述していた箇所になりますが、このオプションはなくなりました。書き換えたうえで、bitbakeを実行します。
$ bitbake core-image-minimal
bitbake終了後、qemuを起動します。
$ runqemu core-image-minimal snapshot
Snapshot モードも従来から変更になった点です。リリースや共有にzstファイルなどの圧縮ファイルを利用することが主流になったことを受け、エミュレータでも圧縮イメージを利用するのですが、正しく機能させるためにsnapshot モードでの実行が必要になります。 以上の作業で、以下の画面が立ち上がりました。
この変更の背景に関する追加情報はRichard Purdie氏からメッセージの形で提供されています
元々pokyは急場しのぎであり、一時的なものだったこと。開発者からは支持されていなかったことが書かれています。
変更の留意点としては以下が列記されています。
・別個のoe-coreとbitbakeクローンを用いたビルド環境構築は従来通り機能します
・CIをpokyリポジトリからこれら2つのリポジトリへ変更可能です
・bitbake-setupは必須ではなく、Yoctoドキュメントがユーザーに提示する内容となります
・ pokyリポジトリのメンテナンスを停止する必要はありませんが、新しいアプローチ/コードをテストする人はいないのでご注意ください
・新しい設定でオプションとしてsstateミラーを公開しています
・設定フラグメントもユーザーに公開しています
・meta-yocto内のDISTROとしてのpokyは残ります
ここからはいつも通りの構成でお話しします。
Linux kernel 6.16
なお、本リリースにおけるOLDEST_KERNEL設定は5.15です。初期状態ではこれより古いカーネルはサポートされません。
gcc 15
glibc 2.42
LLVM 21.1.1
300以上のレシピがアップグレードされた。
Pythonは最低バージョンが3.9になりました。
LLVMやその他リソースを必要とするレシピの追加により、ホスト要件が変更になりました。
最小ディスク容量用件は140GB。
最小RAM用件は32GB。
新規ツールbitbake-setupが追加されました。このツールを使って、初期レイヤーのクローン作製や環境設定が可能です。
S = ${WORKDIR}/something はサポート終了になりました
systemd レシピはデフォルトかつ暗黙的に適用されるため、usrmerge PACKAGECONFIG オプションは含まれなくなりました。
レシピで S が ${WORKDIR}/something に設定されていると、サポートされないので、エラーが発生します。以下のように変更してください。
S = "${UNPACKDIR}/something"
S = ${WORKDIR}/git および S = ${UNPACKDIR}/git は削除してください
S = "${UNPACKDIR}/${BP}/something"
Sedコマンドを使って自動でSの設定を削除することもできます。
sed -i "/^S = \"\${WORKDIR}\/git\"/d" `find . -name *.bb -o -name *.inc -o -name *.bbclass`
その後、残りのSの割り当てをWORKDIRではなくUNPACKDIRを参照するように調整するのに以下のコマンドを使うことができます。
sed -i "s/^S = \"\${WORKDIR}\//S = \"\${UNPACKDIR}\//g" `find . -name *.bb -o -name *.inc -o -name *.bbclass`
Lレシピ内で等号代入記号 「=」 の周囲に空白がない場合、新しい警告が表示されるようになりました。
以下は警告が出る例です。
FOO="bar"警告が出ない例は以下になります。このように書き換えてください。
FOO= "bar"
FOO ="bar"
FOO = "bar"
linux-firmwareレシピはデフォルトでライセンス情報を提供しないファームウェアを除外するようになりました。このレシピは内部的に除外対象ファームウェアのリストを保持しており、そのリストはREMOVE_UNLICENSEDという変数で管理されます。無免許ファームウェアが必要な場合は、この変数を上書きすることで利用できます。
2025 年 05 月 14 日 Vigiles サポート
2024 年 09 月 02 日 Vigiles サポート
2024 年 03 月 01 日 Vigiles サポート
2026 年 02 月 09 日 Yocto Project よもやま話
2026 年 02 月 09 日 Yocto Project よもやま話
2026 年 02 月 09 日 Yocto Project よもやま話
2024 年 01 月 10 日 Linux 技術ネタ
2023 年 12 月 12 日 Linux 技術ネタ
2023 年 03 月 31 日 Linux 技術ネタ
2025 年 12 月 01 日 イベントレポート
2025 年 08 月 08 日 イベントレポート
2024 年 12 月 06 日 イベントレポート
2025 年 04 月 01 日 リクルート
2023 年 05 月 30 日 リクルート
2022 年 12 月 27 日 リクルート
2026 年 02 月 09 日 信州リネオ便り
2026 年 01 月 06 日 信州リネオ便り
2025 年 12 月 23 日 信州リネオ便り
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 13 日 マーケティング統括部
2019 年 04 月 25 日 マーケティング統括部
2018 年 12 月 18 日 マーケティング統括部