イマドキ、組み込みLinuxはYoctoが主流です。Yoctoは自動でアレコレやってくれる反面、ビルド中に何が行われているかイマイチわかりにくい。今回は大まかな流れをまとめ、私がわかってないポイントを探ります。

【関連記事】
  • 概要

まずは調べてみる。Yoctoの概要(Qiita)を読んでみた。めちゃめちゃわかりやすい…。ビルド手順などが書いてないので最初に読むとイマイチかもだが、一度bitbakeしたことがある人が読むとよさげ。レイヤ、レシピの関係などが図示されていていい感じ。せっかくなので気になったところを抜粋してみる。
・YoctoはReferenceが読みにくく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をベースにしている。
  • ひとりごと
ここ数年、Yoctoで組み込みLinuxを構築するケースが増えた気がする。ひと昔はNXP(旧Freescake)のLTIBとか、Linaroなどのクロスコンパイラ単体で動作させる、みたいなパターンが見かけられたが、最近はYoctoが多いように思う。

DTB(Device Tree Binary)で機種依存コードが外部参照になったため、カーネルコードが複数CPUで共通に使えるようになったのも、すごい進歩だと思う。私が仕事でLinuxを触らせてもらっていたカーネル2.6のころはarchの中を一生懸命探してドライバをちょこっと直してはビルドしていたのが懐かしい。

私もYoctoを弄り倒したい欲求があるのだが、ここ5年ぐらいプロジェクトマネジメント的な業務に忙殺され、まとまった時間をLinux開発にあてることが出来てない。なので今年2月ぐらいから当ブログで技術的欲求を解消している次第である…。と、これを書くことで技術的なモチベーションが上がる感覚がある。夏バテも落ち着いてきたしまた始めるか。

最初はNXPのi.mxシリーズ、AlteraのCyclone、Raspberry Piなど、複数のYocto環境をビルドして、色々エラーを発生させてみることをお勧めする。理由は各種BSPの共通項に気づいたり、エラーを解消するためにレシピなどを詳細に調査して手直しすることで、Yoctoの中身を知ることが出来るためである(自分がそうだった)。しかしビルドだけ出来ても深まっていかないので、1つの環境をじっくり弄ることも大事だと思う(私はこれが足りていない)。というわけで当面は情報量が多いRaspberry Pi 3をYocto
化していこうと思う(と書くと自分にプレッシャーを与えることが出来る)。

続く
IMG_20190830_180814

スポンサードリンク