三台目の USB HDD


USB HDD を三台挿すと三台目が正常にマウントされない。確認のため dmesg を見てみる。

root@HD-H300LAN: dmesg | grep sd
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 1953525168 512-byte hdwr sectors (-99306 MB)
 sda:<6>Adding Swap: 265064k swap-space (priority -1)
 sda1
Attached scsi disk sdb at scsi1, channel 0, id 0, lun 0
SCSI device sdb: 312581808 512-byte hdwr sectors (160042 MB)
 sdb: sdb1
Attached scsi disk sdc at scsi2, channel 0, id 0, lun 0
SCSI device sdc: 488397168 512-byte hdwr sectors (250059 MB)
 sdc: sdc1

カーネルには sda, sdb, sdc として認識されているようだ。しかし /dev ディレクトリには sda と sdb しかない。ネット検索で「カーネルによって SCSI デバイスは検出されるがアクセスすることができない場合、そのデバイスに対するスペシャルファイルが /dev にないのでしょう」という記述を見かけた。おそらくこれが原因と思われる。

Linux 初心者であるがゆえ何をするにもすぐつまづいてしまうが、それが楽しくもあり・・・(笑)。


MAKEDEV


スペシャルファイルの作成には MAKEDEV というプログラムを使うようだ(通常はスクリプトらしいが環境によってはバイナリもあるとか)。今回は仮想マシンの Ubuntu から引っ張ってきた。Ubuntu の MAKEDEV はスクリプトだからアーキテクチャの違いは関係ないだろう。というわけで /dev ディレクトリにコピーして以下のコマンドを実行。

./MAKEDEV sdc

見事 sdc 関連のスペシャルファイルが作成された。ちなみに MAKEDEV で作れないスペシャルファイルは mknod コマンドを使って自作するそうだ。マウント成功記念に /proc/mounts を表示。

root@HD-H300LAN:/dev# cat /proc/mounts | sort
/dev/hda3 /mnt/hda ext3 rw,noatime 0 0
/dev/ram0 /mnt/ram ext2 rw 0 0
/dev/root / ext3 rw,noatime 0 0
/dev/sda1 /mnt/hda/sda ext3 rw 0 0
/dev/sdb1 /mnt/hda/sdb ext3 rw 0 0
/dev/sdc1 /mnt/hda/sdc ext3 rw 0 0
/proc/bus/usb /proc/bus/usb usbdevfs rw 0 0
devpts /dev/pts devpts rw 0 0
proc /proc proc rw 0 0
rootfs / rootfs rw 0 0

そうそう、最初 LinkStation には sort コマンドが入っていなかったんだよね。この /proc/mounts のリストをソート表示したくて入れたんだっけ(笑)。ちなみにマウントポイントがクレイジーなのは LinkStation の WEB ツールのせい。そのうちこの辺にも手を入れたいと思っている。


成功の余韻も束の間・・・


再起動したら何故か Telnet が繋がらなくなった。起動中に何らかの問題が発生している模様。一旦 USB HDD を外してもう一度起動してみる。今度は問題ないようだ。この状態で USB HDD をホットプラグすると正常にマウントされる。原因を切り分けるために LinkStation 付属のマウントスクリプトを無効にしてみた。さあ再起動・・・Telnet は繋がる・・・デバイスもちゃんとカーネルに認識されている。問題は起動時のマウントにあるらしい。どのみち付属のスクリプトは気に入らなかったので書き直したいと思っていた。まあそれなりにやりがいが出来たということで良しとしよう(苦笑)。







タグ:

LinkStation
最終更新:2008年09月02日 23:42