ext2.ko
なんかをつくったりするためのやりかたのメモ。基本的にはBuilding for Dreamで環境を整える。
kernelだけならkernel/msmの
refs/heads/android-msm-htc-2.6.25
というrevisionをとってくればよいだけだとおもう。kernel versionがかわっていたら違うrevisionをとってくること。まあkernelのgitだけより全部のmoduleをrepoでとってきたほうがprebuilt
にtoolchainなんかもはいっているのでそのほうが楽かも。実機のkernelがどのversionかは
uname -r
などで確認。uname
はbusybox
にはいってる。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_COMPILE
はgcc
などへの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
なんかを自分で作ることができる。