yaroespage::weblog

自作パソコンとその他もろもろの、ヨモヤマバナシです。

--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)
FC2 managemented

 おはこんばんちは(死語)、月刊Linuxメモ・セカンドシーズンでございます。
 ・・・って、すでに開き直っておりますが、やっと更新できました。
 どんどん現実の時間とずれていく一方デスね。
 ホント、月刊ペースで申し訳ないデス。
 とまあ、もはやイイワケもなにもありませんので、どうぞお読みください。

 前回は、「玄箱」がうるさいのでイロイロ対策してはみたれけど、結局、空気穴を開けた段ボール箱に入れてお茶を濁した、というハナシでした。
 (昆虫の飼育じゃないんだから・・・)

 でも、やっぱり、面白くありません。

 しょせん段ボールですから、音は小さくはなったとはいえ「ガマンしようと思えばガマンできる」というレベルに過ぎません。
 なので、依然として使わないときには電源を切っており、ダンボールに入れたおかげでかえってスイッチのON/OFFのたびに段ボール箱の中へと手をつっこまないといけないという新たな「面倒くささ」が発生してしまいました。

 とまあ、「騒音レベルの低下」と「面倒くささ」を両天秤にかけたら「かろうじてつりあうかも」と言えなくもないかも知れないというヤヤコシイ心理状態であり、「このままでもいいか」というキモチと「何とかせねば」というキモチが交互に膨らんだりしぼんだりというビミョーな心理状態なのです。

 さて、前回を振り返ってみますと、HDDのモーターを止めるところまでは成功したのに、最終的に敗北・・・じゃなくて戦略的撤退を決断するに至った主な原因は、Linuxのいくつかのデーモンが特定のファイルに定期的にアクセスするため、hdparmコマンドで長時間アクセスしていないときにはHDDの回転を止めるように設定しても、HDDのモーターが止まってから数分から十数分でふたたび回り始めてしまうというものでした。

 で、今回思いついたのは何かと言いますと、それらのデーモンがアクセスする特別なファイル群をHDD以外の場所に保存することでHDDアクセスを減らし、最終的にHDDのモーターが止まっている時間をできる限りなく長く長く長~くしちゃおう、というものです。

 この案は、別に私オリジナルってわけじゃなくて、RAMディスクを使って解決するという既知の方法があるんですが、これだと玄箱の電源を切った時には保存された情報が消えちゃう(RAMですから)という弱点があるんです。

 “弱点”といっても、電源ボタンを押したら電流の供給が止まり即シャットダウンというワケではなくて、ユーザーが電源を切りたいという意思を玄箱のシステムに知らしめるために電源OFF要求の割り込み信号を送るスイッチなのであって、それを受け取ったシステムが電源が切れてもいいようにいろんな処理をした後で、電源管理を担当している装置に「電源切ってちょ」と頼み、その後でやっと電源が切れるようになってるワケですから、その“後片付け”の中にRAMディスクの内容をHDDに退避するという処理を含めてやれば問題のなくなる程度の“弱点”ではありますす。

 /dev/ttyS1にEEEEの4文字を送ってからsuhtodown -hすると電源が落ちます。
 # echo -n EEEE >/dev/ttyS1
 # shutdown -h now

 あ、そうそう、終了時だけでなく『起動時に退避したファイル群をRAMディスクに展開する処理』もセットで必要ですネ。

 と、偉そうに書いてはみましたが、私のような新参者リナサティアンにとっては、じゃあ具体的にどこをどうイジるのかという段階になるとピタッと手が止まり・・・。

 リナサティアン ⇒ リナクス人間 ⇒ リナックス・ユーザー。
 以前は「リナクサー」とか読んでましたが、最近はもっぱらこう呼んでます。

 ということで、今回ひらめいたのが、おいしい用途にめぐり合うまで放置状態だった外付けDVD-RAM/Rを利用したらどうカナというアイデアなのです。

 RAMディスクはRAMディスクでも、DVD-RAMディスクに保存しちゃおうってことです。

 今回利用するDVD-RAMドライブを収めたメルコ(現バファロー)製の外付けDVD±RW「DVM-4242IU2」の空ケース(長い!)は、「PC連動AUTO電源機能」というのがあって、本体機器の電源ON/OFFに連動してくれますから、玄箱の起動時にDVD-RAMドライブの電源が入ってなくてアジャパーという事態は起こりえないのです!(偉そう)。

 PC連動AUTO電源機能とは、PCが起動してUSBポートに電圧がかかると自分も起動し、PCがシャットダウンしてUSBポートの電圧が下がると自分も電源オフするという機能です。

 ということで、ココがこのアイデアの私オリジナルの部分だったワケです。

 みなさんのご想像のとおり、「面倒くさくならないように」とひらめいたアイデアのおかげで、どんどん面倒くさくなっていきます・・・(泣)。
 まあ、面倒くさがらずに読んでください(笑)。

 さ~て、まずはUSBですが、LinuxにはmurasakiというUSBのホットプラグを実現するソフトウェアがありますのでコレを利用しない手はありません。

 実際には、カーネル2.4以降ならは、USB機器の認識はカーネル行います。
 murasakiは機器の接続/取り外しにあわせ、対応するモジュール(Windowsで言うところのデバイスドライバ)をリアルタイムでロード/アンロードしてくれるデーモンなんです。

 さっそくapp-getで調べてみますと、な~んだ、玄箱のDebianには既にインストールされているじゃないですか。

 それなら話は早い、と裏側に1コだけあるUSBコネクタに外付けDVD-RAM/Rドライブのプラグを挿します。

 すると・・・、

 「ビボン」

 な~んちゃって、サウンド機能のない玄箱から音がするわけはないんですが、Windows XPとかだと「ビボン」と音が鳴ってUSB機器を認識したことをお知らせするでしょ、玄箱でもmurasakiの活躍であれとまあ同じノリで自動で認識しているハズなのです。

 いいんです。私のココロの中で音が鳴ったんですヨ。

 さて、あとは適当なディレクトリにmountコマンドでマウントしてやれば使えるようになるハズです。

 さて・・・で・・・え・・・と。

 あ~、すいません、USBで外付けしたDVD-RAMのデバイス名って/devの中のどれでしたっけ?

 とりあえず/devの中をlsで見てみたら、あるはあるは、ムチャクチャな数のデバイス名が表示されるじゃないですか。

 それが、もう、何というか、大量なんです。

 どのくらい大量なのかって、Tera Term Proのスクロールバーを操ってズズズーっとスクロールアップさせてみてもその先がスクロールアウトしてしまっていて、もはや全貌が伺えないくらいの大量に表示されるんです。

 重要な事実を忘れていました。
 Linuxだったんです。

 何をいまさらアタリマエなことを!

 いや、そうじゃなくて、Windowsの「マイ コンピュータ」のように、認識されてモジュールがロードされたデバイスだけが/devの下に現れるんじゃないかな~と期待してたんですよ。

 オロカ者め。

 ハァ・・・、返す言葉もありません・・・・。

