🐧 Linux 総合学習プラットフォーム

組込みビルド Yocto/Buildrootの用語集(20語)

組込みビルド Yocto/Buildrootに関する Linux 用語を、読み・意味・補足つきでまとめました。

bbappendびーびーあぺんど
既存レシピを丸写しせず、差分だけを重ねて上書きする追記ファイル。
元レシピ foo_1.0.bb に対し、自分のレイヤに foo_%.bbappend を置くと、Yoctoは元レシピの上にその追記内容を重ねて解釈する。元ファイルには一切触れずに、設定の追加やパッチ適用ができる。本に貼る付箋のようなもので、上流の更新に強く、変更点の管理もしやすい。%はバージョン部分のワイルドカード。
BitBakeビットベイク
Yoctoでレシピを依存解決して実行するビルドエンジン。
レシピ(.bb)を解析し、fetch→unpack→patch→configure→compile→install といったタスクを依存関係に従って実行するYoctoの中核ツール。bitbake ターゲット名 で呼び出し、ターゲットには core-image-minimal などのイメージレシピや個別パッケージ名を指定する。
BR2_PACKAGE_びーあーるつーぱっけーじ
Buildrootで各パッケージの有効・無効を表す設定名の接頭辞。
menuconfigで選べる個々のパッケージには、内部的に BR2_PACKAGE_ で始まる設定シンボルが割り当てられている。たとえばBusyBoxならBR2_PACKAGE_BUSYBOX。項目にカーソルを合わせてヘルプを開くと、この名前や依存関係を確認できる。何を有効化したかを記録・共有するときの手がかりになる。
Buildrootビルドルート
MakefileとKconfigで組込みLinuxイメージを生成する軽量ビルドシステム。
クロスツールチェーン・カーネル・ルートファイルシステムを一括で作る組込み向けビルドシステム。構成がMakefileとKconfigだけで単純なため理解しやすく、小規模機器や学習・試作に向く。設定は .config に保存し、再利用しやすい形が defconfig。成果物は output/images/ に出力される。
defconfigデフコンフィグ
ボードや構成ごとに用意された既定設定ファイル。一括で .config を作れる。
差分だけを保存した最小の設定ファイル。Buildrootでは make ボード名_defconfig で configs/ 内の定義から .config を生成でき、Linuxカーネルでも arch/*/configs/ に同様の仕組みがある。フル設定を持ち歩かず、設定を再現・共有するために使う。
do_compile / do_installどぅーこんぱいる どぅーいんすとーる
Yoctoレシピ内で、ソフトのビルドと配置の手順を書くタスク関数。
Yoctoのレシピ(.bb)は、do_で始まる複数のタスクを順に実行して1本のソフトを組み込む。do_compileにビルド手順、do_installに成果物の配置手順を書く。do_installの宛先は実機の/ではなく一時領域${D}を頭に付ける(例 ${D}${bindir})。単純なソフトでは定型クラスの継承でこれらを自分で書かずに済むことも多い。
Linuxカーネルリナックスカーネル
ハードウェアを抽象化しプロセスやメモリを管理するOSの中核。
CPU・メモリ・デバイスを管理し、ユーザ空間のプログラムにシステムコールを提供するOSの心臓部。組込みではターゲットに合わせて構成を絞り、zImageやuImage、bzImageといった形式でビルドする。ビルドシステムはこのカーネルをrootfs・ブートローダと一括で生成する。
post-buildスクリプトぽすとびるどすくりぷと
イメージ化の直前に自動実行される、rootfsを仕上げるスクリプト。
Buildrootのビルド終盤、ファイルシステムイメージを作る直前に走るフック。rootfsのパスが第1引数として渡され、バージョン埋め込みや不要ファイル削除など最後の加工を行える。overlayが「ファイルを置く」係なら、post-buildは「置いたものを加工する」係。毎回のビルドで走るため、重い処理は避け軽い仕上げに留めるのがよい。
rootfsオーバーレイるーとえふえすおーばーれい
指定フォルダの中身を、完成後のrootfsへそのまま重ねてコピーする仕組み。
Buildrootで、パッケージ選択では表せない自作の設定ファイルや起動スクリプトをイメージに含めるための仕掛け。overlay/etc/app.conf のように置いたファイルが、rootfsの/etc/app.confとして同じ構造で現れる。menuconfigのSystem configurationでオーバーレイ用フォルダのパスを指定する。複数指定も可能。
SRC_URIそーすゆーあーるあい
Yoctoレシピで、ソースコードの取得元を指定する変数。
レシピが対象ソフトのソースをどこから取るかを書く行。ネット上のtarballのURL、gitリポジトリ、あるいはレシピの隣に置いたファイルを file:// で指すこともできる。取得したソースは作業ディレクトリに展開され、do_compile以降の処理に渡る。ライセンス宣言(LICENSE)とともに、レシピの土台となる情報。
wicイメージうぃっくいめーじ
Yoctoが生成する、パーティション構成込みの書き込み用ディスクイメージ。
拡張子 .wic を持つ、microSDやeMMCへ丸ごと書き込むためのイメージ。ブートローダ・カーネル・rootfsが、パーティションの区切りごと1つのファイルに収まっている。Buildrootのsdcard.imgに相当する立ち位置で、ddなどで媒体全体へ転写して使う。中身の配置は.wksという定義ファイルで決められる。
Yocto Projectヨクトプロジェクト
レイヤとレシピで組込みLinuxを構築する大規模ビルドフレームワーク。
レシピ・レイヤ・BitBakeを中核とする組込みLinuxのビルドフレームワーク。リファレンス実装はpoky。レイヤを重ねて構成を差分管理でき、パッケージ単位の更新やSDK生成にも対応するため、長期保守の商用製品で広く使われる。学習コストは高い。
イメージイメージ
ストレージにそのまま書き込める形にまとめられた成果物ファイル。
カーネルやルートファイルシステムを、SDカードやeMMCに dd 等で書き込めるよう1つにまとめたファイル。.img・.ext4・.wic・.sdcard など形式は様々。Yoctoでは core-image-minimal のように「イメージ」を生成するレシピ自体を指して使うこともある。
クロスツールチェーンクロスツールチェーン
PC上でターゲットCPU向けの実行ファイルを作るコンパイラ等一式。
開発機(例: x86_64のPC)で動作しながら、別アーキテクチャ(例: ARM)向けのバイナリを生成するコンパイラ・リンカ・ライブラリの組。クロスコンパイルの基盤で、arm-linux-gnueabihf-gcc のように接頭辞が付く。BuildrootもYoctoもビルドの最初にこれを構築または取得する。
シリアルコンソールしりあるこんそーる
UART経由で基板の起動メッセージ表示やログインを行う入出力口。
画面もキーボードも無い基板を、USB-UART変換ケーブル1本で操作するための窓口。パソコン側では/dev/ttyUSB0などとして見え、picocomやminicomでつなぐ。電源投入直後のブートローダのメッセージから追えるため、ネットワークやOSが立ち上がる前の段階の不具合も観察できる、組込みデバッグの基本手段。
ブートローダブートローダ
電源投入直後に動き、カーネルを読み込んで起動する最初のプログラム。
ストレージからカーネルとデバイスツリーをメモリへ読み込み、引数を渡してLinuxを起動する小さなプログラム。組込みではU-Bootが代表的。ビルドシステムはカーネル・rootfsと並んでこのブートローダも生成・配置の対象とする。
フラッシュ(書き込み)ふらっしゅ
完成したイメージをmicroSD等の記憶媒体へ丸ごと転写する作業。
sdcard.imgや.wicといった「媒体1枚まるごとの写し」を、ddなどでmicroSDへ1バイト単位でコピーすること。ブートローダ・カーネル・rootfsがパーティションごと丸ごと書かれる。書き込み先(of=)を内蔵ディスクと取り違えるとOSごと消えるため、lsblkでの事前確認が欠かせない工程。
ルートファイルシステムルートファイルシステム
/ 以下に展開されるコマンド・ライブラリ・設定一式。rootfsと略す。
起動後のLinuxでルートディレクトリ(/)にマウントされるファイル群。BusyBoxなどのコマンド、共有ライブラリ、/etc の設定などを含む。ビルドシステムはこれを ext4 イメージや tar アーカイブ、cpio などの形式で出力する。カーネル・ブートローダと並ぶシステムの主要部品。
レイヤレイヤ
関連するレシピや設定をまとめたYoctoの構成単位。meta- で始まることが多い。
複数のレシピ・設定・クラスをひとまとめにしたディレクトリで、meta-bsp や meta-oe のように meta- で始まる名前が一般的。レイヤを重ねることでベース構成に差分を足す形でカスタマイズでき、構成の分離・再利用・保守を容易にする。bblayers.conf で有効化する。
レシピレシピ
1つのソフトの取得・設定・ビルド・インストール手順を書いた .bb ファイル。
Yoctoにおける「あるソフトをどこから取得し・どう設定し・どうビルドし・どこへインストールするか」を記述した定義ファイル(.bb)。BitBakeがこの記述に従ってタスクを実行する。共通設定を切り出した .bbappend や .inc と組み合わせて使うこともある。

▶ 学習アプリで「引く」を使う