Buildrootをカスタマイズする
Buildrootで最小イメージを作れるようになったら、次は「自分の欲しい形」に仕立てる番です。ここでは make menuconfig でパッケージやオプションをカタログから選び、その選択を defconfig として保存して再現する方法、rootfs へ好きなファイルを差し込む overlay、ビルド最後に走る post-build スクリプトまでを扱います。合言葉は「選ぶ→焼く→試す」。この小さな輪を何周も回すのが、組込みイメージ作りの本体です。
Buildroot で最小イメージを一度でも作れたなら、もう仕組みの半分は手に入っている。残りは「自分の欲しい部品を足し、余計なものを削り、その形を保存して何度でも再現する」ことだ。
最初のうちは、パッケージを1つ足すたびに手順を思い出せず、うまくいった設定も次の日には再現できない——これがよくあるつまずきだ。だが Buildroot はこの悩みに、はっきりした答えを用意している。
答えは2つの道具に集約される。設定を対話的に選ぶ make menuconfig と、選んだ結果を1枚のファイルに畳んで保存する defconfig だ。この2つを行き来するのが、カスタマイズの背骨になる。
🗂️ カタログから選ぶ make menuconfig
Buildroot のトップフォルダで make menuconfig を実行すると、青い画面のメニューが開く。ここが「何を作るか」を決めるカタログだ。
メニューは階層になっている。ターゲットCPUの種類、ツールチェイン、ブートローダ、カーネル、そして山ほどのユーザー空間パッケージが、フォルダのように枝分かれして並ぶ。
矢印キーで項目を移動し、スペースキーで on/off を切り替える。Enter でサブメニューに入り、Esc を2回で戻る。目当ての項目が探せないときは、スラッシュ / で検索できる。
💾 選んだ結果を保存する defconfig
menuconfig で選んだ内容は、その場では .config という作業ファイルに書かれる。ただしこれは中間ファイルで、大きく雑然としていて、そのまま保管するには向かない。
そこで make savedefconfig を実行する。すると「初期値から変えた項目だけ」を抜き出した、短くて読みやすい設定ファイルが得られる。これが defconfig(デフォルト設定)だ。
この defconfig をプロジェクトに保存しておけば、別のマシンでも make myboard_defconfig の一発で同じ設定を呼び戻せる。再現性は defconfig が担保する。
📦 パッケージを足す BR2_PACKAGE_*
menuconfig で選ぶ各パッケージには、内部的に BR2_PACKAGE_ で始まる名前が付いている。たとえば軽量ツール群の BusyBox なら BR2_PACKAGE_BUSYBOX という具合だ。
画面で項目にカーソルを合わせて h(ヘルプ)を押すと、その項目に対応する BR2_PACKAGE_ 名や依存関係の説明が読める。何を有効にしたか記録したいとき、この名前が手がかりになる。
📁 ファイルを差し込む rootfs overlay
パッケージ選択では表現できないものもある。自分で書いた設定ファイル、起動スクリプト、初期データなどを、完成した rootfs の決まった場所に置きたい場面だ。
そのための仕組みが rootfs overlay(ルートFSオーバーレイ)だ。あるフォルダを「重ね焼きの型」として指定すると、その中身がそっくりそのまま rootfs の同じ構造にコピーされる。
menuconfig の System configuration にある Root filesystem overlay directories に、この overlay フォルダのパスを指定する。複数指定もできる。
🔧 仕上げの post-build スクリプト
ビルドの最後、イメージに固める直前に「あと一手だけ加えたい」ことがある。バージョン文字列を書き込む、不要ファイルを消す、権限を直す、といった細かな仕上げだ。
これを担うのが post-build スクリプト(ビルド後スクリプト)だ。menuconfig の System configuration にある Custom scripts to run before creating filesystem images でスクリプトを指定できる。
post-build スクリプトには、rootfs のパスが第1引数として渡ってくる。だからスクリプト内では、そのパスを起点に $1/etc/... のようにファイルを触れる。overlay が「置く」係なら、post-build は「加工する」係だ。
🔁 選ぶ→焼く→試すを回す
ここまでの道具は、ばらばらに使うものではない。menuconfig で選び、make でイメージを作り、実機や QEMU で試し、気になった点をまた menuconfig に戻って直す——この輪を回すのが本体だ。
1周が終わるたびに make savedefconfig で defconfig を更新し、うまくいった状態を確定させておく。こうすれば、失敗しても直前の良い状態にいつでも戻れる。
最小イメージから始めて、パッケージを1つ、overlay を1枚、post-build を一手——と少しずつ肉付けしていけば、いつのまにか「自分の欲しい形」のイメージが手元に立ち上がっている。