HS-DHGLのファームウエアアップデート備忘録
バッファローのNAS、LS-GL、HS-DHGLシリーズのゼロベースからのファームウエアアップデート(特にVer.1.12-2a)方法についての中途半端なメモ。全くファームが何も無い状態からVer.1.12-2aというバッファローの非公式ファームウエアにするため四苦八苦してしまったので記しておく。
用意するもの:
- LS-GL、HS-DHGLのガワ。どちらもハード的には同一でファームウエアだけが違う。
- HDD。SATAのHDDを用意する。今回はWestern DigitalのCaviar Greenの1.5TB、WD15EADSを用いた。
- WindowsOSの走るPC。LSUpdater.exeを走らせるために必要。それとtelnet、sshクライアント環境。
現時点でインターネットで公式に入手可能なファームウエアは4つほどある。
- Ver.1.10(日本)
- Ver.1.20(日本)
- Ver.2.10(米国)
- Ver.2.11(米国)
しかしネット上では一番安定しているファームウエアとしてVer.1.12-2aという非公式のモノが知られている。これは安定性(特にDLNA接続)のみならず、iSCSI、NFS、リモートアクセス機能など機能面でもその後のバッファローのNASの機能をいち早く取り入れたモノとなっていた。
しかし結局公式には公開されず、下記のリンクのみが生きている状態だった。
http://buffalo.jp/php/ldl.php?to=hd/hsdhgl-fw-112-2a.exe
早速このバージョンを導入することにしたのだが、これが中々上手く行かず。別のバージョンにはTFTPDでbootファイルを流し込み、LSUpdater.exeで本体のファームウエアを転送することは出来た。しかしそこから、例えVer.1.10からVer.1.12-2aという真っ当なアップデートであっても、途中で
ACP_STATE_FAILURE
なるエラーでアップデートが中止する。当然アップデートはされないのだが、このエラーが出ると元のバージョンもブートファイルが壊れるようで、またTFTPDからはじめることになる。この状況はVer.1.20からバージョンチェックをしないよう設定しダウングレードさせても変わらず。半ば諦めかけていたのだが、telnet/sshが出来るのであれば、エレガントではないが直接ファイルをコピーしてしまおうと考えた。つまりTFTPD、LSUpdater.exeは使用しない。
既に別のバージョンが導入されている状態からVer.1.12-2aにすることを考える。
ブート時に読み込むのは/bootにあるuImage.buffaloとinitrd.buffaloの2つのファイル。このうち前者はファームウエアを展開すればそのままの名前で入手が出来る。後者はよく知られているようにダウンロードしたファイルを展開して得られるinitrd.imgを変換して得られる。具体的にはこのinitrd.imgは実はパスワード付きZIPファイルとなっている。拡張子を.ZIPにしてパスワード*1を入力することでinitrd.buffaloが得られる。ここまでは良く知られたことで、このファイルをTFTPDで流し込み、ファームウエアの導入をする。
まずHS-DHGLにtelnet出来るようにする。acp_commander.jarを使ってtelnetdを起動する。
java -jar acp_commander.jar -t IP-Address -o
問題は/下のそのほかのファイル。これはファームウエアを展開して得られるhddrootfs.imgから得られることが分かった。これもinitrd.buffaloと同様にパスワード付きのZIPファイルになっている。拡張子を.ZIPに変えてパスワード*2を入力することで
hddrootfs.buffalo.updated
が得られる。これは
file hddrootfs.buffalo.updated
とすると分かるがGNU zipファイルになっている。
bash-2.05b$ file hddrootfs.buffalo.updated
hddrootfs.buffalo.updated: gzip compressed data, from Unix
そしてこれはtar ballであることが分かる。つまり.tar.gzというわけだ。ただHS-DHGLのtarはbusy-boxであるため、tar xvfzは使えないようでひとつひとつ展開して行く必要がある。というわけで/でtar ballを展開することでやっとVer.1.12-2aにすることが出来た。
後から考えるとACP_STATE_FAILUREとなっていたのはhddrootfs.imgのZIP展開時のパスワード違いにあったのではないかと思う。LSUpdater.exeを幾つか使いまわしたからだ。展開時のパスワードがLSUpdater.exeに紐付いているのかも。