ファームウェアの入れ替えができます。取りあえず一番高い値段のMZK-MF300Dの
ファームウェアに入れ替えました。
telnetで接続して中身を色々と調べてること、
製品的にはUSBポートは飾りで利用不能なのですが、ちゃんと生きています。
USBハブ経由でのUSBメモリのマウントも可能です。
コマンド的にも、lsusb、lsmod、insmod、rmmod、modprove が標準で使えるので
後からUSBディバイス用のモジュールを色々と追加できる可能性があります。
MZK-SA300の基本情報
# cat /proc/cpuinfo
system type : RTL8196C
processor : 0
cpu model : 52481
BogoMIPS : 388.30
tlb_entries : 32
mips16 implemented : yes
#cat /proc/version
Linux version 2.6.30.9 (root@Perish-Linux) (gcc version 3.4.6-1.3.6) #1 Wed Feb 20 15:30:23 CST 2013
# cat /proc/meminfo
MemTotal: 25672 kB
MemFree: 1328 kB
Buffers: 9204 kB
Cached: 5088 kB
SwapCached: 0 kB
Active: 11044 kB
# cat /etc/version
RTL8196C v1.0 -- 三 2月 20 15:23:52 CST 2013
The SDK version is: Realtek SDK v2.5-r
ファームウェアの解析
公開しているアップデート用のファームウェアの中を見ると、
Realtek SDK で開発してる のにヘッター部がLAN-W300N/G8 と異なります。
SDKの標準のファームウェアのイメージ形式ではないようです。
2013/10/24 修正
Realtek SDK 標準 ファームウェアイメージ形式でした。
ただし、先頭の"COMDS"は見覚えがあります。LAN-W300N/G8の
設定値ファイル config.datと同じ形式です。
このデータを処理するWeb管理画面のWWWサーバー(goahead)のソースを
"COMDS"で検索をかけるとヒットしました。
# grep -n COMPCS *.h
apmib.h:1934:#define COMP_CS_SIGNATURE "COMPCS"
apmib.h を見てみると、
これで、ヘッター部のレイアウトが分かりました。
ファームウェアの構造が解析できそうです。
今後、LAN-W300N/G8 と同じように解凍できるか調べます。
2013/10/24 追記
ファームウェアイメージの構造が分かりました。
3つのブロックに分かれています。
[設定値]
[カーネル]
[rootfs]
設定値以外はLAN-W300N/G8 と同じような各ブロックにシグニチャヘッダが付く形式
でした。ただしWebファイルのブロックはなくrootfs内に格納されていました。
rootfsはファームウェアのファイル内の0x0011d392からsize 0x001d2002(1908738バイト)
で格納されていることが判明。取り出してfileコマンドで調べてみると、
# file root.img
root.img: Squashfs filesystem, little endian, version 4.0, 1907412 bytes, 708 inodes, blocksize: 131072 bytes, created: Sun Jan 5 07:45:20 1902
Squashfs filesystem形式です。これなら解凍できますね。
# ~/bin/unsquashfs root.img
Parallel unsquashfs: Using 2 processors
667 inodes (691 blocks) to write
[=====================================================-] 691/691 100%
created 263 files
created 41 directories
created 107 symlinks
created 297 devices
created 0 fifos
取り出せました。
後は、LAN-W300N/G8 の時と同じようにファームウェアの解凍・圧縮ツールを
作成します。これでMZK-SA300D、MZK-MF300D、MZK-EX300Dが対応できると
思います。
ただし、MZK-SA300D はシリアルコンソール接続ができるのですが、
表示のみで入力ができません。コンソール周りの設定の調査が必要です。
2013/10/24 追記ファームウェアの構造の詳細
各ブロックのヘッダー部のデータ
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00000000|43 4f 4d 50 44 53 00 07 00 00 1b b5 ff 36 47 30 | COMPDS.....オ6G0
--------|------------------------------------------------|-------------------
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00001bc1|43 4f 4d 50 43 53 00 07 00 00 1b b3 ff 36 67 30 | COMPCS.....ウ6g0
--------|------------------------------------------------|-------------------
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
00003780|63 72 36 63 80 50 00 00 00 03 00 00 00 11 9c 02 | cr6c.P........・
--------|------------------------------------------------|-------------------
--------|-0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F-|---0123456789ABCDEF
0011d392|72 36 63 72 00 2d 00 00 00 16 00 00 00 1d 20 02 | r6cr.-........ .
--------|------------------------------------------------|-------------------
各ブロックのヘッダー部の詳細
[Compress config setting file ブロック1 00000000-00001bc0]
[compress_mib_header (12バイト)]
signature: 434f4d504453 (COMPDS)
compRate : 0007 (7)
compLen : 00001bb5 (7093バイト)
[データ(0000000C - 00001bc0) ]
[Compress config setting file ブロック2 00001bc1-0000377F]
[compress_mib_header (12バイト)]
signature: 434f4d504453 (COMPCS)
compRate : 0007 (7)
compLen : 00001bb3 (7091バイト)
[データ(00001bcd - 0000377F) ]
[Linux カーネル部 00003780 - 0011d391]
[Firmware image file header(16バイト) ]
signature : cr6c
startAddr : 80500000
burnAddr : 00030000
len : 00119c02
[データ(00003790 - 0011d391) 1154050バイト]
[rootfs 部 0011d392 -
[Firmware image file header(16バイト) ]
signature : r6cr
startAddr : 002d0000
burnAddr : 00160000
len : 001d2002
[データ(0011d3a2 - 002EF3A4) 1908738バイト]
最近のコメント