2: 2010-08-30 (月) 07:46:55 yuji ソース
Attached file: unpack-bootimg.zip, Attached file: repack-bootimg.zip, Attached file: split_bootimg.zip
現: 2020-12-26 (土) 16:08:16 yuji ソース
Line 16: Line 16:
 cd ~/android/system  cd ~/android/system
-ソースをダウンロードする(CyanogenModのソースにしてみる)~ -ソースをダウンロードする(CyanogenModのソースにしてみる)~
- repo init -u git://github.com/CyanogenMod/android.git -b froyo+ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
 repo sync  repo sync
-コンパイラ環境を設定する~ -コンパイラ環境を設定する~
Line 28: Line 28:
 git clone git://github.com/CyanogenMod/cm-kernel.git  git clone git://github.com/CyanogenMod/cm-kernel.git
-その後,kernel .configをHT-03Aから持ってくるか,menuconfigなんかで作成する。~ -その後,kernel .configをHT-03Aから持ってくるか,menuconfigなんかで作成する。~
---持ってくる場合~+--端末から持ってくる場合~
 cd cm-kernel  cd cm-kernel
 adb pull /proc/config.gz /home/user_name/androkern/cm-kernel/config.gz  adb pull /proc/config.gz /home/user_name/androkern/cm-kernel/config.gz
 gunzip config.gz && mv config .config  gunzip config.gz && mv config .config
 +--kernel.imgから抜き出す場合~
 + scripts/extract-ikconfig boot.img > .config
--configし直す場合~ --configし直す場合~
 +用意した.confgファイルを元に適当に設定する。.configがないと最初から設定しなおしになる。
 make ARCH=arm CROSS_COMPILE=$CCOMPILER oldconfig  make ARCH=arm CROSS_COMPILE=$CCOMPILER oldconfig
 もしくは,  もしくは,
Line 38: Line 41:
とかして,.configを作成する。~ とかして,.configを作成する。~
-kernelをコンパイルする~ -kernelをコンパイルする~
- make ARCH=arm CROSS_COMPILE=$CCOMPILER+ make ARCH=arm CROSS_COMPILE=$CCOMPILER -j`grep 'processor' /proc/cpuinfo | wc -l`
結構時間がかかる。~ 結構時間がかかる。~
kernelは,~/android/kernel/cm-kernel/arch/arm/boot/zImage に保存される。~ kernelは,~/android/kernel/cm-kernel/arch/arm/boot/zImage に保存される。~
**WiFi kernelモジュールのコンパイル [#r49724ff] **WiFi kernelモジュールのコンパイル [#r49724ff]
-なぜかこの状態だとwifiが不安定になるらしい~+なぜかこの状態だとwifiが不安定になるらしい。~
wifiドライバーをモジュールとしてコンパイルして,それをリンクするようにする。 wifiドライバーをモジュールとしてコンパイルして,それをリンクするようにする。
+cd ~/android/system/system/wlan/ti/sta_dk_4_0_4_32~ +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`~++KERNEL_DIR=~/android/kernel/cm-kernel CROSS_COMPILE=$CCOMPILER ARCH=arm make -j`grep 'processor' /proc/cpuinfo | wc -l`~
でコンパイルする~ でコンパイルする~
+できたモジュールのファイルを上書きして変更する。 +できたモジュールのファイルを上書きして変更する。
Line 56: Line 59:
*boot.imgの作成 [#m7e8073d] *boot.imgの作成 [#m7e8073d]
**filesystem [#wb787241] **filesystem [#wb787241]
 +HT-03AにはFlash ROM上に,以下のようなROMパーテーションが作られている。
 cat /proc/mtd  cat /proc/mtd
 dev:    size  erasesize  name  dev:    size  erasesize  name
Line 66: Line 70:
mtd3=/system,mtd4=cache,mtd5=/dataにそれぞれmountされる。~ mtd3=/system,mtd4=cache,mtd5=/dataにそれぞれmountされる。~
mtd2はboot時使われるファイルで,mtd1はリカバリーモードで使われる。 mtd2はboot時使われるファイルで,mtd1はリカバリーモードで使われる。
 +
 +一応,"recovery"と"boot"をバックアップしておく
 + #cat /dev/mtd/mtd1 > /sdcard/mtd1.img
 + #cat /dev/mtd/mtd2 > /sdcard/mtd2.img
 +
 +端末の/system/recovery.imgは,毎回シャットダウンする時にmtd1(recoveryパーテーション)に,自動的に焼かれる。この理由は,
 +-まちがってmtd1を変に書き換えちゃった時に,文鎮化するのを防ぐ為~
 +-mtd1を入れ替えたい場合などに,/system/recovery.imgに入れておくことで,安全に変更できる~
 +と思われる。通常は,/system/recovery.imgを入れておかないようにする。
 +
**bootイメージ [#i1df0efb] **bootイメージ [#i1df0efb]
bootイメージは,linuxのブート時に使用されていて, bootイメージは,linuxのブート時に使用されていて,
Line 73: Line 87:
+2ndステージローダー(オプション) +2ndステージローダー(オプション)
がbootイメージに入っている。~ がbootイメージに入っている。~
 +
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用のアンパックとマージには,&ref(unpack-bootimg.zip);&ref(repack-bootimg.zip);を使うことが出来る。
***boot.imgの分解 [#q862084e] ***boot.imgの分解 [#q862084e]
Line 89: Line 104:
 find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz  find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
新しいkernelとマージする。 新しいkernelとマージする。
- mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel your-kernel-file --ramdisk newramdisk.cpio.gz -o mynewimage.img+ mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel 新しいkernel --ramdisk newramdisk.cpio.gz -o myboot.img
上の,repack-bootimgを使うほうが簡単だけど・・・ 上の,repack-bootimgを使うほうが簡単だけど・・・
Line 101: Line 116:
とやって,作業後マージするには, とやって,作業後マージするには,
 % mkbootfs ./ramdisk | gzip > ramdisk-new.gz  % 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+ % mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk ramdisk-new.gz -o myboot.img
でマージする。 でマージする。
*HT-03Aに新しいboot.imgをflashする [#ua851e8c] *HT-03Aに新しいboot.imgをflashする [#ua851e8c]
/sdcardに新しいイメージをコピーする /sdcardに新しいイメージをコピーする
- adb push ./mynewimage.img /sdcard+ adb push ./myboot.img /sdcard
adb shell上で, adb shell上で,
 # cat /dev/zero > /dev/mtd/mtd2  # cat /dev/zero > /dev/mtd/mtd2
-で,現在のbootを綺麗サッパリ消して +で,bootパーテーションを綺麗サッパリ消してから, 
- # flash_image boot /sdcard/mynewimage.img+ # flash_image boot /sdcard/myboot.img
として,書き込む。 として,書き込む。
リブートして,ちゃんとブートすればOK。ダメだったら,リカバリモードで前に戻す。 リブートして,ちゃんとブートすればOK。ダメだったら,リカバリモードで前に戻す。


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