vine-users ML アーカイブ



[vine-users:053113] Re: Q: USB で複数のディスクを 接続するには?

  • From: nkon@xxxxxxxxxxxxx
  • Subject: [vine-users:053113] Re: Q: USB で複数のディスクを 接続するには?
  • Date: Sat, 24 Aug 2002 23:26:42 +0900
元質問者の近藤です。こんにちは。


> 全くのアイディアだけで、できるかどうかわかりませんが、
> dump_usbdev の出力で、vendeor IDなどがわかるので、
> これでマウント先を分けてやるのはどうでしょうか?

アドバイスありがとうございます。
dump_usbdev というコマンドは知らなかったのですが、
いろいろと情報が得られそうですね。参考にします。

さて、
今の所、下のように、今つながったデバイスを判定させるところまで来ましたが、
そのデバイスのデバイスファイルを判定できていません。

ちょっと長いですが、整理したスクリプトを示します。
なんせ、ちゃんとしたシェルスクリプトを書いたのは
今日がはじめてなので、みっともないですが。

/etc/murasaki/bin/mount-usb-storage2.sh のところで、

# find now conected device の所、いまつながったUSBデバイスを
/var/log/message へ出力される murasaki のログから見てるところは
ほぼ、正しくとれています。

ただし、その下で、

# find device file の所、そのUSBデバイスがどのデバイスファイルに割り当て
られているところがうまく判別できません。

うーん、うまく説明できないですが、次のような状況です。

1番目のデバイスを USB に接続→ sda1 をデバイスファイルと判定: 正常
2番目のデバイスを USB に接続→ sdb1 をデバイスファイルと判定: 正常
2番目のデバイスを USB からはずす → デバイスファイルを判別できなくても
                                    umount 可能

1番目のデバイスを USB に接続→ sda1 をデバイスファイルと判定: 正常
2番目のデバイスを USB に接続→ sdb1 をデバイスファイルと判定: 正常
1番目のデバイスを USB からはずす → デバイスファイルを判別できなくても
                                    umount 可能
再度、1番目のデバイスを USBに接続 → /var/log/message に kernel からのロ
グが出てこないので、デバイスファイルを見つけられない。

○ /etc/murasaki/murasaki.call の内容↓

usb-storage: /etc/murasaki/bin/mount-usb-storage2.sh

○ /etc/murasaki/bin/usb-storage-mountpoint の内容↓
各項目を 一個のスペースで区切って並べてデータベースにする。
ベンダID、プロダクトID、そのデバイスをマウントしたいポイント、
そのデバイスのファイルシステムのタイプ、コメントの順

# vendor product mountpoint fstype comment
0x4bb 0x103 /mnt/USB_HD vfat IO-DATA HDP-U40P portable USB HDD
0x7b4 0x105 /mnt/C2040 vfat Olympus C-2040Zoom Digital Camera

○ /etc/murasaki/bin/mount-usb-storage2.sh の内容↓

#!/bin/sh

CONFIG_FILE=/etc/murasaki/bin/usb-storage-mountpoint
LOG_MESSAGE_FILE=/var/log/messages
WORK_FILE=/etc/murasaki/bin/work

#########################################
# find now conected device
#########################################

if [ -f ${LOG_MESSAGE_FILE} ] ; then
	tac ${LOG_MESSAGE_FILE} | grep 'murasaki\.usb\[[0123456789]\+\]: vendor:[0123456789abcdefx]\+ product:[0123456789abcdefx]\+ ' > ${WORK_FILE}

	read -a a_line < ${WORK_FILE}
fi

rm -f ${WORK_FILE}

VENDOR=${a_line[5]}
PRODUCT=${a_line[6]}

VENDOR=${VENDOR/vendor:/}
PRODUCT=${PRODUCT/product:/}

#########################################
# look up mount database
#########################################

if [ -f ${CONFIG_FILE} ] ; then
	grep "${VENDOR} ${PRODUCT}" ${CONFIG_FILE} > ${WORK_FILE}

	read m_vendor m_product m_mountpoint m_fstype m_comment < ${WORK_FILE}
fi

rm -f ${WORK_FILE}

#########################################
# find device file
#########################################

if [ -f ${LOG_MESSAGE_FILE} ] ; then
	tac ${LOG_MESSAGE_FILE} | grep 'kernel: SCSI device sd[abcdef]:' > ${WORK_FILE}
	read -a a_line < ${WORK_FILE}
fi

rm -f ${WORK_FILE}

DEVICE_FILE=${a_line[7]}
DEVICE_FILE=${DEVICE_FILE/:/}
DEVICE_FILE=${DEVICE_FILE}1

case $1 in
start)
	/bin/mount -t $m_fstype /dev/${DEVICE_FILE} ${m_mountpoint}
	echo /bin/mount -t $m_fstype /dev/${DEVICE_FILE} ${m_mountpoint}
	;;
stop)
	/bin/umount ${m_mountpoint}
	echo /bin/mount ${m_mountpoint}
	;;
esac








なにかアドバイスを頂けないでしょうか。

特に、ある USB ストレージデバイスが、どういうデバイスファイルを持つか、
という情報が知りたいです。

みなさんは、複数の USB ストレージデバイスはどのように扱っていますか?


よろしくお願いします。


-- 近藤靖浩 <nkon@xxxxxxxxxxxxx>
http://www.bf.wakwak.com/~nkon/diving/       8/21更新:富士山編