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 夕雨