2011年2月18日金曜日

Camangi FM600 how to build tun.ko module.

rootがとれたところで、おきまりのtunnel deviceのビルド。Camangiはkernelを公開してないようなので、いくらさがしてもみつけられなかった、FM600は似たような構成のハードがほかの会社からもでていて、おそらくどこかのOEMなのだろう。msmのkernelならいけそうな気がしたので、android.git.kernel.orgからmsmを一式ダウンロードして、ビルドしてみた。FM600は/proc/config.gzにビルド時のconfigが保存されているので、これを取得しておいた。

kernel version : 2.6.32.9
1.androidのgitリポジトリからmsmのkernel一式をダウンロードする。
git clone git://android.git.kernel.org/kernel/msm.git
2.msmの現在のバージョンは2.6.35なのでブランチをたどって2.6.32をとりだす
  まず現在のbranchを確認
  git branch
  * android-msm-2.6.35
3.ブランチを表示してみる
  git branch -r
    origin/HEAD -> origin/android-msm-2.6.35
    origin/android-msm-2.6.35
    origin/archive/android-msm-2.6.25
    origin/archive/android-msm-2.6.27
    origin/archive/android-msm-2.6.29
    origin/archive/android-msm-2.6.29-donut
    origin/archive/android-msm-2.6.29-nexusone
    origin/archive/android-msm-2.6.32
    origin/archive/android-msm-htc-2.6.25
    origin/archive/msm-2.6.25
4.現在のブランチを2.6.32へ変更
git checkout --track -b android-msm-2.6.32 origin/archive/android-msm-2.6.32
  ..
  .

  変更されたか確認

  git branch
  * android-msm-2.6.32
  android-msm-2.6.35

  変更されていたらOK.
5.FM600からconfig.gzをとりだす
adb pull /proc/config.gz .

  展開

gunzip config.gz

  名前を.configにしてmsmディレクトリ直下にコピー

  cp config ../msm/.config
6.tun.koが生成されるようにmenuconfigしてモジュールだけビルドする
make menuconfig ARCH=arm
    Device Drivers => Network device support => Universal TUN/TAP device driver support [M]にする。
make -j2 ARCH=arm CROSS_COMPILE=/home/somewhere/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- modules
  drivers/net/tun.koができていたらOK

6.実機にコピーしてinsmodしてみる
adb push tun.ko /data/local/tmp
  adb shell
  chmod 755 /data/local/tmp/tun.ko
  insmod /data/local/tmp/tun.ko
  lsmod
  ..
  .
  dmesgなどでちゃんとインストールされたか、確認しておくのもいいでしょう

以外にすんなりinsmodできてしまったので、拍子抜けでしたね。某プログラムも問題なく動作したのでよしとしましょう。

0 コメント:

コメントを投稿