元質問者の近藤です。こんにちは。 > 全くのアイディアだけで、できるかどうかわかりませんが、 > 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更新:富士山編