@IT Linux Squareのこの記事などで、USBストレージデバイスはSCSI機器として認識されるということは分かりました。  でも、ズバリDVD-RAMをUSB経由でドライブする記事にめぐり逢えませんでした。

 SCSI接続のDVD-RAMドライブをLinuxで使う記事は見つけたんですがねぇ・・・。

 しょうがないので、USBストレージを使う方法を参考にいろいろと試してみることにしました。

KURO-BOX:# cat /proc/bus/usb/devices
bash: /proc/bus/usb/devices: No such file or directory
KURO-BOX:#

 ふへ?

 さっそくエラーですか?
 ファイルがないですと?

 ホントにぃ?

 どれどれ、/proc/bus/usbの中を覗いてみましょう。

KURO-BOX:# cat /proc/bus/usb
bash: /proc/bus/usb is a directory
KURO-BOX:#

 おっと間違えた。

 Linuxのシェル「bash(Bourne Again Shell)」では、カーソルキー上下で過去に入力したコマンドが呼び出せるので大活用させてもらってますが(いちいちマジメに打ってたらコマンド入力のOSなんて使ってられませんヨ)、ついイキオイで直前のコマンドの/devicesの部分だけを消してエンターキーを押してしまいました。

 ちなみにこのコマンド・ヒストリー機能ですが、Windows XP付属のコマンドプロンプト(cmd.exe)でも同様の機能があります。

 ディレクトリはcatできませんわな。

 ということで、カーソル上キーでcat /procbus/usbを呼び出し、“cat”を“ls”に打ち直して、と。

KURO-BOX:# ls /proc/bus/usb
KURO-BOX:#

 やっぱ、空ですか・・・。

 Linuxの場合、ディレクトリ内に何もない場合は、上記のように何も表示されません。
 寡黙ですね。
 慣れないうちは、つい何度も確認してしまいます。
 基本的にLinuxでは「便りのないのは良い知らせ」というキモチで操作しないと不安になり、ムダな作業を繰り返してしまうことになります。

 つーか、今でも慣れてませんが(苦笑)。

 参考文献はRedhat LinuxやTurbo LinuxでのハナシでしたのでDebian GNU/Linuxでは違うのだろうと割り切って、強引にmountしてみました。

 おいおい大丈夫かい?

KURO-BOX:# mkdir /mnt/usb  ← あらかじめマウントポジションを作っておきます
KURO-BOX:# mount -t vfat /dev/sr0 /mnt/usb
mount: /dev/sr0 is not a valid block device
KURO-BOX:#

 ダメでした。

 ほらみろ。

 USBなのでusbfsなのかも知れません。

