SELinux on OpenZaurus(2)

次に、カーネルの構築
本道としては、bitbakeのビルド手順ファイル(linux-openzaurus_2.6.16.bbなど)を編集して俺パッチを当てるよう修正するというのが筋だが、面倒なので以下のような手順で行った。

1.通常カーネルの作成

% cd ~/corgi
% bitbake virtual/kernel
しばらく時間がかかるが、これでノーマルのカーネルが作成される。
ただ、ここでの目的はカーネルイメージの作成ではなく、OpenZaurus用のパッチが全て適用された後のカーネルソースツリーを取得することにある。
カーネルソースツリーは ~/corgi/build/tmp/work/linux-openzaurus-2.6.16-r38 に配置されるので、このディレクトリをどこか適当な場所にコピーする。
私は ~/corgi/build/linux-2.6.16-corgi にコピーした。場所はどこでもよい。

2.環境変数の設定
ロスコンパイラの存在するパスに環境変数PATHを設定する。

% export PATH=~/corgi/build/tmp/cross/bin:${PATH}

3.俺パッチの適用
現時点では、OpenZaurusのカーネルにXATTRサポートが含まれていないので、2.6.16用にバックポートしたXATTR/JFFS2パッチを適用する。
このパッチは以下のURLからダウンロードできる。
http://www.kaigai.gr.jp/pub/jffs2-xattr-v6-backport-into-2.6.16.patch
% cd ~/corgi/build/linux-2.6.16-corgi
% cd linux-2.6.16
% patch -p1 < jffs2-xattr-v6-backport-into-2.6.16.patch

4.カーネルコンフィグの修正
ベースとなるカーネルコンフィグは arch/arm/configs/corgi_defconfig を用いて、これに若干の修正を加える。
% cp arch/arm/configs/corgi_defconfig .config
% make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
設定しなければいけないのは以下の項目
General setup  --->
[*] Auditing support
File systems --->
Miscellaneous filesystems --->
[*] JFFS2 XATTR support (EXPERIMENTAL)
[*] JFFS2 POSIX Access Control Lists
[*] JFFS2 Security Labels
Security options --->
[*] Socket and Networking Security Hooks
[*] NSA SELinux Support
SELinux関連のコンフィグオプションで、他に指定するものがあればOnにしておく。

5.カーネルのビルド

% make ARCH=arm CROSS_COMPILE=arm-linux-
ビルドに成功したら、arch/arm/boot/zImage というファイルが作成されている。
これが、OpenZaurus用のカーネルイメージファイルである。