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 --->SELinux関連のコンフィグオプションで、他に指定するものがあればOnにしておく。
[*] 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
5.カーネルのビルド
% make ARCH=arm CROSS_COMPILE=arm-linux-ビルドに成功したら、arch/arm/boot/zImage というファイルが作成されている。
これが、OpenZaurus用のカーネルイメージファイルである。