LS-GL#2

さて昨日の結果について書いていきます。
HS-DHGLのファームウェアの更新プログラムをLS-GLに使えれば一瞬で終わると思い、
まずそのまま更新プログラムをダウンロードして起動しました。
結果は更新プログラムがLS-GLを見つけられず終了です。(当たり前か!?)


で腹をくくり昨日調べたサイトから手順を調べて実行することにしました。

参照したサイトはこちら:LinkStation/玄箱をハックしよう

まず最初にLS-GLのハードディスクを取り出してLinuxにマウントしないとファームウェアのコピー自体できない事を知りました。
家にCentOS 5を入れたPCはあるのですが、SATAが付いたマザーボードがないので安くすませるにはSATA → USBに変換するケーブルがよさそうなので調べてるうちにいいのを見つけました。


センチュリー SATAハードディスク用クレードル裸族のお立台 CROSU2

センチュリー SATAハードディスク用クレードル裸族のお立台 CROSU2


しかしこいつの名前なんとかならないのでしょうか?
小心者の自分にはお店で「裸族のお立ち台」くださいと面と向かって言う勇気はありませんでしたので、商品だけ持ってって無言で購入しました。(ネットで買えばいいんでしょうが、すぐに欲しかったので・・・)


で次はLS-GLからハードディスクの取り出し作業です。
どうも自分は不器用でこの手の作業は苦手でして、ハードディスク取り出すまでに結構時間がかかりました。
ちなみにこれでLS-GLは保証対象外となったわけですが、そんな事はもうどうでもいいです。


ディスク外す手順は下記の通りでいけます。


1. LS-GLのフロントパネル下のネジを外すと、フロントパネルが外せるようになるので取り外します。
2. サブボードに繋がっている電源ケーブルを外します。
3. サブボードにとめてあるネジ2本を外します。
4. これでサブボードが外せるようになるので、ハードディスクごと引き出します。
5. サブボードとハードディスクをとめているネジを外せば完了です。


さてここから「裸族のお立ち台」&CentOSの出番です。
取り出したハードディスクを「裸族のお立ち台」に取り付けてCentOSを起動して認識することを確認。
ちなみにディスクは/dev/sdaで認識しました。


ファームウェアの更新は結構簡単で以下の手順


1. HS-DHGLと同じ構成でパーティションを切る。
2. /dev/sda1にuImage.buffalo、initrd.buffalo、hddrootfs.buffalo.updated ファイルをコピーする。
 ・これらのファイルはバッファローが提供しているHS-DHGLの最新ファームウェアをダウンロードしてそこから取り出す
3. LS-GLにハードディスクを再度取り付けて、電源ボタンを押せば後はHS-DHGLのファームウェアに自動的に更新されてLS-GLが起動する


を想定していたのですぐ終わると思ったのですが、世の中そんなにあまくなかった・・・。(手順としてはホントにこれだけなんですが)

手順1. のパーティションに関しては既存の構成がそのまま使えそうなので何もしませんでした。
大変なのは手順2.以降でinitrd.buffalo、hddrootfs.buffalo.updatedの取り出し方にまずかなり苦戦。
ダウンロードしたファームウェアにinitrd.imgとhddrootfs.imgがあり、これらはzipで圧縮されてるようなので解凍すれば
initrd.buffalo、hddrootfs.buffalo.updatedができるのですが、解凍しようとするとパスワード聞いてくる・・・。


というわけでいきなり終了・・・


と簡単にあきらめられないので適当なものを打ち込んでみました。
hddrootfs.imgは無理でしたが、initrd.buffaloは誰でも思いつきそうなhttp://d.hatena.ne.jp/images/admin/markup_url.gifのを打ち込むとパスワードが通ってしまいやったと思ったら結局エラー吐いて解凍できません。
なんで万能な解凍ツールであるUniversal ExtractorなるものをダウンロードしてWindows経由で解凍したら成功!!(ところがこれがこれからの苦労の元凶となろうとは・・・)
で時間はかかったけどパスワードはなんとか解決(すいませんが、パスワードについては何も書けません)とりあえず検索エンジンありがとう。


さてこれで全ての準備は整ったので後は/dev/sda1にuImage.buffalo、initrd.buffalo、hddrootfs.buffalo.updatedファイルをコピーしてLS-GLにディスクを戻し再起動。


LEDが点灯してゴリゴリいい始めさあこれで完了と思ったらピィピィピィピィとLS-GLが甲高い声で泣き始めた。
根拠のない自信はかなりあったのにいきなり失敗とは・・・。


何が原因か考えると/dev/sda1にファイルをコピーしただけで他のパーティションをフォーマットしてないことに気づき
まず/dev/sda2をマウントしようとしたら・・・できない。
なんで?と思いながらググッてるとどうも/dev/sda2はxfsでフォマーットされてて、CentOS 5のデフォルトではxfsはサポートしてないと。
これはもう面倒くさすぎてちょっとあきらめかけましたが、どちらにしろこのままだとLS-GLがただの内蔵ハードディスクまで落ちてしまうことになるので再度がんばりました。


こちらのシステム開発の備忘録 | CentOS 5 + XFSを参考にCentOSをxfsに対応させマウントに成功。


後は/dev/sda2と/dev/sda6のファイルを全てを削除(/dev/sba5はスワップなので何もせず)再チャレンジです。
ちなみに/dev/sda2と/dev/sda6は最初からxfsなので特にフォーマットはしていません。
で結果はというと・・・またピィピィピィピィ泣き始めた。
さすがにこうなるとそもそも最初から無理だったんじゃないかと思いました。
さらに追い打ちで自分が買ったのは新型のLS-GLであることに気づき、ハード自体が異なってるから無理なんじゃないかという疑問が頭をもたげ始めました。


とはいいつつもこんなところで諦めたくないので色々考えているうちにinitrd.imgを解凍したときのエラーを思い出しました。
なので早速ファイル自体に問題ないか確認してみました。
hddrootfs.buffalo.updatedファイルはtarでアーカイブされてるだけのようでtarコマンドでエラーもなく展開できました。
ところがinitrd.buffaloはちゃんと見れない・・・なぜ?

手順としてこんな感じでinitrd.buffaloの中身を確認しようとしました。


1. ddコマンドで先頭のブロックをスキップしてファイルに出力します。
 $ dd if=initrd.buffalo of=initrd.gz bs=64 skip=1


2. gunzipコマンドで出力したファイルを解凍します。
 $ gunzip initrd.gz


3. 解凍してできたファイルを適当なディレクトリにマウントします。
 $ mount -o loop initrd /mnt/tmp


initrd.buffaloに問題なければこの手順でマウントできるはずなのにできないってことはファイルが壊れてるってことだ!!とようやく原因に気づきました。
なので適当なパスワードではなくちゃんとしたパスワードを入力してinitrd.imgを解凍すると・・・何のエラーも発生せず普通にunzipコマンドで解凍できました!!
後はいうまでもなく手順通りにやって全てがうまくいきました。
確認してないですけど、/dev/sda2にファイルや/dev/sda6にファイルが残ってても問題なくできたと思います。
ファームウェア更新したらデータが全て飛んだなんて事になったら大問題ですから。


長々と書きましたがLS-GLでHS-DHGLのファームウェアを動かすことは可能です。
ですが一切ここに書いてあることを行うことは推奨しておりませんので、みなさんは素直にHS-DHGLを買ってください。
やるならあくまで自己責任で行い、メーカーの保証も請けられなくなりますのでご注意を。
まあ俺みたいな間違いをする人もそんなにいないでしょうが。