NPAD も持っています。
NPAD のファームもいくつか手に入れることができるようになったのでファームの中の tcc8900_mtd.img を分解してみます。
必要なもの。
tccutils
mkbootimg
mkyaffs2
split_bootimg.pl
それぞれどこから落としたのか忘れたので探してください。
私は、x64 な Linux で作業したので全部コンパイルしました。
1、ソースの修正
mkbootimg は pagesize がソースの中で 2048 固定となっています。
NPAD のファームを見ると pagesize は 4096 のようなので修正します。
また、ハッシュの計算に sha を使っているようなので、sha.h や sha.c も必要でした。
mkyaffs2 の unyaffs.c もlchmod 関数とかでメッセージが出るので修正しました。
2、tcc8900_mtd.img の展開
tccutils の tccunpack を使うと、boot.img, system.img recovery.img を取り出すことができます。
$ tccunpack tcc8900_mtd.img
2−1、system.img の展開
mkyaffs2 の unyaffs を使って展開できます。
$ mkdir system
$ cd system
$ unyaffs ../system.img
2−2、boot.img, recovery.img の展開
boot.img と recovery.img は同じ構造をしています。
split_bootimg.pl を使うことで、カーネルとラムディスクを取り出すことができます。
$ split_bootimg.pl boot.img
$ split_bootimg.pl recovery.img
boot.img-kernel, boot.img-remdisk.gz, recovery.img-kernel, recovery.img-ramdisk.gz ができます。
2−2−1 ラムディスクイメージの展開
ここでは、boot.img のラムディスクを展開しますが、recovery.img も同様です。
cpio でアーカイブしたものを gzip 圧縮しているだけなので次のようにして展開できます。
$ mkdir ramdisk
$ cd ramdisk
$ zcat ../boot.img-ramdisk.gz | cpio -i
boot.img のラムディスクがルートファイルシステム、system.img が /system なので、ここで展開したものを修正してカスタムファームウェアを作成することもできるようです。
展開したイメージからファームウェアを作成する方法はまた今度説明します。
なお、エンディアンが違うとうまくいかない場合があるようです。x86 ではそのままで大丈夫なようですが、玄箱(PowerPC)でやってみたら、system.img の展開ができないようです。
また、ファームは
このあたりにあります。