Sirius -旧ブログ、更新されません-

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

Comments

TrackBacks

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