2016年10月9日日曜日

WHR-300HP2 に dd-wrt をインストールする その2

ssh で接続し、WHR-300HP2 の調査(?)をしてみました。

root@DD-WRT:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 005b0000 00010000 "linux"
mtd4: 00696000 00010000 "rootfs"
mtd5: 00200000 00010000 "ddwrt"
mtd6: 00100000 00010000 "User_CFG"
mtd7: 00010000 00010000 "nvram"

次の方法でパーティションの丸ごとバックアップをしました。

  1. ddコマンドでパーティションを丸ごとコピー
    dd if=/dev/mtdblock/0  of=/tmp/whr-300hp2-mtdblock-0.bin
    ...
    dd if=/dev/mtdblock/7  of=/tmp/whr-300hp2-mtdblock-7.bin
  2. WinSCP で PCに転送

u-boot から u-boot-env の内容を読み込んで起動するらしい。(間違っていたら教えてください。) ということで u-boot-env の内容を strings で表示させてみました。

bootcmd=tftp
bootdelay=1
baudrate=57600
ethaddr="00:AA:BB:CC:DD:10"
filesize=408bee
fileaddr=80A00000
ipaddr=192.168.11.1
serverip=192.168.11.168
autostart=no
bootfile=firmware_WHR-300HP2.ram
inspection=0
stdin=serial
stdout=serial
stderr=serial
pushaoss=0
bootloader_ver=3.00

tftpサーバを立ててファイルを読み込ませるには

  • ファイル名をfirmware_WHR-300HP2.ram
  • tftpサーバのアドレスを 192.168.11.168

にしておけば良さそうですね。tftpサーバを見に行かせるにはAOSSボタンを押しながら電源を入れる必要があるようです。試す気は無いですけど。

よくある復活時に指定する MACアドレスは 00:AA:BB:CC:DD:10 をでよさそう。

  • arp -s 192.168.11.1 00-AA-BB-CC-DD-10
  • tftp -i 192.168.11.1 put {ファームファイル名}

ただし、bootdelay=1 ってのが気になります。1秒しか待ってくれないのだとすると、tftp での復活は無理ですよね。printenv  とか ubootenv list が入っていなかったので、実際の値は確認できていませんが...

なんだったらバックアップしたファイルをバイナリエディタで 5 辺りに書き換えて /dev/mtdblock/1 に書き込んでおくといいのかもしれません。

2016100300084
tftp用のファームは dd-wrtのサイトから落とすのだったら firmware.uimageを使用、既存のファームを使うのだったらヘッダーの改変が必要です。hex で 27 05 19 56 でから始まるようにバイナリエディタ等で修正します。

 

 

最終的に導入予定の米国バッファローの WHR-300HP2D のファームだと上の図の黒反転している部分を削除すれば okですね。

ヘッダー改変版ファームを作成したところまでをフェーズ2 として終えることにします。

2016/10/17追記
 dd によるパーティションのバックアップをしてみましたが、純正ファームの状態ではないのであまり意味がない気がします。戻しも u-boot と u-bootenv が生きていれば何とかなるようですし。

0 件のコメント:

コメントを投稿