オリジナルfirmwareへの復旧方法 > TFTP転送 > (2)バックアップ済firmwareを加工してTFTP転送(Buffalo)

「オリジナルfirmwareへの復旧方法/TFTP転送/(2)バックアップ済firmwareを加工してTFTP転送(Buffalo)」の編集履歴(バックアップ)一覧に戻る
オリジナルfirmwareへの復旧方法/TFTP転送/(2)バックアップ済firmwareを加工してTFTP転送(Buffalo)」を以下のとおり復元します。
Buffaloの一部の機種はバックアップ済みのfirmwareを加工することで起動時にTFTPにてインストール可能です

[[TFTPでのインストール方法(3)OpenWRT-BHR-4GRV編]] 等で&bold(){インストール前に自前に取得しておいた}flashメモリのバックアップデータからリストア出来ます。
そのままの戻しはできず、少々の加工が必要です。
加工方法は機種によって若干の違いがあります。

※加工方法はOpenWrt-ImageBuilderに含まれるmakeファイルを参考にしています。

*WZR-HP-G300NH/WZR-HP-G450Hの場合
**必要なもの
-Linux/UNIX環境
 ddコマンドが使用できればOKです。(CentOS6.4 x86_64版で実績あります)
-/dev/mtdblock/6 のバックアップデータ
 linux kernel と rootfs が連結されたデータが必要です。
 事前のcat /proc/mtd で"firmware"となっている領域部分です。
 mtd3 "linux" と mtd4 "rootfs" をcatで結合したデータでもOKです。

**加工方法
linux 環境に 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
 
**インストール方法
生成されたstockfw-tftp.binをOpenWrtのTFTPインストール方法と同様の方法でインストールします。
OpenWrt本体のものと比較するとファイルサイズが大きいので完了まで5分程度はかかります。
なお、事前にuboot変数 accept_open_rt_fmt に 1 が設定されている必要があります。

*WHR-G300Nの場合
**必要なもの
-OpenWrt ImageBuilder に含まれる buffalo-tftp 
 [[OpenWrt-ImageBuilder-ramips_rt305x-for-linux-x86_64.tar.bz2>https://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/]]
-64bit Linux環境(x86_64版) 
 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
※14.07のrt305x用ImageBuilder では 
~/OpenWrt-ImageBuilder-ramips_rt305x-for-linux-x86_64/staging_dir/host/bin/buffalo-tftp の方は
シンボリックリンクが間違っているようです。

**インストール方法
生成されたstockfw-tftp.binをOpenWrtのTFTPインストール方法と同様の方法でインストールします。
WHR-G300N の場合には PC側を事前に192.168.11.2 にしておけば
MACアドレスをスタティック登録する必要はありません。

*事前バックアップを取っていなかった場合
Buffaloからダウンロードできるアップデート用ファームウェアから必要データを抽出する方法があるようです。
ただし、該当ファームウェアの事前のmtd領域のデータサイズ情報(cat /proc/mtd の情報)が必要ですので、それすらない場合には困難を極めるでしょう。
2ch DD-WRTスレ10 183さんの[[こちらの blog>www.drvlabo.jp/wp/openwrt-buffalo-wzr-agl300nh_abst/openwrt-buffalo_convert_update2rom]] を参考にしてみてください。
なお、記事中に使用されている buffalo-enc はSDK以外にもImageBuilderにも含まれています。

この記事で得られた stock_fw.bin にはまだヘッダ情報が含まれていないので、
WZR-HP-G300NH/WZR-HP-G450Hの場合には上記記事のようにヘッダ追加が必要です。

復元してよろしいですか?