KURO-BOX:# mount -t usbfs /dev/sda /mnt/usb
KURO-BOX:# ls /mnt/usb
KURO-BOX:#

 エラーが出ない。
 ウホッ! いけるかも!

KURO-BOX:# ls /mnt/usb  ← DVD-RAMを覗いてみましょう
001  002  devices  drivers    ← なんだこりゃ?
KURO-BOX:#

 何か変ですよ?

 ぐぐる・ぐるぐる・ぐぐるぐ~!

 あ、いきなりスミマセン。
 ↑は、“いっぱいいっぱい”になりかけの状態の私がGoogleで検索するときに、無意識につぶやいてしまう呪文です。

 ちなみに“いっぱいいっぱい”になってしまったときですが、すっくと立ち上がってこの呪文を唱えながら、なにやら棒状のものを振り回してパソコンをぶん殴っているようなしぐさをするそうです。(目撃者・談)

 えーと、usbfsのmountの仕方を間違えてました。
 (ぎゃふん)。

KURO-BOX:# umount /dev/sda    ← 失敗したヤツはアンマウントして
KURO-BOX:# mount -t usbfs none /proc/bus/usb ← usbfsを宣言
KURO-BOX:# mount /dev/sda /mnt/usb      ← ふたたびマウント
mount: /dev/sda is not a valid block device    ← 失敗(泣)
KURO-BOX:#

 ぐぐる・ぐるぐる・ぐぐるぐ~!
 ぶ~ん、ぶ~ん(振り回した両腕が風を切る音)。

 LinuxにUSB経由でデジカメを繋ぐこんな記事を発見しました。

 どうやら、USB経由で記録デバイスを利用するにはusb-storageというモジュールがロードされている必要があるみたいです。

 murasakiサンのおかげによりusb-ohciとusbcoreは読み込まれていますが、意中の人であるusb-storageの姿はありません。

KURO-BOX:#lsmod
Module          Size  Used by    Not tainted
usb-ohci       20688   0  (unused)
usbcore        65996   0  [usb-ohci]
KURO-BOX:#

 「それでかぁ!」ということで、usb-storageを手動でロードしてみます。

KURO-BOX:# modprobe usb-storage ← usb-storageを手動でロード
KURO-BOX:# lsmod     ← もう一度モジュールを表示してみると・・・
Module          Size  Used by    Not tainted
sr_mod         15812   0  (autoclean)
cdrom          29200   0  (autoclean) [sr_mod]
usb-storage    24968   0
scsi_mod       60272   2  [sr_mod usb-storage]
usb-ohci       20688   0  (unused)
usbcore        65996   0  [usb-storage usb-ohci]
KURO-BOX:#

 ぎょぼっ!
 一気にものすごい数のモジュールがっ!

 なんだかいけそうですよ、コレは!

 ではさっそくマウントしてみましょう。
 メディアはWindowsでFAT32でフォーマットしてありますので読めるハズです。
 (多分)

KURO-BOX:# mount -t vfat /dev/sda /mnt/usb
mount: /dev/sda is not a valid block device
KURO-BOX:#

 がーん!
 どうゆうこうとですか、これは!

 なんでマウントできないですか~。
 しくしくしく。

 ちょっと待ってくださいよ。

 lsmodの出力ですが、scsi_modがsr_modでusb-storageとなってますよね。
 他にもcdromとかいう単語もありますネ。

ピピーン!ピピーン!

 /dev/sr0(SCSIの光学ディスクドライブ)を指定するべきなんじゃないですか?

KURO-BOX:# mount -t vfat /dev/sr0 /mnt/usb
KURO-BOX:#

 うほう!
 エラーが出ません!

KURO-BOX:# ls /mnt/usb
Conguraturations!.txt     ← あらかじめWidowsで書き込んでおいた
                             ファイルが見えたっ!
KURO-BOX:#

 おめでとう、私!
 おめでとう、俺!

 ↑のフレーズ、当サイトのいろんな記事に何度となく出てくるのですが元ネタはなんですか? というお問い合わせは一度も来てませんが、今とても嬉しい気分なのでお答えします。
 「転校生」(大林宣彦監督1982年)のラストシーンの「さようなら、私!」「さようなら、俺!」です。
 あ、どうでもよかったですカ?

 さて、このままでも良いのですが、これからの用途を考えたらファイルシステムはFAT32よりext3にしておいたほうが良さそうです。
 (なんとなく)。

 どうせ、片面2.7GBのDVD-RAMですと、最新のDVDマルチドライブとかでは読み込み専用になってしまって使い道がありませんので、玄箱専用と割り切って使ってもいいんです。

 ということで、ext3(Linux純正ファイルシステム)でフォーマットしちゃいマス!

