ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

HDLP-S500にSSHで接続する

会社から買い取った機材の中に、HDLP-S500というI-O DATA製のNASがある。このNASを選んだのは私で、選んだ理由としては2.5インチHDDを採用しているので消費電力が少なく、場所もとらず、当時(1年弱前)として500GBのNASで1万円は安かったという事。

自分で使うことになるとわかっていたら別の製品を選んでいたのだが、今それを言っても仕方がない。新品が4000円ほどで投げ売りされていたみたいだが、そんなことを知らずに会社から5,000円で買い取ったことも仕方がない。
新品で4,000円で売られていたものを、1年常時可動でアッチッチでデザイナがしょっちゅう起動中に持ち上げていたものを5,000円で買い取って、それ以上の値段での売却には希望が持てないので自分で使うことにした。

ということでここ数日使っているのだがなんせ遅い。LANインターフェイスは1000BASE-Tなのだが、もちろんそんな速度は出ない。100Mbpsどころか10Mbpsくらいしか出ない。それは言いすぎだ。ファイルを転送すると、5MB/sくらいの速度しかでない。
これは上に書いた1年の稼働歴(基本電源入れているだけ)とデザイナの破壊工作があった結果かもしれないが本当に遅い。

本体にBitTorrentが組み込まれているので、そこからGNU/Linuxディストリビューションのアーカイブの取得させているのだが、ダウンロード中であれば管理パネルにアクセスできないのは致命的。
これは多分HDD内にOS領域が入っていて、HDDへのアクセスが集中するとDiskIOがおいつけなくなるか、そもそもハードウェアでプロセスが捌ききれなくなっているかどちらかと思う。およそ潤沢なメモリや高性能なCPUが使われているとは思えない。

I-O DATA LAN&USB接続ハードディスク LAN DISK 500GB HDLP-S500

I-O DATA LAN&USB接続ハードディスク LAN DISK 500GB HDLP-S500


なのでハードウェアを確認しようと思ったのだが、製品のスペックには何も書かれていない。ただし、USBで直に接続できるという事を知った。これは文鎮化してしまったとしてもUSB-HDDで使えるという事で心強い。

製品ページに記載がなくても本体に直接接続してdmesgやcpuinfoを見ればわかるであろう。こういった製品はほぼ100%がGNU/LinuxをOSに採用していて、カスタムメイドにするとソースコードを公開しないといけなかったり、制作コストの削減のためにほぼ配布ディストリビューションのまま使われていることが多い。

王道としては本体にシリアル接続するのだが、それは少々ハードウェアをいじらないといけないので却下とする。これは最終手段とする。

次に考えられるのは本体にSSHで接続すること。これは大半のNASではデフォルトでsshdが起動されていないので、どうにか書き換えてやることで起動させることが出来る。

起動方法はいくつか方法があるが簡単なのは2通り。

  1. 本体のHDDにOS領域が含まれている場合、本体からHDDを抜き、別PCに接続しHDDの起動スクリプトを修正する。
  2. 本体のファームウェアをカスタマイズして焼きこみ、起動させる。

大体このどちらかになる。1.の方法はシンプルなのだが、いかんせん本体からHDDを取り外す必要があるので面倒くさい。だが、簡単で確実な方法になる。2.の方法はファームウェアの更新方法さえわかればある程度は行えるが、ファームウェアの更新をミスすると本体を文鎮化してしまう。昔、携帯電話の開発現場で働いていた頃、本体の焼きミスは数千万円の高級文鎮の製造と同義であったため、焼きミスの恐ろしさは必要以上に知っている。

んで、1.の方法で行おうかと思ったのだが、2.の方法が簡単であることがわかった。http://www.iodata.jp/lib/product/h/3345_win7.htm:ファームウェアをダウンロードして展開してみると、「update.tgz」内にOSの構成ファイルとアップデートスクリプトが入っているという単純な構成であるという事がわかった。
「landisk-update.sh」なんて渋い。これがアップデートスクリプトそのもので、なんと日本語でのコメント付きという豪華仕様。このスクリプトにsshdの起動スクリプトを書いてやればいい。

ところが、現在の状態では本体にSSHがインストールさているかもわかっていないし、中身がGNU/Linuxであるという事の確認もとれていない。と言う事で調べてみたらあっさり情報が見つかった。
ディストリビューションは不明だが、OSはGNU/Linuxで間違いなさそう。update.tgzの構成ファイルからも確認が出来た。次に、SSHはやはりインストールされており、rcスクリプトとしても用意されているが、デフォルトでは停止されているためそれを起動させてやればいいだけとのこと。

スクリプトも単純で、「landisk-update.sh」の70行目に以下を追加してやればいい。(以下は全て本日現在の最新ファームウェア1.18で確認。)

mv /etc/rc2.d/K20ssh /etc/rc2.d/S20ssh

diffはこちら。

70a71
> mv /etc/rc2.d/K20ssh /etc/rc2.d/S20ssh

これだけでSSHを起動させられる。


あとはこれを管理パネルからファームウェアを更新するだけでいいのだが、同じバージョン番号ではファームウェアの更新を受け付けてくれないため、ファームウェアの番号を書き換える必要がある。

だがこれをしてしまうと、明日以降に新しいバージョンのファームウェアが公開された時にファームウェアのバージョンが、書き換えたバージョンより小さければ更新できなくなってしまう。更新するには同じ手順で、ファームウェアのバージョンを大きな値へ書き換える作業が必要になる。もちろん、これらすべての作業は自己責任で。

ファームウェアのバージョン番号の書き換えは、「for_HDLP-G_series」ファイルにバージョンだけが書かれているので、そのバージョンを書き換えるだけでいい。大きな数値にすると今後の更新に困るので注意。あと、実験はしていないが数字以外はダメかと思う。ちなみに私は続き番号の「1.19」に設定した。


これでファームウェアの準備は完了で、書き換えたファイルをアーカイブすればいい。アーカイブは1つのディレクトリに入らないよう、展開したディレクトリで以下のコマンドでアーカイブする。もちろん、展開したファイル以外が入らないようにしておく。(update.tgz等が入らないようにしておく。)

% tar -czf update.tgz *

この「update.tgz」を本体の管理パネルの「ファームウェアの更新」から通常のファームウェアと同じように更新する。何度も言うが、手順を間違っていたら文鎮化することになるので更新は自己責任で。

f:id:mon0:20130905005441p:plain

あとは更新と再起動を待ち、再起動が終わればsshdが起動された状態で起動される。あとは通常のssh接続の通りに接続できる。デフォルトでrootユーザで接続が出来、パスワードもrootとなっている。


接続後は通常のGNU/Linuxと同じく操作することができる。これらの手順は上位機種の「HDLP-S1.0」でも同様に使えるかと思う。(未確認)


本体の情報を書こうと思ったのだが個々までが長くなったので本体の情報は次の記事に書くことにする。

I-O DATA LAN&USB接続ハードディスク LAN DISK 500GB HDLP-S500

I-O DATA LAN&USB接続ハードディスク LAN DISK 500GB HDLP-S500