元質問の近藤です。こんにちは。 本日一日かかりっきりで、なんとか目処が立ちました。 情報を頂いた方、ありがとうございます。 At Sat, 24 Aug 2002 11:12:26 -0700, shuu-vine@xxxxxxxxxxxx wrote: > > 今の所、下のように、今つながったデバイスを判定させるところまで来ましたが、 > > そのデバイスのデバイスファイルを判定できていません。 > > > # find now conected device の所、いまつながったUSBデバイスを > > /var/log/message へ出力される murasaki のログから見てるところは > > ほぼ、正しくとれています。 > > ログから取るよりか/procから取るほうがLinuxくさくてイイ感じがします。 > 私が質問を理解する限り、以下の3つの/procファイルには十分な情報があります。 > > SCSIパーティション情報 -> /proc/partitions > SCSIデバイスの判別 -> /proc/scsi/scsi or /proc/scsi/usb-storage-#/# > マウント情報 -> /proc/mounts /proc/scsi/scsi から情報をもらうようにしました。 私の環境の場合は次のようになりました。 $ cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: CREATIVE Model: CD-RW RW4224E Rev: 1.36 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: OLYMPUS Model: C-2040ZOOM Rev: 1.00 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: IC25N040 Model: ATCS04-0 Rev: CA4O Type: Direct-Access ANSI SCSI revision: 02 全て別々のホストアダプタに接続された SCSI IDが 0 番の機器になるみたいで すね。また、USB機器を外した後も、/proc/scsi/scsi の情報は残っていて 接続されたままになってしまうみたいです。 At Sun, 25 Aug 2002 10:59:28 +0900, Hiroshi Inoue <gamera@xxxxxxxxxxxxxxxx> wrote: > > 再度、1番目のデバイスを USBに接続 → /var/log/message に kernel からのロ > > グが出てこないので、デバイスファイルを見つけられない。 > 推測で申し訳ないですがドライバモジュールを外さないと出ないと思います。 > lsmodでsr_modだったかがUSBを外したときに残ってないか確認してあれば > rmmodで外してテストしたらどうでしょうか? その通りでした。 本日までの成果。 次のスクリプトたちで、ほぼ、思っていた動作ができているようです。 http://www.bf.wakwak.com/~nkon/homepc/usb-storage/ の方にもまとめておきました。 ファイル: /etc/murasaki/murasaki.call usb-storage: /etc/murasaki/bin/mount-usb-storage2.sh ファイル: /etc/murasaki/bin/usb-storage-mountpoint # vendor product mountpoint fstype keyword comment 0x4bb 0x103 /mnt/USB_HD vfat ATCS04-0 IO-DATA HDP-U40P portable USB HDD 0x7b4 0x105 /mnt/C2040 vfat C-2040ZOOM 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} #echo ${a_line[5]} ${a_line[6]} VENDOR=${a_line[5]} PRODUCT=${a_line[6]} VENDOR=${VENDOR/vendor:/} PRODUCT=${PRODUCT/product:/} #echo my vendor is ${VENDOR} and my product is ${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_keyword m_comment < ${WORK_FILE} fi rm -f ${WORK_FILE} #echo vendor is ${m_vendor} product is ${m_product} mount point is ${m_mountpoint} fs_type is ${m_fstype} keyword is ${m_keyword} comment is ${m_comment} ######################################### # find device file ######################################### rm -f ${WORK_FILE} /bin/sed ' /^Host/N s/\n// p D ' /proc/scsi/scsi | grep ${m_keyword} >> ${WORK_FILE} read -a a_line < ${WORK_FILE} case ${a_line[1]} in scsi1) DEVICE_FILE=sda1 ;; scsi2) DEVICE_FILE=sdb1 ;; esac rm -f ${WORK_FILE} #echo my device file is ${DEVICE_FILE} 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} # echo START ${m_keyword} ${DEVICE_FILE} ${m_mountpoint} > /etc/murasaki/bin/log ;; stop) /bin/umount ${m_mountpoint} # echo /bin/mount ${m_mountpoint} # echo STOP ${m_keyrowd} ${m_mountpoint} > /etc/murasaki/bin/log ;; esac -- 近藤靖浩 <nkon@xxxxxxxxxxxxx> http://www.bf.wakwak.com/~nkon/diving/ 8/21更新:富士山編