buildrootでカスタムディストリビューション作成

先日、SH7706LSRにDebianをインストールしてみた。ただ、Debianは公式なサポートがされているわけじゃないので、使い続けるのが不安という一面があった。また、si-linuxリポジトリからSH3版のetchが消えて、なぜかsargeにダウングレードしたことも大きい(ということで今動いているシステムでapt-getできなくなってしまった)。ちょっと代替策を調べるとemdebianとかOpenembeddedとか、さらにGentooも一時期SH4をサポートした時期があるらしいが、SH3では簡単にはいかなそう*1。そもそもユーザが少ないということもあり、少ない開発リソースをSH3にも割くことに乗り気ではなく、SH4に注力するという感じらしい。

ということで初心に戻ってBusyBoxを調べていたら、BuildRootというプロジェクトを発見した。これはBusyBox + uClibcベースのルートディスクをクロス開発するもので、実体はMakefileとパッチの集合からなっている。ツールチェインからBusyBox、uClibc、Linuxカーネルまでも一発のmakeでビルドできる。BusyBoxLinuxなどと同じcursesインタフェースで、必要なパッケージやコンフィグを選択して、makeを実行すると、必要なファイルがダウンロードされ、必要ならばパッチ適用してビルドされる。最後にtarで固めたルートディスクイメージができるので、これをSDカードに展開すればOKだ。

/etc以下の設定ファイルはいくつかターゲット環境に合わせて修正が必要だろう。/etc/fstab、/etc/securetty、/etc/network/interfacesあたりとか。あとタイムゾーンも。

# echo "JST-9" >/etc/TZ

BusyBoxは何度か使ったことがあったけど、ずいぶん便利になったものだなぁ。まずツールチェインのビルドではまって数日無駄にしたりとかしたものだったけどw、自動化されているものな。割とパッケージも充実していてPythonも2.7.xが使えた。ちゃんとメンテされてそうだし、今の用途には必要十分だな。

SHじゃなくても、ARMやMIPSに興味があるけど、実物ないしって場合は、ビルドしたカーネルとルートディスクをQEMUで動かすという手もあるね。

*1:違いはFPUとキャッシュ周りぐらいなので、頑張れば共通化できるのかもしれないけど。