Android Zaurusの日記

ザウルスをアンドロイドにしてあげる
本館 Android Zaurus

2009-11-03

NetWalkerのカーネルとローダブルモジュールのビルド

13:08 | 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 <miklos@szeredi.hu>
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 は消してもいいよね?答えは聞いてないけど。とことで。

hitoribloghitoriblog 2009/11/04 00:36 スーパーグッジョブです

oiraoira 2009/11/05 21:57 おかげさまでpl2303のドライバ動きました。
情報提供感謝、感謝です。

AlonAlon 2009/12/25 21:03 I tried following the instructions (using translate.google.com), and I'm getting an error:

Invalid module format.

when running dmesg the actual error is:
no symbol version for struct_module

I tried doing modinfo on the original modules (I backed them up), and the ones I compiled (I compiled on the pc-z1), and I can't see any difference. The file size however is smaller for what I compiled (cryptoloop.ko: mine 4000, original 5500~)

Any ideas?

AlonAlon 2009/12/25 21:50 ok, found my problem - I thought it would be faster to do "make modules" immediately.. no. Have to do a "make" first. that gets the right size. I'm sure if I'll compare I'll find the missing symbols and figure out something interesting about the build process :)

Thanks for these instructions!

androidzaurusandroidzaurus 2009/12/28 13:16 Alon,
Yep, you are right. Thanks for mentioning at least once "make" then make modules. It was my bad.

Connection: close