YoctoでLTS
wata2ki
自己紹介
• 名前: wata2ki (watatuki)
• 元はハードウェアで画像処理をやっていましたが、現在は組み込み屋をやっています
• 最近はエンベデッドでコンテナを使う方法を模索しています
• コロナの影響で海外渡航ができなくなり、ブラックリモートカンファレンス化して困っています
• 日本・ヨーロッパ・アメリカ合衆国から参加するリモートカンファレンスとか無茶ですって。。。
• LFの某カンファレンスでスピーカーだったのですが、事前に録画したものを再生する方式だったので、発表者が一番暇
という、おかしなことになりました
• GitHub
• https://github.com/watatuki
はじめに
• これまでに何回か、自分でLinuxのディストリビューションを作ることができるYoctoについて
紹介してきました
• 今年になって、Yocto ProjectからLTS (Long Term Stable)版を定期的にリリースする
というアナウンスがありました
• 5月にこのYoctoのLTS版について発表しましたが、まだまだ課題も多いです
• 今回は、その続報です。
Yoctoとは?
• L.F.(Linux Foundation)のプロジェクトで、正式名称はYocto Project
• https://www.yoctoproject.org/
• Linuxのディストリビューションを作るのに必要なツール・データを提供
• pokyという名前のリファレンスディストロとセットで提供される
• OpenEmbedded(http://www.openembedded.org/)コミュニティ由来のプロジェクトで、ツールも
共同開発している
• GentooLinuxがクロスビルドになったようなもの
• BSP(Board Support Package)とセットでSBC(Single Board Computer)向けの
Linux環境としてメーカーから提供
要約すると
• 2年に1回LTS版をリリースする
• Yoctoは6か月ごとにリリースされるため4回のリリースにつき1回LTSをリリースする
• LTS版のメンテナンス期間は2年間
• LTSのサポート期間は重複せず、現行のLTSのメンテナンス終了のタイミングで、次のLTSがリリースされる
• これまでのYoctoは、メンテナンス期間終了後にコミュニティサポート期間があり、たまにパッチが当たることも
あったが、今後どうなるかは不明
• ツール(bitbakeなど)と標準セット(poky部分)が対象
• Yoctoリポジトリにある、これ以外のもの(meta-raspberrypi, meta-intelなど)はLTS対象外
• メンテナンスしているコミュニティが、LTSの期間メンテナンスを継続してくれるかもしれない
• Yoctoリリースに付属するリファレンスカーネル(linux-yocto)もメンテナンス対象
Yocto LTSの課題
• Yoctoはあくまでツールセットで、外部のOSSを参照してビルドしている
• Yocto Projetで参照しているOSSに対しては、参照先が消えてしまった場合の対策で、ミラーを持ってい
る程度
• Yoctoで参照しているOSSはYoctoのLTSのメンテナンス対象には含まれない
• CentOSやDebianなどのディストリビューションのように、LTS期間コードの独自メンテをするわけではない
• メンテナによっては、Yoctoのビルドの仕組みでパッチをあてることができるので、それを用いてパッチのバックポートをして
くれる場合もある
• 例外的に、Yocto ProjectでフォークしてメンテナンスしているOSSはコードもメンテナンスされる
• Linux-yoctoがメンテナンスされるのは、このパターンに当たっているため
コードのダウンストリームメンテナンス
• Yoctoの課題は、コードのダウンストリームメンテナンスを行わないこと
• ホビー用途であれば新バージョンに乗り換えてしまえばよいが、そうでない場合は。。。
• 既存のLinuxディストリビューションは、コードのダウンストリームメンテナンスを行っている
• LTSのあるディストリビューション
• Debian
• Ubuntu
• CentOS
• OpenSUSE
• Leapになってから短くなってしまいました
• 既存ディストリビューションのコード再利用ができないか?
Linux Distribution Lifecycle
• Debian:
• Stable support provide 3 years
• Distribution may minor version upgrade during this term to take in new functions and
hardware support.
• OSS version may update during this term.
• LTS support provide 2 years
• Distribution may not take in new functions and hardware support during this term.
• Will take to critical and important security fix.
Debian stable
about 3 years
Debian LTS
about 2 years
Linux Distribution Lifecycle
• Ubuntu:
• General support provide 5 years
• Distribution may minor version upgrade during this term to take in new functions and
hardware support.
• OSS version may update during this term.
• Extended Security Maintenance provide 5 years
• Will take to critical and important security fix.
Linux Distribution Lifecycle
• Red Hat Enterprise Linux/Cent OS:
• Full support provide 5 years
• Distribution may minor version upgrade during this term to take in new functions and
hardware support.
• OSS version may update during this term.
• Maintenance support provide 5 years
• Distribution may not take in new functions and hardware support during this term.
• Will take to critical and important security fix.
Yoctoでのコード参照
• Yoctoから既存ディストリビューションのコードを参照するソリューション
• Debian
• meta-debian
• Ubuntu
• なし
• CentOS
• なし
meta-debian
• TOSHIBAの小林さんが始めたプロジェクト
• Yoctoのビルドシステムと、debianのStabilityとLTSの良いとこどりをしようというプロジェクト
• 現在は、Linux FoundationのCIP(Civil Infrastructure Platform)プロジェクトの中
で開発が行われている
• 現在の最新バージョンは、debian 10のコードとYocto2.7(warrior)を組み合わせて構築されている
• ELC(Embedded Linux Confluence)でも毎年セッションが開催されるくらい、活発に活動している
• 参考
• https://github.com/meta-debian
• https://static.sched.com/hosted_files/osseu19/57/debian-yocto_elce2019_r1.1.pdf
• https://elinux.org/images/7/74/LinuxCon2015_meta-debian_r7.pdf
meta-debianの仕組み
xxx.dsc
xxx.org.tar.xz
xxx.debian.tar.xz
Debian repository
Debian code
Yocto build system
xxx.deb
xxx-dev.deb
xxx-dbg.deb
dscファイルの記載内容をもとに、オリジナルのソースにdebianのパッチ
を当ててコードを生成する
生成したソースをYoctoビルドシステムを使っ
てビルド・パッケージングする
meta-debianの課題
xxx.dsc
xxx.org.tar.xz
xxx.debian.tar.xz
Debian repository
Debian code
Yocto build system
xxx.deb
xxx-dev.deb
xxx-dbg.deb
dscファイルの記載内容をもとに、オリジナルのソースにdebianのパッチ
を当ててコードを生成する
生成したソースをYoctoビルドシステムを使っ
てビルド・パッケージングする
debianのリポジトリには、最新(とひとつ前?)のパッケージしか置かれ
ていないため、Yoctoの特徴であるスナップショットの復元ができない
一度ビルドしたものであればローカルにキャッシュされているため再
ビルドできなくはない
debianのリポジトリ運用は、ディストリビューションの運用として間
違っていないため、難しい問題
たとえば
• CentOSの場合、rpmのspecファイルがgitで管理されているため、この情報からレシピを
ジェネレートするようにできれば、この課題も解決できるのでは?
まとめ
• YoctoのLTSの課題である、コードのLTSにフォーカスしてみた
• 既存ディストリビューションのLTSの比較と、Yoctoでの利用可否について調査をおこなった
• Debian/meta-debianは、唯一現有するソリューションであるが、課題も見えてきた
• CentOSについては、機会があればまた話したいと思います

YoctoでLTSディストリを作るには