SELinux on OpenZaurus(1)

SELinux を OpenZaurusu上で動作させた時のメモ。
手順などについてむねとうさんのサイトの方がはるかに詳しい記述があるが、少なくともKaiGaiはこのような手順で行いましたということで。

開発環境のインストール
先日のメモと重複するが、改めて開発環境のインストールについて記す。

OpenZaurusの開発環境として、リビジョン管理システム monotone と、ビルド自動化ツールの bitbake が必要になる。
この2つは共に Fedora Extra に含まれているが、monotoneのバージョンは0.25でなければならない(*1)ので Fedora Extraのパッケージを利用することはできない。bitbakeはRPMパッケージをそのままインストールすればOK。
(*1)monotoneの利用するデータベースファイルのフォーマットが変更になっている

そこで先ず、monotoneのRPMパッケージを作成することにする。
以下に、monotoneのtgzやrpm,srpmのファイルが転がっているが、
http://www.venge.net/monotone/downloads/
monotone-0.25のFC5用RPMパッケージは存在しないので、monotone-0.25-1.src.rpmをダウンロードしてこれをrpmbuildした。ビルドには意外に時間を要する(マシンが遅いだけ?)。
monotone-0.25-1.i386.rpm

これらのパッケージのインストールが終わったら、OpenZaurus用の設定を行う。
1.作業用ディレクトリの作成

% mkdir -p ~/corgi && cd ~/corgi
私の場合は、/home/kaigai/corgi 以下を作業用ディレクトリとして利用した。

2.monotone用databaseファイルの展開

% wget http://www.openembedded.org/snapshots/OE.db.bz2
% bunzip2 OE.db.bz2

3.org.openembedded.oz354x をチェックアウト
% monotone --db=./OE.db pull monotone.openembedded.org org.openembedded.oz354x
% monotone --db=./OE.db checkout --branch=org.openembedded.oz354x
これが終わると~/corgiの下には org.openembedded.oz354x ディレクトリが作成され、bitbake用のビルド指示ファイルが格納されることになる。

4.Local Configurationの作成

% mkdir -p ~/corgi/build      ← ビルドディレクトリ
% 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

ここで 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.環境変数の設定
環境変数BBPATHを設定する。私は.bashrcに以下の記述を追加。
export BBPATH=${HOME}/corgi/build:${HOME}/corgi/org.openembedded.oz354x

以上で下準備は終わり。~/corgi に移動して以下のコマンドを叩けば、ビルド手順ファイルに基づいてOpenZaurus用のカーネル/プログラムのビルドが実行される。
% bitbake virtual/kernel ← カーネルの場合
% bitbake busyboxbusyboxの場合
% bitbake sysvinit ← sysvinitの場合

この時、環境の構築に用いるクロスコンパイラや、ライブラリの類も同時に構築される。
ロスコンパイラは ~/corgi/build/tmp/cross/bin に格納され、arm-linux-XXX という名前が付けられている。例えば、gccならarm-linux-gcc という具合である。
また、arm-linux-gccを用いた場合のヘッダファイル・ライブラリの位置はそれぞれ以下の通り。
~/corgi/build/tmp/cross/arm-linux/include
~/corgi/build/tmp/cross/arm-linux/lib
ARM用のライブラリを追加する場合には、実環境の他にもこのディレクトリにコピーする必要がある。

なお、これらの記述は以下のサイトの記載を参考にしています。
http://www.openembedded.org/wiki/GettingStarted