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 Szeredi 
depends:        
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 は消してもいいよね?答えは聞いてないけど。とことで。