プラネックス無線LANルーター MZK-MR150 を Realtek SDK カスタムファームウェアに書き換えて、USBメモリをマウントできた。

無線ルーターはいくつか持ってるが、USBポートがある無線ルーターは、この1台しか持ってない。
USBで、無線ルーターが大容量ストレージを持てるし、USBプリンタやUSBカメラをつないだりもしたい。
MZK-MR150 は、CPUクロックが390MHzあり、メモリ32M、フラッシュ4Mで比較的高性能。
コンパクトで、USBバスパワーで動くので、たぶん電池や携帯バッテリでも動く。
WiFiハッキングツールが動けば、電池で動くWiFiハッキングデバイスに仕立てられるかもしれない。

SDK のコンフィグで、USBサポートを設定してからカーネルをビルドする。
USBサポートの手順は、SDKの Document.tar.gz 内にある Realtek Kernel 2.6 SDK User Guide を参照する。

FWのフラッシュ書き込みは、USBシリアル変換モジュールでPCとMZKをシリアル接続して、電源投入後、ESCでブートを中断し、tftp でファームウェアを転送する。

ifconfig eth0 192.168.1.3
atftp -p -l fw.bin 192.168.1.6

fw.binの転送が終わるとブートが始まる。以下はシリアル接続のminicomの表示。
minicom は、/dev/sttyUSB0,38400,8N1

Booting...
========== SPI =============
---RealTek(RTL8196C)at 2010.09.10-11:24+0800 version v1.1f [16bit](390MHz)
no sys signature at 00010000!
no sys signature at 00020000!
no rootfs signature at 000E0000!
no rootfs signature at 000F0000!
Jump to image start=0x80500000...
decompressing kernel:
Uncompressing Linux... done, booting the kernel.
done decompressing kernel.
start address: 0x80003600
RTL8192C/RTL8188C driver version 1.6 (2011-07-18)
init started: BusyBox v1.13.4 (2012-07-10 09:08:23 JST)
Init Start...
Init bridge interface...
Init Wlan application...
WiFi Simple Config v2.2 (2011.09.08-23:32+0000).
Register to wlan0
route: SIOCDELRT: No such process
iwcontrol RegisterPID to (wlan0)
IEEE 802.11f (IAPP) using interface br0 (v1.7)
open /proc/sys/kernel/hotplug: No such file or directory
DEVPATH=/sys/block/sda/sda ACTION=add usbmount block
basename(1)
basename(2 /sys/block/sda/sda)
basename(2 /block/sda/sda)
basename(2 /sda/sda)
basename(2 /sda)
basename(3 sda)
basename(1)
basename(2 /sys/block/sda/sda)
basename(2 /block/sda/sda)
basename(2 /sda/sda)
basename(2 /sda)
basename(3 sda)
DEVPATH=/sys/block/sda/sda1 ACTION=add usbmount block
basename(1)
basename(2 /sys/block/sda/sda1)
basename(2 /block/sda/sda1)
basename(2 /sda/sda1)
basename(2 /sda1)
basename(3 sda1)
basename(1)
basename(2 /sys/block/sda/sda1)
basename(2 /block/sda/sda1)
basename(2 /sda/sda1)
basename(2 /sda1)
basename(3 sda1)
try_mount(1) sda1, /var/tmp/usb/sda1
CMD: /bin/ntfs-3g /dev/sda1 /var/tmp/usb/sda1 -o force
# cd /var/tmp/usb/sda1
# ls
Kernel 2_6 SDK User Guide v1_29.pdf System_Note.pdf
RTL819X_Firmware_Release_Note_v2.5.pdf WLAN_Application_Note_RTL819X.pdf
Realtek_WPS_user_guide_V1.4.pdf

fat32のUSBメモリは、ntfs-3g のエラーになった。NTFSでフォーマットしておかないとマウントできなかった。

USBメモリの書き込みも遅い気がする。

dd if=/dev/zero of=testfile bs=1M count=10

それから、デバイスドライバーなどカーネルにいろいろ追加すると、すぐにカーネルがサイズオーバーになってしまう。 
 
rootfs のオフセットを 0x130000 に変更で一応収まった。 
これを0x140000 にするとコンパイルは通っても、なぜか起動しない。