2010年10月19日(火) 21:26
新機種の中華 PAD を購入するとファームイメージがないので文鎮化したときに対処できなくなります。実は NPAD を購入した時、届いたその日に文鎮になってしまいました。
そこで、実機からファームを抜き出せないか試してみました。動いているうちに吸い出しておくと何かあったときに安心です。
以下は X5A とか M701 とかと言われている telechip 系 PAD のファームに関しての話なので他の PAD で同様にできるかどうかは分かりません。
自分が所有していて作成、書き込みして確認できたのは NPAD のみです。(ただし型番が同じだからといって同じ機体とは限らないのが中華 PAD です。)
E7002H, TMARSS P7 も持っているので作成はしてみましたが、確認まではしていません。(確実に動くとわかっているファームウェアがあるのが NPAD だけなので)
必要なもの(どっから落としたのか忘れたので探してください)
mkyaffs2image (mkyaffs2.tar.gz)
tccpack (tccutils.tar.gz)
mkbootimg (mkbootimg.zip)
split_bootimg.pl
Linux マシン
1、実機からの吸い出し。
adb で接続して吸い出します。
/proc/mtd の情報から、boot, recovery を吸い出します。
たとえば、boot が mtd0 なら
# cat /dev/mtd/mtd0 > boot.mtd
※TMARSS P7 では recovery 領域に何も書き込まれていないようです。
system は tar で吸い出します。ここでは SD に書き出しています。
# cd /system
# tar cvf /sdcard/system.tar .
2、ファームイメージの作成
ここからは Linux マシン上での作業
2-1boot.img
吸い出した boot.mtd から kernel と ramdisk を取り出します。
$ split_bootimg.pl boot.mtd
boot.img にまとめます。
吸い出した ramdisk は必要であれば修正することもできます。展開方法や ramdisk の作成は過去の記事を見てください。
パラメータは元の boot.mtd のヘッダ情報を見て同じにします。特にベースアドレスを間違うと起動しないようです。
$ mkbootimg --kernel boot.mtd-kernel --ramdisk boot.mtd-ramdisk.gz --cmdline 'console=ttySAC0 androidboot.hardware=tcc92xx' --base 0x40000000 -o boot.img
2-2recovery.img
boot.img と同様にします。
$ split_bootimg.pl recovery.mtd
$ mkbootimg --kernel recovery.mtd-kernel --ramdisk recovery.mtd-ramdisk.gz --cmdline 'console=ttySAC0 androidboot.hardware=tcc92xx' --base 0x40000000 -o recovery.img
2-3system.img
system を展開します。
$ (mkdir system;cd system;tar xvf ../system.tar)
mkyaffs2image で作成します。
$ mkyaffs2image -f system system.img
2-4boot.img, recovery.img system.img を一つにまとめます。
$ tccpack boot.img system.img recovery.img tcc8900_mtd.img
これでできた tcc8900_mtd.img を指定して FWDN で焼きこめばいいようです。
※TMARSS P7 の boot.mtd-ramdisk.gz と NPAD の boot.mtd-ramdisk.gz は比較したらまったく同じでした。TMARSS P7 の recovery.img の作成はカーネルに TMARSS P7 の boot.mtd-kernel、ramdisk に NPAD の recovery.mtd-ramdisk.gz を指定して作成しました。
written by sirius
[Android]
[この記事のURL]
[コメントを書く]
[コメント(0)]
[TB(0)]
-
この記事へのトラックバックPingURL
-