Buffaloの一部の機種はバックアップ済みのfirmwareを加工することで起動時にTFTPにてインストール可能です
そのままの戻しはできず、少々の加工が必要です。加工方法は機種によって若干の違いがあります。
※加工方法はOpenWrt-ImageBuilderに含まれるmakeファイルを参考にしています。
WZR-HP-G300NH/WZR-HP-G302H(RevA2A0)/WZR-HP-G450H/BHR-4GRVの場合
必要なもの
- /dev/mtdblock/6 のバックアップデータ
linux kernel と rootfs が連結されたデータが必要です。
事前のcat /proc/mtd で"firmware"となっている領域部分です。
mtd3 "linux" と mtd4 "rootfs" をcatで結合したデータでもOKです。
ddコマンドが使用できればOKです。(CentOS6.4 x86_64版で実績あります)
加工方法
mtd6.dd のデータを送り、shell consoleから以下のコマンドを実行し、ヘッダを付加します。
[bash ~]$ ( echo -n -e "# Airstation Public Fmt1\x00\x00\x00\x00\x00\x00\x00\x00"; dd if=mtd6.dd ) > stockfw-tftp.bin
copy コマンドでヘッダとmtd6.dd を結合します。(バイナリデータを扱う /B がポイント)
C:\copy /B WZR_TFTP_headder.bin+mtd6.dd stockfw-tftp.bin
インストール方法
生成されたstockfw-tftp.binをOpenWrtのTFTPインストール方法と同様の方法でインストールします。
OpenWrt本体のものと比較するとファイルサイズが大きいので完了まで5分程度はかかります。
なお、事前にuboot変数 accept_open_rt_fmt に 1 が設定されている必要があります。
WHR-G300Nの場合
必要なもの
- OpenWrt ImageBuilder に含まれる buffalo-tftp
ImageBuilder がx86_64版のため。SDKからbuildする場合にはこの限りではありません
- /dev/mtdblock/3 と/dev/mtdblock/4 のバックアップデータ
linux kernel と rootfs のデータが必要です。
事前のcat /proc/mtd で "linux" "rootfs" と表示されている領域部分です。
準備
linux 環境に mtd3.dd , mtd4.dd のデータを送り、shell consoleから以下のコマンドで結合データを作ります。
[bash ~]$ cat mtd3.dd mtd4.dd > mtd3_4.tmp
OpenWrt ImageBuilderをダウンロードし、展開します。
[bash ~]$ wget https://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/OpenWrt-ImageBuilder-ramips_rt305x-for-linux-x86_64.tar.bz2
[bash ~]$ tar jxf OpenWrt-ImageBuilder-ramips_rt305x-for-linux-x86_64.tar.bz2
加工方法
shell consoleから以下のコマンドを実行してデータにヘッダを付加します。
[bash ~]$ ( echo -n -e "# Airstation FirmWare\nrun u_fw\nreset\n\n" | dd bs=512 count=1 conv=sync; dd if=mtd3_4.tmp; ) > stockfw-tftp.tmp
buffalo-tftp コマンドでデータをTFTP用に変換します。
[bash ~]$ ~/OpenWrt-ImageBuilder-ramips_rt305x-for-linux-x86_64/staging_dir/host/bin/bundled/buffalo-tftp -i stockfw-tftp.tmp -o stockfw-tftp.bin
インストール方法
生成されたstockfw-tftp.binをOpenWrtのTFTPインストール方法と同様の方法でインストールします。
WHR-G300N の場合には PC側を事前に192.168.11.2 にしておけば
MACアドレスをスタティック登録する必要はありません。
事前バックアップを取っていなかった場合
Buffaloからダウンロードできるアップデート用ファームウェアから必要データを抽出する方法があるようです。
ただし、該当ファームウェアの事前のmtd領域のデータサイズ情報(cat /proc/mtd の情報)が必要ですので、それすらない場合には困難を極めるでしょう。
2ch DD-WRTスレ10 183さんの
こちらの blog を参考にしてみてください。
なお、blog中で使用されている buffalo-enc はSDK以外にもImageBuilderにも含まれています。
最終更新:2017年08月22日 01:32