OpenZaurus開発環境

引き続き、OpenZaurusの開発環境というのを整えてみた。ちょっと特殊な開発環境になっていて、予め定義されたスクリプトファイルを実行すると自動的にネットワークからtarballを落としてきてビルドするというイメージに近い。
参考にしたというか、丸写しにしたのはOpenEmbeddedのGettingStartのページ

Fedora Core 5の場合、追加のパッケージとして必要になるのは monotone と bitbake というパッケージ。
monotoneはversion-0.25でなければならないので、Fedora Extraにある0.26のパッケージではダメで、SRPMを自分でビルドしておいた。(monotone-0.25-1.i386.rpm)
bitbakeはFedora Extraにあるものをそのまま適用すればOK。OpenEmbeddedの推奨バージョンとやや違うが、あまり問題はないようだ。

この2つが終わると、OpenEmbeddedの環境構築。
1. ディレクトリを掘る

% mkdir ~/corgi && cd ~/corgi

2. パッケージ群のリビジョン情報が格納されているデータベースファイルをダウンロード
$ wget http://www.openembedded.org/snapshots/OE.db.bz2
$ bunzip2 OE.db.bz2

3. OpenEmbeddedをチェックアウト
$ monotone --db=./OE.db checkout --branch=org.openembedded.oz354x

これで、~/corgi/org.openembedded.oz354x というディレクトリが作成され、その中にダウンロードされたパッケージ群が放り込まれる。
4. Local Configurationファイルの編集
$ mkdir -p ~/corgi/build/conf
$ mkdir -p ~/corgi/sources
$ cp ~/corgi/org.openembedded.oz354x/conf/local.conf.sample \
~/corgi/build/conf/local.conf
$ vi ~/corgi/build/conf/local.conf

以下の記述を加える。既存のエントリが存在する場合は上書き。
DL_DIR   = "/home/kaigai/corgi/sources"
BBFILES := "/home/kaigai/corgi/org.openembedded.oz354x/packages/*/*.bb"
PATH = /opt/cross/bin:/bin:/usr/bin
MACHINE = "c7x0" <- 機種によって違う
TARGET_ARCH = "arm"
TARGET_OS = "linux"

5. 環境変数の設定
私の場合は以下の記述を ~/.bashrc に追加した。

export BBPATH=${HOME}/corgi/build:\
${HOME}/corgi/org.openembedded.oz354x

以上で環境設定は終わり。

これで、以下のコマンドを実行するとビルドが始まってくれる。

$ bitbake virtual/kernel ← カーネルの場合
$ bitbake busyboxbusyboxの場合
$ bitbake sysvinit ← sysvinitの場合

私の場合、モチベーションがOpenZaurusSELinuxを載せるということなので、パッケージ全体をリビルドしたいというモチベーションは0
とりあえずこれでカーネルは再ビルドできます。

でも、これでカーネルを差し替えるとパッチがコンフリクトしたりするので、実はバッチファイルを見ながらパッチを手で当てて git ツリーを作ったというのは秘密だ。:)