- DD-WRTのLinuxカーネルとOpenWrtのrootfsを結合してWZR-600DHP2向けのファームウェアを作る方法です。
今のところ、有線LAN、無線LAN等が動かないので実用性は低いです。
Linux(UbuntuやFedora)での作業を推奨します。
コマンドはあまりちゃんと確認していないので間違い等があるかもしれません
コマンドをよく読んで何をしているか理解した上で実行してください。
$ mkdir work
$ cd work
- firmware-mod-kitのダウンロードと準備
$ wget https://firmware-mod-kit.googlecode.com/files/fmk_099.tar.gz
$ tar xvf fmk_099.tar.gz
$ cd fmk/src
$ ./configure
$ make -j4
$ cd ../..
makeには数分時間がかかります。
$ wget ftp://ftp.dd-wrt.com/betas/2014/04-18-2014-r23919/buffalo_wzr-600dhp2/buffalo-wzr-600dhp2-webflash.bin -O buffalo-wzr-600dhp2-webflash-140418.bin
- DD-WRTのカーネルとsquashfsを取りだす
$ mkdir dd-wrt
$ ./fmk/src/untrx buffalo-wzr-600dhp2-webflash-140418.bin dd-wrt
$ cd dd-wrt
$ ../fmk/src/squashfs-3.0-lzma-damn-small-variant/unsquashfs-lzma squashfs-lzma-image-3_0
$ cd ..
$ wget http://downloads.openwrt.org/snapshots/trunk/bcm53xx/openwrt-bcm4708-netgear-r6250-squashfs.chk
$ dd if=openwrt-bcm4708-netgear-r6250-squashfs.chk of=openwrt.trx bs=1 skip=58
$ mkdir openwrt
$ ./fmk/src/untrx openwrt.trx openwrt
$ ../fmk/src/others/squashfs-4.2-official/unsquashfs squashfs-lzma-image-x_x
- DD-WRTのカーネルモジュールをOpenWrtにコピー
$ cd openwrt/squashfs-root/
$ rm -r lib/modules/*
$ cp -r ../../dd-wrt/squashfs-root/lib/modules/* lib/modules/
$ cd ../..
- OpenWrtではDD-WRTと違いカーネルモジュールの配置がフラットになっているらしいです。
それに合わせてファイルを移動します。
$ cd openwrt/squashfs-root/lib/modules/*
$ find -name '*.ko' -exec mv {} . \;
$ rm -r kernel/ extra/
$ cd ../../../../..
(ここはfirmware-mod-kitを活用したほうが楽かもしれない)
"-m"の後に続く数値はファームウェアの最大サイズです。
パッケージをたくさん入れた場合は適宜増やしてください。
(ただし大きくしすぎるとnandの他の領域まで壊しかねないので注意)
$ ./fmk/src/squashfs-3.0-lzma-damn-small-variant/mksquashfs-lzma openwrt/squashfs-root/ newroot.squashfs
$ ./fmk/src/asustrx -o dd-open.trx -m 10000000 dd-wrt/segment1 newroot.squashfs
1.シリアルケーブルをWZR-600DHP2につなぐ
2.Ctrl+Cを押しっぱなしにしながら起動してCFEに入る
3.CFE> flash -noheader 192.168.10.2:dd-open.trx nflash0.trx
のようにして焼く
4.CFE> go
で起動する。
USBメモリは挿してマウントすれば使えます。
以下のような感じで有線LANくらいはなんとか使えそうな気がします。
root@OpenWrt:/# cd /lib/modules/*
root@OpenWrt:/lib/modules/3.10.37# insmod et
root@OpenWrt:/lib/modules/3.10.37# insmod switch-core.ko
root@OpenWrt:/lib/modules/3.10.37# insmod switch-robo.ko
root@OpenWrt:/lib/modules/3.10.37# ifconfig eth0
eth0 Link encap:Ethernet HWaddr B0:C7:45:91:C3:60
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:179 Base address:0x4000