【※ 当記事は2020年7月2日時点の情報です】
ペイヴメント(@pavement1234)です。
組み込みLinuxの主流はYocto Project。
自動でアレコレやってくれる反面、ビルド中に何が行われているかイマイチわかりにくい。
こんな悩みを解決します。
概要
まずは調べてみます。Yoctoの概要(Qiita)を読んでみました。めちゃめちゃわかりやすい…。ビルド手順などが書いてないので最初に読むとイマイチかもですが、レイヤ、レシピの関係などが図示されてて分かりやすく、一度bitbakeしたことがある人が読むと理解が進むと思います。気になったところを抜粋しました。
・YoctoはReferenceが読みにくくReferenceを参照して学習することが難しい。
・YoctoのQuickStart
・YoctoのReference
・bitbakeのReference
・YoctoはLinuxをビルドするプロジェクトでbitbakeをビルドツールとして使う
・Yoctoはレイヤとレシピで構成される。レシピはビルド対象のリポジトリのURIとビルド用のパラメータをまとめたもの。
次にLinuxの新定番Yoctoを使ってみよう!を読んでみました。ビルド手順を含めた概要がさらっと書いてあります。これは連載モノの2番目の記事ですが、興味がある方は1番目から順に読んでみてください。これも気になったところを抜粋しました。
・Yocto Projectは、BitBakeというビルドツールとOSSパッケージをビルドするためのレシピを統合し、組み込みLinuxディストリビューションを標準化するために立ち上げられたLinux Foundation傘下のプロジェクトである。
・キャッチフレーズは、”Don’t Build a Frankenstein OS”で、デバイス毎に継ぎ接ぎして作るのではなく、OSは共通化していこうという想いが込められている。
・ビルドツールであるBitBake、リファレンスディストリビューションとしてレシピを集約したPoky、基本的なOSSパッケージのレシピを集めたOpenEmbedded Core、高信頼性のための機能等のOSSパッケージのレシピを集めたCollection of OpenEmbedded。
・チップ ベンダーが提供するLinux SDKの多くは、Yoctoをベースにしている。
・Wind RiverやMentor Graphics等の多くの組み込みシステム向けLinuxディストリビューションもYoctoをベースにしている。
まとめ
ひと昔はNXP(旧Freescake)のLTIBとか、Linaroなどのクロスコンパイラ単体で動作させる、みたいなパターンが見かけられましたが、ここ数年、Yoctoで組み込みLinuxを構築するケースが急増した気がします。
DTB(Device Tree Binary)で機種依存コードが外部参照になったため、カーネルコードが複数CPUで共通に使えるようになり大変便利。
私が仕事でLinuxを触らせてもらっていたカーネル2.6のころはarchの中を一生懸命探してドライバをちょこっと直してはビルドというのが一般的でしたので、短期間ですごい進歩をしています。
最初はNXPのi.mxシリーズ、AlteraのCyclone、Raspberry Piなど、複数のYocto環境をビルドして、色々エラーを発生させてみることをお勧めします 理由は各種BSPの共通項に気づいたり、エラーを解消するためにレシピなどを詳細に調査して手直しすることで、Yoctoの中身を知ることが出来るためです(自分がそうでした)。
しかしビルドだけ出来ても知識が深まっていかないので、1つの環境をじっくり弄ることも大事だと思います(私にはこれが足りていません)。というわけで当面は情報量が多いRaspberry Pi 3をYocto化していこうと思います(と書いて自分にプレッシャーを与えていますw)。
ITスキルを身につけると条件の良い転職が可能になる
ITスキルを身につけると条件の良い転職が可能になります。当ブログがそのキッカケになったら幸いです。