Monday, January 12, 2009

Android Dream phone の kernel module のbuild

ext2.koなんかをつくったりするためのやりかたのメモ。
基本的にはBuilding for Dreamで環境を整える。
kernelだけならkernel/msmrefs/heads/android-msm-htc-2.6.25というrevisionをとってくればよいだけだとおもう。kernel versionがかわっていたら違うrevisionをとってくること。まあkernelのgitだけより全部のmoduleをrepoでとってきたほうがprebuiltにtoolchainなんかもはいっているのでそのほうが楽かも。
実機のkernelがどのversionかはuname -rなどで確認。unamebusyboxにはいってる。
CONFIG_LOCALVERSION_AUTOがセットされおりgit revisionの情報がkernel moduleのversionに追加されているため、git revisionをあわせる必要がある。kernel/scripts/setlocalversionをみればわかるようにgit describeの結果あたりが使われているのでそれがあうようなrevisionにする。git logでcommit logがわかるので、commitの行のhash値をつかってcheckoutしつつgit describeがそれっぽいのになるのにあわせる。
% git checkout commit行のhash値
% git describe
あとは/proc/config.gzをとってきて、必要なconfigをしなおしてmake。gccのバージョンは実機の/proc/versionなどでチェック。CROSS_COMPILEgccなどへのprefixをセットする。
% adb pull /proc/config.gz ./config.gz
% gunzip config.gz
% mv config .config
% vi .config # or make ARCH=arm menuconfigなど
% make ARCH=arm \
 CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
あとはできたext2.koなどをadbでpush。
% adb push fs/ext2/ext2.ko /data/bin/ext2.ko
/sbin/modinfo fs/ext2/ext2.koしてdependsしている*.koもpushするのを忘れないように。dependsしているmoduleがloadされていないとエラーになります。
# insmod /data/bin/ext2.ko
insmod: init_module '/data/bin/ext2.ko' failed (No such file or directory)
# insmod /data/bin/mbcache.ko
# insmod /data/bin/ext2.ko
これでkernelのversionがあがっちゃってもext2.koなんかを自分で作ることができる。

Monday, January 5, 2009

Androidの/etc/resolv.conf

Android Dream PhoneでDebianだと、networkによっては nameserverがみつからなくて困ることがある。Android appなら問題ないけど、debianのプログラムだと/etc/resolv.confをちゃんとつくる必要があるのだ。nameserverの情報はgetpropコマンドでとれるのでchrootする前に次のようなかんじでchrootの中のetc/resolv.confをつくっておけばよい。
getprop | \
 sed -n -e 's/^\[net\.dns.\]: \[\(.*\)\]/\1/p' \
   > etc/resolv.conf

Sunday, January 4, 2009

謹賀新年2009

遅ればせながら、あけましておめでとうございます。今年もよろしくお願いします。
年末年始は実家のほうに帰省していました。
31日: 実家へ移動。
FOMAの/dev/ttyACM0Input/output errorでopenできないのであせる。なんか何度かぬいたりさしたりいろいろ試しているとふいに繋るようになった。条件不明。いったん繋れば安定しているっぽい。
1日: 昼ごろ起きて御節料理。そのあとまた寝て起きたら晩飯。

2日: TV見たりしながらだらだら。
3日: 高校の同窓会へ。
11:30から。すごく久しぶりで懐しい。先生があんまりかわってない。というか、当時は今の我々より若かったみたいな話でみんな驚く。生徒は全体の1/3くらいが来ていたぽい。みんないろいろ活躍してるな。一次会は15:30に終了。
17:00から二次会。19:30ごろから三次会で22:00ごろにおひらき。終電まで余裕と思っていたら、乗り換えで50分待ちで終電になってた。田舎すぎる。
4日: 実家から東京へ。昼ごろに戻ってきていたのでその後明治神宮に初詣など。