-
KURO-BOX/HG の ROM を HD-HGLAN に物理的に移せれば目的が達成されるのですが、両者共、ROM が Flash ROM で基板にハンダ付けされています。
物理的な手法は不可能です。
考えられる別の方法は、KURO-BOX/HG の ROM を読み出し PC 保存・・・そのデータを HD-HGLAN に書き込むです。
当たり前ですが、これがなかなか頭を使わないとできないです。
Flash ROM ですから、誤って書き込むとほぼリカバリ不能の廃品になってしまいます。
-
まずは、KURO-BOX/HG の Flash ROM データを吸い出します。
ROM Linux から見た Flash ROM データ構造は以下となっています。
/dev/fl0 -- 設定保存用
/dev/fl1 -- firmimg.bin
/dev/fl2 -- bootcode.bin
/dev/fl3 -- 起動ステータス
/dev/fl4 -- フラッシュ全体
-
以上の Flash ROM データ構造のうち、プログラムが入っているのは、bootcode.bin と firming.bin です。
前者はバイナリが入っており、電源 ON 時の一番最初に起動されます。
後者は、ROM Linux のイメージデータが圧縮されて入っており、bootcode.bin が解凍して RAM に展開してから、ROM Linux を立ち上げます。
ですから、ROM Linux は実際には RAM 上で動くのです。
-
データの吸出しは、ROM-Linux(以降、EM-mode という。)の dd コマンドで出来ます。
/root ディレクトリに吸い出すとすると、以下のコマンド実行で出来ます。
# dd if=/dev/fl2 of=/root/bootcode.bin
# dd if=/dev/fl1 of=/root/firmimg.bin
逆に書き込みは、以下のコマンド実行で出来ます。
# dd if=/root/bootcode.bin of=/dev/fl2
# dd if=/root/firmimg.bin of=/dev/fl1
EM-mode って結構危ないモード
だと言うことが理解できると思います。
-
以上のようにして、KURO-BOX/HG の
bootcode.bin
と
firmimg.bin
が吸い出せました。
これを FTP を使って PC に保存します。
EM-mode のまま、PC から FTP にて root / kuroadmin でログインすると、bootcode.bin と firmimg.bin が見えるはずです。
-
ここで、firmimg.bin の理解をもう少し深めたいと思います。
firmimg.bin を解析支援するツールがあります。
firmimgtool
です。
PPC で動作するバイナリは
ここ
です。
-
Debian Linux が動作している KURO-BOX/HG の /mnt/share/hack に firmimgtool をインストールします。
firmimg.bin もこのディレクトリに入れておきます。
-
firmimgtool で firmimg.bin のヘッダ情報を表示してみます。
以下のように表示されました。
# cd /mnt/share/hack
# ./firmimgtool firmimg.bin
---- firmimg_file information ----
filename : firmimg.bin
checksum : FFFF667C
---- firmware information ----
info_ver : 00000001
firmid : 00001002
firmname : KURO-BOX/HG(IESHIGE)
subver : FLASH 1.0
version : 1.00, build 0000
date : 2004/10/19 17:18:54
firmsize : 002D95F3
checksum : 90626B0F
kernel : offset 0000006C, size 000C2F72
initrd : offset 000C2FDE, size 00216615
-
この情報を見ると、firmimg.bin は kernal と initrd 及びヘッダ情報より構成されていることが判ります。
-
firmimgtool を使って kernel と initrd に分離してみました。
以下のコマンドを実行すると kernel.gz と initrd.gz が出来ます。
# ./firmimgtool -c -k kernel.gz -r initrd.gz firmimg.bin
-
kernel.gz
はバイナリなので見てもよく判らないので、
initrd.gz
を覗いてみます。
# gzip -d initrd.gz
# mkdir test
# mount -o loop initrd test
-
test ディレクトリを参照すると、KURO-BOX/HG のルートイメージが見えます。
# ls test
bin etc lost+found mnt2 root tmp var
dev lib mnt proc sbin usr www
-
このイメージを編集して firmimgtool でパッケージングして Flash ROM に書き戻せば、オリジナルな改造 firmimg.bin で KURO-BOX/HG を動作させることも可能ですが、ここでは本来の目的ではないので、単に見るだけです。