2012/02/29

HDL-GT2.0 素敵NASへの転生の道〜システム構築編〜

もうすぐ3月です。放置プレイもここまで来ると素晴らしいとしかいいようがないですな
(*´Д`)


さてさて、前回から唐突に再開したジャンクネタですが、HDL-GTのつづきです。
前回は記事がでかくなり過ぎて、更に混迷を極めそうなので、敢えて記事を分割しました。いや、いつものことなんですけど。実は今回のネタはほとんど一気に書き上げていて、後から分割してるんです。
なので、余計に見直しに時間がかかったり、分割箇所に手間取ったりしました。その割には、今回は結構ボリュームがあります。でも、文字数は多いけど、内容的には大したこと無い・・・と思います。説明用のコピペが多いですし。

と、いつもの言い訳をダラダラと書いたところで、いよいよ前回の続きを。

では、HDL-GTのシステムディスク作成の流れをおさらい。
1.システム用HDDのパーティション作成。(「/boot」「swap」「/」の最低3つ。)
2.各パティーションをフォーマット。(「/boot」「/」はext3、「swap」はswapとしてフォーマット。)
3.「/boot」と「/」パーティションを適当なフォルダへマウント。
4.それぞれのパーティションに、入手した環境用の圧縮ファイルを展開する。
5.アンマウントして、システム用HDDをHDL-GTに内蔵してHDL-GTを起動させる。
6.うまく起動したら、あとは煮るなり焼くなりスキにすればいいと思うの!(・∀・)

では、ここから実際に私の行った作業を抜粋して書いて行こうと思います。だって面倒くry・・・。

用意した環境・器材は以下、つまり必要環境ですね。
一.Ubuntu(Linux)で稼動しているPC。別にLiveCDでもUSB機器から起動のLive状態でも

     作業出来ると思います。
二.システムディスクとなるHDD。私は余っていた250GBのHDD。単にシステムだけなら20GB
     みたいな小容量でも構いませんが、今じゃSATAの3.5inch HDDでそんな容量探すほうが
     困難かも。
三.直接、もしくはUSB機器などで、Linuxが稼働しているPCと接続し認識できる環境。
     私は、ノートPC(E425)のUbuntuに「裸族のお立ち台」を使ってUSBで接続。/dev/sdb
     として認識されました。
四.HDL-GTシリーズ、もしくはHDL-GXRシリーズ本体・・・当然ですね。そして、専用カート
     リッジが最低でも1個あること。カートリッジがないと、HDDを内蔵出来ませんよ?(方法が
     無いわけではないですが・・・)
五.OPEN LANDISK PLATFORM。もしくはそれに準ずるディストリビューションで、それぞれ
     の機種に合った、カーネルのもの。OPEN LANDISK PLATFORMはアイ・オー・データに
     請求すれば、実費(送料、メディア代など)で手に入るはずです。
     (実はWebでも手に入るんですが、私の探し方が悪かったのか、「普通に」サイトの入り口
     を見つけることが出来ませんでした。googleの検索結果から辿っていったという・・・。
     しかも、アイ・オー・データ公認の正式なパッケージかどうかの保証もない。なので、ここで
     は詳細は書きませんm(_ _;)m)
六.いっさいの保証を受けられなくなるので、その覚悟と、うまく起動できなかった場合にも折
     れない心と、どこかで諦められる心。最悪ポイしたっていい・・・ぐらいの。
七.ジャンク物に対する暑苦しいまでの熱意!


七番は正直要りませんが、個人的な思いです。では、実際の作業に移りましょう。

1.システム用HDDのパーティション作成。
システム用HDDをPCと接続します。Linuxから認識出来たら、パーティション作成とフォーマットを行います。
パーティション作成とフォーマットについては、どのツール・手段を使っても構わないと思います。GUIが楽な人は「GParted」とかでよろしいかと。@もしかしたら最近の大容量HDDだと、fdiksではうまく扱えないかも知れません(何かワーニングとか出たような記憶があります)。そんな場合もGPartedで。私の場合は、使用したのが古い余り物のHDDだし、面倒なんで、全部fdiskで行いましたけど(*´ω`*)
では、fdiskな手順。README.PDF(以下マニュアル)には、bootに128MB、swapに1GB、ルートに最低2GB以上必要と書いてあります。
まずは、マニュアルの指示を元に設定してみましょう。詳細なfdiskの使い方は省略します。

