NetWalkerのカーネルとローダブルモジュールのビルド
3Gモデム対応アップデート*1に伴いカーネルもアップデートされた。今までついていたカーネルバージョンのハッシュタグがなくなり、ローダブルモジュールが作りやすくなった。ので、カーネルとローダブルモジュールのビルドをもう一度*2まとめておく。
Canonicalのサイト*3もaraneo7に加えて、新たにaraneo14というソースのtarballがあるので、そちらを使う。ちなみに、7と14のdiffを読んでみたけど、サスペンド復帰時のサウンドのミュートとか、NANDの書き込みとかにもパッチがあたっている。ちゃんとメンテナンスされている。NetWalker、今後も安心して使えそう。
クロスコンパイラを準備するのもいいけど、NetWalker自身にがんばってもらうことにする。ただ、NAND上でビルドするのは怖いので、ext2でフォーマットしたSDカードを使う。というか、リカバリ用につくったSDからubi.imgを消して容量をあけて使っている。
$ cd /media/disk/work $ wget http://bit.ly/2BGszN $ tar zxvf linux-fsl-imx51_2.6.28-15.50fsl1araneo14.tar.gz
araneo14のURLをbit.lyしたので上記のままダウンロードできるはず。ソースはjaunty-armというディレクトリに展開される。
$ cd jaunty-arm $ zcat /proc/config.gz > arch/arm/configs/netwalker_defconfig $ make netwalker_defconfig
.configに直接/proc/config.gzを展開して、make oldconfigしてもいいのだろうけど、だらだらとY/n/mとかに答えるのが面倒なので、defconfigを作る方が好き。これで準備できたので、このままビルドしてもいいのだけれど、カーネルバージョンが2.6.28.10になり、NetWalkerの2.6.28-15-araneoと完全には一致しない。そのため、Makefileをちょっと編集する。
$ diff -u Makefile.orig Makefile --- Makefile.orig 2009-11-03 00:00:00.000000000 +0900 +++ Makefile 2009-11-03 00:00:00.000000000 +0900 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 28 -EXTRAVERSION = .10 +EXTRAVERSION = -15-araneo NAME = Erotic Pickled Herring # *DOCUMENTATION*
EXTRAVERSIONを.10から-15-araneoに変えるだけ。さてビルド。
$ time make
ゆ っ く り し て い っ て ね !
real 72m6.027s user 60m45.120s sys 5m24.210s
ゆ っ く り し て い っ た 結 果 が こ れ だ よ !
$ modinfo fs/fuse/fuse.ko filename: fs/fuse/fuse.ko alias: char-major-10-229 license: GPL description: Filesystem in Userspace author: Miklos Szeredidepends: vermagic: 2.6.28-15-araneo preempt mod_unload modversions ARMv7 $ sudo insmod fs/fuse/fuse.ko [sudo] password for az: $ lsmod Module Size Used by fuse 52092 0 ks79xx_sdio 60648 0
あとは、make menuconfigで作りたいモジュールを設定して、再びmake modules。/libにコピーしてdepmod。
$ make menuconfig $ make zImage && make modules $ sudo cp drivers/hoge/fuga.ko /lib/modules/`uname -r`/kernel/drivers/ $ sudo depmod -a
さて、これでもう /lib/modules/2.6.28-271-gec75a15 は消してもいいよね?答えは聞いてないけど。とことで。