2019 年 10 月 23 日
組込みOS最前線 #2 Yoctoを使った組込みLinuxの開発方法
組込みOS最前線 #2「OSS的製品開発」セミナーに参加した記者による各セッションのレポートをお届けします。
組込みLinuxの開発方法
サイバートラストでは、IoTや組込みLinuxの最新動向を紹介するセミナーを開催しています。組込み機器におけるLinux OSの利用を推進するために、組込みOSや関連技術、コミュニティの動向などを共有することを目的にしたものです。
ここでは、セミナーシリーズ「組込みOS最前線」の第2回として開催された「OSS 的製品開発セミナー」から、山根大典氏によるセッション「組込みLinuxの開発方法」の模様をレポートします。
山根氏のセッションでは、Yoctoプロジェクトのツールを使った組込みLinuxのビルドの方法が解説されました。
カスタムLinuxを開発するためのOSS群
山根氏はまず、Yocto Projectについて説明しました。Yocto Projectは、組込み用カスタムLinuxを開発するためのオープンソースソフトウェア(OSS)群です。組込みLinuxをビルドするための環境を提供しています。CPU非依存で、ソースコードベースのためボードにあわせて最適化でき、クロスコンパイル環境(SDK)も提供されることを、山根氏は特徴として紹介しました。
Yocto Projectの中心となる共通要素として、リファレンス用のビルドシステム「poky」と、ビルドエンジンの「bitbake」があります。「Yocto Projectは、組込み向けLinuxディストリビューションだと説明されることもあるが、実際はもっと広い範囲を指している」と山根氏はコメントしました。
Yocto Projectの成果を使って組込みLinuxをビルドするときには、bitbakeがレシピ(手順書)を元に処理を実行します。bitbakeはレシピを解析し、ソースコードをダウンロードして展開し、パッチを適用し、コンパイルしてパッケージ化します。
そのほか、bitbakeではレイヤーごとにレシピを用意し、レイヤーを重ねることで既存のレシピをカスタマイズできることも、山根氏は紹介しました。
Renesas BSPを使った実際のビルド手順
続いて、Renesasのボードをターゲットに、Renesas BSPを使った組込みLinuxをビルドする実際の手順を山根氏は解説しました。
ターゲットはRenesas Salvator-X boardで、ホストPCのOSはUbuntu 16.04です。
まずホストPCに、必要なプロプライエタリソフトウェアやパッケージをインストールします。続いて、gitを使い、poky本体や、Linaroのツールチェイン、meta-openenbedded、meta-renesasをダウンロードします。その上で、ターゲットのプロプライエタリソフトウェアをダウンロードするところまでが準備となります。
準備ができたらビルド環境をセットアップします。これには、BSPが提供するサンプルから目的にあった設定ファイルを元に、ターゲットのアーキテクチャやインストールするパッケージなどを設定します。
そのうえでビルドを実行します。Renesas BSPでは、最低限の機能のみのcore-image-minimalをはじめ、複数種類のイメージのビルドに対応しています。
ビルドが完了すれば、生成物がいろいろできます。そのうちLinuxの起動に必要なバイナリとして、カーネルイメージ、デバイスツリー(ハードウェア情報)、rootfs、ブートローダーの4つがあると山根氏は説明しました。
そして、これらのバイナリから起動する方法として、TFTPブードとeMMC/SDカードブートを山根氏は挙げました。
レイヤを使ったカスタマイズ
最後に山根氏は、レイヤを使ったカスタマイズの概要も紹介しました。
まず、カスタムボード用のパッチや追加ソースコードを作成しておきます。そして、新しいレイヤを定義してレシピを追加し、パッチや追加ソースコードをレイヤに含めてリリースすると、山根氏は説明しました。
参加者は、組込みシステム開発のための開発方法は多くの知見が広く公開されていることがないため、非常に役立つと考えられた方も多かったのではないでしょうか?今後も、組み込みOS最前線から、興味深いテーマを選んでお届けしたいと思います。
本記事に関連するリンク
産業グレードの長期利用を実現する IoT・組込み用 Linux ディストリビューション 「EMLinux」を無償で評価していただけます。