システム用HDDが/dev/sdbで認識され、接続されているとします。

~$ sudo fdisk /dev/sdb

コマンド (m でヘルプ): p

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
ヘッド 255, セクタ 63, シリンダ 30401, 合計 488397168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x000d77ea
デバイス ブート 始点 終点 ブロック Id システム

既になんらかのパーティション・ファイルシステムがあれば、それらが表示されます。私は事前に全てのパーティションを消去済みだったので、何も表示されていません。
以下は、マニュアルの指示を元にパーティションを作成したあとの状態です。

コマンド (m でヘルプ): p

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
ヘッド 255, セクタ 63, シリンダ 30401, 合計 488397168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x000d77ea

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 264191 131072 83 Linux
/dev/sdb2 264192 2361343 1048576 83 Linux
/dev/sdb3 2361344 10749951 4194304 83 Linux
/dev/sdb4 10749952 488397167 238823608 83 Linux

KB表示なので見難いですが、128MB、1GB、4GB、そして残りで合計4パーティションを作成しました。
250GBと大きいHDDなので、Linuxのシステム領域に多めに4GB割り当てました。残りのパーティションは何かに使えると思い、一応作りました。
次にswapパーティションを作成します。先ほど作ったパーティションの2つめのシステムIDをswapに変更してやるだけです。

コマンド (m でヘルプ): t
パーティション番号 (1-4): 2
16進数コード (L コマンドでコードリスト表示): 82
パーティションのシステムタイプを 2 から 82 (Linux スワップ / Solaris) に変更しました

コマンド (m でヘルプ): p

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
ヘッド 255, セクタ 63, シリンダ 30401, 合計 488397168 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x000d77ea

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 264191 131072 83 Linux
/dev/sdb2 264192 2361343 1048576 82 Linux スワップ / Solaris
/dev/sdb3 2361344 10749951 4194304 83 Linux
/dev/sdb4 10749952 488397167 238823608 83 Linux

これでパーティション作成は終わりです。wコマンドでfdiskを終了させて、結果を反映させましょう。

コマンド (m でヘルプ): w

パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

これでパーティション作成は終わりです。

2.各パティーションをフォーマット。
次に作成したパーティションをそれぞれの形式でフォーマットしておきます。「mkfs」コマンドでは、ラベルを付けることが出来ますので、この機会にラベル名を付与してもいいでしょう。
ラベル名に関する明確な指示は、マニュアルには記載されていませんが、気分の問題でしょうか。私はラベルを付けておきたい派なので、ラベル名を付与します。
まずはswapパーティションから。

~$ sudo mkswap /dev/sdb2
[sudo] password for XXXX:
スワップ空間バージョン1を設定します、サイズ = 1048572 KiB
ラベルはありません, UUID=591f68de-1cad-42e6-97f1-b7acd25c1093

swapについては、ラベル付与してなかったので、上記のような出力結果になってますが、特に問題は起きないと思います。
次に「/boot」と「/」パーティションを設定します。「mkfs」コマンドの「-L」がラベルを付与するオプションです。

~$ sudo mkfs.ext3 /dev/sdb1 -L /boot
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=/boot
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
32768 inodes, 131072 blocks
6553 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
16 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729

Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3.「/boot」と「/」パーティションを適当なフォルダへマウント。
マウントはCUIで手動で行っても、GUIでnautilus上でマウントしても構いません。各パーティションをマウントしたら、作業開始です。