KURO-BOX:# mkfs -t ext3 /dev/sr0 ← mke2fs -j /dev/sr0でも可
mke2fs 1.27 (8-Mar-2002)
/dev/sr0 is entire device, not just one partition!
Proceed anyway? (y,n) y
/dev/sr0 is mounted; will not make a filesystem here!
KURO-BOX:#

 ウップス、ソーリー。
 マウントしたままではフォーマットできませんですね。

KURO-BOX:# umount /dev/sr0
umount: /mnt/usb: device is busy
KURO-BOX:#

 ギャア!
 アンマウントできません!

 ドライブのイジェクトボタンも効きません。

 明らかに何者かの手によってロックされてます。

 何者かって、Linuxシステムでしょうが。

 FAT32なのが原因でしょうか?
 Windowsでも、FAT32でフォーマットされたMOやDVD-RAMをドライブに挿入したら、再起動しない限り取り外せないという制限のあった時代がありましたから。

 Windos 9xとかWindows NTとか。

 さて、どうしましょう・・・。

 とりあえず、リセットしてしまいましょう♥

 それでよいのか?

KURO-BOX:# echo -n DDDD > /dev/ttyS1
KURO-BOX:# shutdown -r now

 リスタートの時は「DDDD」を書き込みます。

 さて、再起動しましたので、細かいことは忘れて(笑)、作業を続行しましょう。

KURO-BOX:# modprobe usb-storage ← 再起動したのでusb-storage
                                   をロードしなおします
KURO-BOX:# mkfs -t ext3 /dev/sr0 ← フォーマット開始
mke2fs 1.27 (8-Mar-2002)
/dev/sr0 is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
305216 inodes, 609480 blocks
30474 blocks (5.00%) reserved for the super user
First data block=0
19 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
 
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information:
done
 
This filesystem will be automatically checked every 36
mounts or 180 days, whichever comes first.  Use tune2fs
-c or -i to override.
KURO-BOX:# mount -t ext3 /dev/sr0 /mnt/usb
                     ↑“-t ext3”を忘れずにネ
KURO-BOX:# ls /mnt/usb  ← エラーが出ないゾ! じゃあ、lsだ!
lost+found        ← コレはext3初期化時に勝手に作られるフォルダ
KURO-BOX:# mount  ← うれしくなって、mountコマンドで再確認
/dev/hda1 on / type ext3 (rw,noatime,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /mnt type ext3 (rw,noatime)
/dev/sr0 on /mnt/usb type ext3 (rw)    ← ここに注目ぅ!
KURO-BOX:#

 やりましたデス。

 まんまとマウントできちゃいましたヨ。

 もうちょっとなんかやってみましょう。

KURO-BOX:# cd /mnt/usb   ← カレントディレクトリを移動
KURO-BOX:# mkdir test    ← テストでtestフォルダを作成
KURO-BOX:# ls
lost+found      test     ← 増えた
KURO-BOX:# rmdir test    ← testフォルダを削除
KURO-BOX:# ls
lost+found               ← 減った
KURO-BOX:#

 ラリホ~!

 睡眠の魔法じゃありませんヨ。
 若い読者向けに、念のため。

 調子に乗りついでに、アンマウントも実験しちゃいましょう。

KURO-BOX:# umount /dev/sr0 ← アンマウント
KURO-BOX:# ls /mnt/usb     ← エラーが出ないので、続けて“ls”
KURO-BOX:#                 ← 何もない(つまり、アンマウント成功)

 わーい。
 パチパチパチ。

 やっぱ、こうでなきゃ。
 えっへん!

 さて、いつまでものぼせているわけにもいきません。

 HDD以外のファイルの保存先が確保できましたので、各種デーモンたちが操るファイルの保存先を/mnt/usbディレクトリ以下に変更しましょう。

 あと、玄箱の起動時にDVD-RAMを自動的にマウントするようにもしちゃいましょう。

 起動時の自動マウントはこのあたりを参考にすればいつでもできそうですから、まずはどれだけのデーモンがHDDに定期的にアクセスしているかというのを調べて・・・。

 ん? 「調べて」ですと?

 ちょっと待ってくださいよ。
 そもそも、このデーモンについてコツコツ調べるという作業がヒジョーに面倒くさそうなので、RAMディスクを使わないてどうにかって方向で話を進めていったんじゃなかったのでしょうか・・・。

 あれ~?
 ってゆうか、本末転倒?(能登麻美子の声で読んでネ)。

 どういうことなんでしょうかね、これは。

 「どういうことなんでしょうかね、これは。」ってアンタ、他人事みたいに。
 自分のことでしょうが。

ピピーン!フガー!

 もういいデス!
 寝マス!

初出:2005/02/28
誤字等訂正:2005/03/01

スポンサーサイト
FC2 managemented
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。