1: 2010-08-30 (月) 05:55:18 yuji ソース 2: 2010-08-30 (月) 07:46:55 yuji ソース
Attached file: unpack-bootimg.zip, Attached file: repack-bootimg.zip, Attached file: split_bootimg.zip
Line 1: Line 1:
 +#contents
 +
*kernelのコンパイル [#n214438c] *kernelのコンパイル [#n214438c]
Androidのkernelをソースからコンパイルしてみる。 Androidのkernelをソースからコンパイルしてみる。
Line 39: Line 41:
結構時間がかかる。~ 結構時間がかかる。~
kernelは,~/android/kernel/cm-kernel/arch/arm/boot/zImage に保存される。~ kernelは,~/android/kernel/cm-kernel/arch/arm/boot/zImage に保存される。~
 +
 +**WiFi kernelモジュールのコンパイル [#r49724ff]
 +なぜかこの状態だとwifiが不安定になるらしい~
 +wifiドライバーをモジュールとしてコンパイルして,それをリンクするようにする。
 ++cd ~/android/system/system/wlan/ti/sta_dk_4_0_4_32~
 ++KERNEL_DIR=~/android/kernel CROSS_COMPILE=$CCOMPILER ARCH=arm make -j`grep 'processor' /proc/cpuinfo | wc -l`~
 +でコンパイルする~
 ++できたモジュールのファイルを上書きして変更する。
 + adb shell mount -o remount,rw /system~
 + adb shell cp /system/lib/modules/wlan.ko /system/lib/modules/wlan.ko.backup~
 + adb push wlan.ko /system/lib/modules/wlan.ko~
 +リブートすれば,新しいwlan.koをkernelが使うようになる。
*boot.imgの作成 [#m7e8073d] *boot.imgの作成 [#m7e8073d]
Line 61: Line 75:
kernelをコンパイルした後,kernelファイルとこれらのファイルをマージしてboot.imgを作成する。~ kernelをコンパイルした後,kernelファイルとこれらのファイルをマージしてboot.imgを作成する。~
これをmtd2にflashすると,bootloaderがkernelを起動してくれる。 これをmtd2にflashすると,bootloaderがkernelを起動してくれる。
 +
 +アンパックとマージには,&ref(unpack-bootimg.zip);&ref(repack-bootimg.zip);を使うことが出来る。
 +
 +***boot.imgの分解 [#q862084e]
 +とりあえず今あるboot.imgを分解して,kernelとramdiskにわける。~
 +最初の2kbyteを飛ばして0x1F8B(gzipのヘッダー)を見つける,次の0x1F8Bまでがkernelになる。~
 +その次の0x1F8Bまでがramdiskになる。バイナリエディター等やddなんかで書き出せば取り出せる。ファイルはgzip圧縮されているんで解凍すれば,ramdiskに中にあるファイルを編集できるようになる。
 + gunzip -c ../your-ramdisk-file | cpio -i
 +上の,unpack-bootimgを使うほうが簡単だけど・・・
 +
 +ramdiskを編集したら,コンパイルしたkernelと共に再度パッキングする。~
 +まず,ramdiskをgzipで圧縮する。
 + find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
 +新しいkernelとマージする。
 + mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel your-kernel-file --ramdisk newramdisk.cpio.gz -o mynewimage.img
 +上の,repack-bootimgを使うほうが簡単だけど・・・
 +
 +もしくは,&ref(split_bootimg.zip);も使える。
 +分解するときは,
 + % ./split_bootimg.pl boot.img
 + % mkdir ramdisk
 + % cd ramdisk
 + % gzip -dc ../boot.img-ramdisk.gz | cpio -i
 + % cd ..
 +とやって,作業後マージするには,
 + % mkbootfs ./ramdisk | gzip > ramdisk-new.gz
 + % mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img
 +でマージする。
 +
 +*HT-03Aに新しいboot.imgをflashする [#ua851e8c]
 +/sdcardに新しいイメージをコピーする
 + adb push ./mynewimage.img /sdcard
 +adb shell上で,
 + # cat /dev/zero > /dev/mtd/mtd2
 +で,現在のbootを綺麗サッパリ消して
 + # flash_image boot /sdcard/mynewimage.img
 +として,書き込む。
 +リブートして,ちゃんとブートすればOK。ダメだったら,リカバリモードで前に戻す。


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 613, today: 1, yesterday: 1