パーティションにラベル名を付与していますが、nautilus上でマウントすると「/boot」は「_boot」に、「/」は「_」になっていると思います。これはディレクトリ名に「/」(スラッシュ)が使えないためだと思われます。むしろ新設設計ですね。
このままnautilus上でマウントしてもrootでないと書き込みが行えないので、やはり「sudo」コマンドを併用するか、「su」してrootになって作業する必要が出てくると思います。一般ユーザーでマウントしても書き込み可能にするには、設定が必要になるかもしれませんが、ここでは省略します。興味のある方は調べてみると幸せになれるかも知れません。
※追記・補足
万が一、ファイルの書き込みが許可されていないなどのエラーで作業が出来ない場合は、読み込み専用でマウントされているかもしれません。こういった場合、書き込み可能で再マウントすれば解決します。いずれにしても「何かおかしいなぁ?」と思ったら、フォルダやファイルのパーミッションを確認してみてください。

4.それぞれのパーティションに、入手した環境用の圧縮ファイルを展開する。
マウントした各フォルダに、それぞれに該当した圧縮ファイルを移動して展開します。入手した圧縮ファイルがホームディレクトリにあるものとします。圧縮ファイル名(〜イメージ.tgz)は適宜読み替えてください。

~$ sudo mv (bootイメージ).tgz /media/_boot/ ※(コピーでもOKです。)
~$ sudo mv (ルートイメージ).tgz /media/_/ ※(コピーでもOKです。)
~$ cd /media/_boot/
/media/_boot$ sudo tar xvzf (bootイメージ).tgz
./
./initrd
./uImage.OLP02GT
./uImage.OLP02GXR

マニュアルによると「uImage.XXXXX」というのは、2つのモデル用のそれぞれのカーネルで、HDL-GT用が「〜.OLP02GT」、HDL-GXR用が「〜.OLP02GXR」となっているようです。
私が所有しているのはHDL-GTシリーズなので、「uImage.OLP02GT」を「uImage」にリネームして、「uImage.OLP02GXR」は消してしまいましょう。ちなみに、HDL-GXRの場合は「uImage.OLP02GXR」を「uImage.gxr」に、「initrd」を「initrd.gxr」にリネームするんだそうです。
圧縮ファイルはもう不要なので、サクッと消しておきましょう。



/media/_boot$ sudo rm -f (bootイメージ).tgz

次にルートイメージを展開します。


~$ cd /media/_/
/media/_$ sudo tar xvzf (ルートイメージ).tgz
〜(略)〜

「/usr」や「/var」、「/etc」などのお馴染みのフォルダが展開されていきますので、しばらくお待ちください。なお、展開の出力結果が鬱陶しい方は、tarコマンドのオプションを「xvzf」から「xzf」に変えてください。
ここでも、不要になった圧縮ファイルは消しておきましょう。


/media/_$ sudo rm -f (ルートイメージ).tgz

さて、以上でシステム用HDD作成の基本部分は終わりです。本来ならば、ここでシステム用HDDを実際にHDL-GTに内蔵して、起動を確認する・・・ところなのですが、個々の環境によっては問題が発生します。
問題と言ってもそんなに大した話では無く、この素のシステムでは、DHCPクライアントが有効になっており、DHCPサーバー(家庭内ならDHCPサーバー機能を有したルーターなど)からIPを自動で割り振ってもらうのですが、環境によってはIPを確認することが困難なので、固定IPで起動させるようにします。
HDL-GTには、通常はモニタなども繋げないですし、シリアルコンソールを使うことも出来ません(改造すれば可能かも)。よって、HDL-GTがどんなIPで起動したのか知る術がないと、sshですらログイン出来ないということに。

