Killing Time 2nd

備忘録、日々の徒然想いを残します。

HS-DHGLのファームウエアアップデート備忘録

バッファローNASLS-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を走らせるために必要。それとtelnetsshクライアント環境。

現時点でインターネットで公式に入手可能なファームウエアは4つほどある。

  1. Ver.1.10(日本)
  2. Ver.1.20(日本)
  3. Ver.2.10(米国)
  4. Ver.2.11(米国)

しかしネット上では一番安定しているファームウエアとしてVer.1.12-2aという非公式のモノが知られている。これは安定性(特にDLNA接続)のみならず、iSCSINFS、リモートアクセス機能など機能面でもその後のバッファローNASの機能をいち早く取り入れたモノとなっていた。

  • NFSサーバ機能を追加しました。
  • httpsによる設定画面へのアクセス機能を追加しました。
  • Quota機能を追加しました。
  • FTPサーバ機能にSSL/TLS接続機能を追加しました。
  • ウィンドウズファイル共有にてACL機能を追加しました。
  • メール通知機能でサポートされるsmtpタイプを追加しました。
  • iSCSIモードを追加しました。
  • Webアクセス機能を追加しました。

しかし結局公式には公開されず、下記のリンクのみが生きている状態だった。
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に紐付いているのかも。

*1:IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty

*2:YvSInIQopeipx66t_DCdfEvfP47qeVPhNhAuSYmA4