« Windows2000でDRM付きコンテンツの試聴ができない | トップページ | 玄箱の時刻合わせ »

2008/09/14

玄箱に接続したUSBハードディスクをホットプラグ対応させる

以前、玄箱にUSB接続でハードディスクを増設しましたが、これは /etc/fstab で直接マウントさせる方法で、設定は簡単なのですが、玄箱HG起動前にUSBハードディスクを接続しておく必要があり、起動後はずーっと付けっぱなしになります。
設定した時は、そういう運用でいいかなーと思ったのですが、増設したUSBハードディスクが1T(テラ)もあるのでここに置くのは基本的に動画ファイルやCDのイメージなどファイルサイズが大きいものになります。
こういうファイルを日常的に使うわけではないので、外付けハードディスクの電源が常に入れっぱなしになっているのはなんとなく無駄な気がしてきました。
そんなわけで、使いたい時に外付けUSBハードディスクを挿せば使えるようにするため、ホットプラグ対応を行うことにしました。
今まで謎だった murasaki の動きについて勉強できるしね。

とりあえず、玄箱にUSB接続でハードディスクを増設で行った変更は元に戻しておきました。


さて、やり方ですが、「玄箱の本」に全部載っています。(笑)
ま、玄箱HGを買った人は持っていて損は無いと思います。

「玄箱の本」の付属CDから murasaki_mount.tar.gz を玄箱の適当なフォルダに置きます。
# tar xzvf murasaki_mount.tar.gz -C /
とコマンドを打ってインストールします。

# tail -f /var/log/messages
として messages を表示したままUSBハードディスクをぶぢっと挿して、出てくる文字列を確認します。
MODULE 0x0383 0x152d 0x2336 0 0 0x0 0x0 0x0 0x8 0x6 0x50 0x00000000
みたいに出てくる
0x0383 0x152d 0x2336 0 0 0x0 0x0 0x0 0x8 0x6 0x50 0x00000000
を後で使うので、忘れないようにエディタとかにコピーしておきます。

その後、
# cat /proc/scsi/scsi
として、
Vendor: SAMSUNG Model: HD103UI Rev:
と出てくるVendor:以降の部分を後で使います。
これだと、SAMSUNG ですね。

/etc/murasaki/murasaki.usbmap の最後に、以下を追加。
alias-sd 0x0383 0x152d 0x2336 0 0 0x0 0x0 0x0 0x8 0x6 0x50 0x00000000

数値部分はさっき調べた数値を追加しています。

/etc/murasaki/murasaki.usbmap の最終行に、以下を追加。
SAMSUNG.* 1 /mnt/share/USB-MOUNT ext3

さっき調べたVendor:と、マウント場所、ハードディスクのフォーマットを記載しています。
1ってのは、最初のパーティションってことです。


これだけでOK、と本では書いてあります。
ちなみに、修正するファイルは読み込み専用なので、ファイルを修正するにはアクセス権を変更するか、vi終了時に :wq! と強制的に書き込む必要があります。


さて、念の為再起動し、USBハードディスクを挿した所・・・・マウントされない・・・。

/var/log/messages を見ると、モジュールのロードで失敗しているようです。
murasaki.depend の問題か!?
でも、本では「ドライバの読み込みは実際には行われません」と書かれています。
さらに、「間違いさえなければ、必ずマウントできるはずです。」とまで書いてあるのに、マウントできないとは!
ファイルの修正ミスが無いか何度も調べたけども間違っていません。


わけがわからず、ネットでいろいろ調べてみました。
すると、槻ノ木隆のPC実験室 ってページにGigabit Ethernet対応「玄箱」(Part2)~USBを使えるようにするという記事がありました。

調べてみた所、玄箱HGのUSBハードディスクのホットプラグは簡単に言うと以下の動きになるそうです。
1、カーネルでUSB Hotplugイベントが発生。
2、hotplug.murasakiが呼ばれる。
3、murasaki.usbが呼ばれる。
4、murasaki.usbで、
 ・カーネルから渡されたUSBデバイスに関する情報を取得する。
 ・この情報と、murasaki.usbmap に記載された情報を比較し、デバイスを特定する。
 ・デバイスが特定できた場合、そのデバイスを利用するするのに必要なドライバを、
  murasaki.dependから読み取ってロードするが、USBハードディスクの場合は、
  murasaki.preload に usb-storage の記述があり既にロードされている為
  ロードしなくて良い。呼び出す真似だけする。
 ・ドライバのロードが終わったら、murasaki.callを呼び出してモジュールに対応したスクリプトを実行する。
5、murasaki.call から murasaki_mount が呼び出される。
6、murasaki_mount は murasaki.mnttab の情報に従って、マウントしたりアンマウントする。

ってことのようです。
2、以降のファイルを順番に追って行った所、murasaki.call って所には
[net]: net
としか書かれていません。
どう見てもUSBハードディスクの設定には見えません。
そこで、このページに書かれているように
/etc/murasaki/murasaki.call の最後に以下を追加しました、
[usb]: /etc/murasaki/bin/murasaki_mount

そしてUSBハードディスクを繋ぐと、きちんとマウントできました!
やっぱりモジュールロード時のエラーは無視してOKでした。
っつーか、「玄箱の本」間違ってるし!!


ちなみに、「玄箱の本」からインストールしたのは murasaki_mount だけです。
上記ページでは、このスクリプトを VineLinuxが配布しているmurasakiのRPMSから取ってこれると書いてあるので、「玄箱の本」が無い人でもできる可能性があります。


もう少しネットを調べた所、
seechickenの日記 の玄箱
って所を見つけました。ホットプラグ化の記事が簡潔にまとまっています。

|

« Windows2000でDRM付きコンテンツの試聴ができない | トップページ | 玄箱の時刻合わせ »

玄箱HG」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 玄箱に接続したUSBハードディスクをホットプラグ対応させる:

« Windows2000でDRM付きコンテンツの試聴ができない | トップページ | 玄箱の時刻合わせ »