本来の製品の機能であるWeb管理画面も、このHACKしたHDL-GTにはありません。つまり、あとはルーターでIPを確認するしか方法がないというわけなんです。
実は私はこの失敗をやらかしまして、うちのルーターはIP確認出来ないorメンドクサイものしかないので、手打ちでpingで探しました。まぁ、なんて無駄なことを・・・(ノ´∀`*)
※追記・補足:
私が無知でした。さすがはLinux。こういった場合のコマンドも完備。方法は2種類あります。
1つは単純にpingコマンドをブロードキャスト宛に投げること。もう1つはarpコマンドを使って、LAN内のネットワーク機器を列挙すること。私の場合は、arpコマンドでうまく検出出来なかったので、「ping -b 192.168.1.255」でHDL-GTを見つけることが出来ました。

IP固定の方法は、従来のDebianの作法と同じ。
/etc/network/interfaces と言うネットワークの設定ファイルがあるので、こいつを編集して固定IPにすればOK。細かい解説は省きますが、以下のようになります。

~$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

あくまで一例ですので、eth0やIPアドレスの部分は個々の環境によって、適宜書き換えてください。

5.アンマウントして、システム用HDDをHDL-GTに内蔵してHDL-GTを起動させる。
これで、今度こそHDL-GTに内蔵して起動する準備が出来ました。専用カートリッジに、このシステム用HDDを組み込んで、1スロットル目に差し込んでください。セキュリティーをロック位置にして、いざ!!電源ON!!
(あぁ、もちろんLANケーブルは挿しておいてくださいネ。)

システム用HDDの入った1番目のカートリッジのLEDと、STATUSランプが緑色に点灯すれば、起動OK。おそらくエラー無しに起動できているものと思います。エラーがあれば、甲高いBEEP音が断続的に鳴り、STATUSランプが赤く点滅するはずです。
私の場合は、STATUSランプが緑点滅になったままですが、この状態は・・・
・起動中
・シャットダウン中
・チェックディスク時
・本製品設定中
・ファームウェアアップデート中
・USBおよびeSATA機器の取り外し
・マウント中
・フォーマット中
・バックアップ処理中
のどれからしいです。しかし、これは本来のファームウェアで動作している場合なので、このHDL-GT改(仮)には通用しないかもしれません。
エラーがあれば、前述のようにSTATUSランプが赤く点滅するので、その時は何か問題がないか確認したほうがいいと思われます(特にハードウェア的に)。
特に異常が見られなければ、先程設定したIPアドレスにsshで接続しましょう。

マニュアルには、sshでログインできるユーザーとパスワード。管理者rootのパスワードが記載されていますが、ここでは一応伏せさせて頂きます。
今回作成したシステム用HDDでは、初めからsshが有効になっていますので、許可されているユーザーで接続します。本来はrootで遠隔からのログインは許可されてません。一般ユーザーでログインしましょう。

~$ ssh user@192.168.1.100
user@192.168.1.100's password:

Linux XXXXX 2.6.12.6-arm1 #1 Tue Apr 17 16:31:59 JST 2007 armxxxxxx
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.user@XXXXX:~$

以上のようなプロンプトが表示されたら、HDL-GT改(仮)にログイン成功です。おめでとうございます!!ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノメデタイ
普通にDebianのシステムなので、aptすることも、あんなことやこんなことだって出来ちゃいます。

まぁ・・・ハードウェアの性能やリソースには限りがあるので、「万能NASの出来上がり!」とまでは行きませんが。

今回の投稿の最後に一つだけ。

sshでログインできるユーザーのパスワードや、rootパスワードは適宜変更しておいてください。何があるか(何をされるか)わかりませんので、慎重には慎重を期す・・・ということで、ひとつ忘れずにお願いします。

長くなったので、今回はここまで。

1 件のコメント:

  1. はじめまして
    ジャンクでHDL-GTRのケースを購入しIODATAからソースを
    取り寄せ挑んでるのですがうまくいきません。

    取り寄せたソースはHDLGESRC120と言う圧縮ファイルがあり
    解凍すると「MODIFY」「OTHER」「PACKGE」の3つのフォルダがありました。

    環境はDebian GNU/Linux8を使用しているのですがドラP さんは
    どのLinuxをご利用でしょうか?

    返信削除