Deviceproblem Umass

From: Dieter Deinert <dd(at)radio-do.ath.cx>
Date: Wed, 22 Feb 2006 12:27:02 +0100

Hallo
ich will hier mit einen kleinem Script Usb-Device mounten.
Ich habe da ein mir unerklaerliches Problem.

Ausgangslage:
USB-Geraet wird gesteckt.

#ll /dev/da*
crw-rw-rw- 1 root mount 0, 153 Feb 22 10:43 da0
crw-rw-rw- 1 root mount 0, 155 Feb 22 10:43 da1
crw-rw-rw- 1 root mount 0, 157 Feb 22 10:43 da1s4
crw-rw-rw- 1 root mount 0, 158 Feb 22 10:43 da2

dann lass ich das Script unten laufen

# mount
(...)
/dev/da1 on /mnt/USB_dd_da1 (msdosfs, local, nosuid, mounted by USER)

das ist schoen.

ABER

#ll /dev/da*ll da*
crw-rw-rw- 1 root mount 0, 153 Feb 22 10:43 da0
crw-rw-rw- 1 root mount 0, 155 Feb 22 10:43 da1
crw-rw-rw- 1 root mount 0, 158 Feb 22 10:43 da2

Das Device da1s4 ist verschwunden

Bei anderen USB-Geraeten ändern sich die Rechte des Device
trotz fixer Einstellung in /etc/devfs.conf

Vorher
#ll da*
crw-rw-rw- 1 root mount 0, 153 Feb 22 10:43 da0
crw-rw-rw- 1 root mount 0, 154 Feb 22 10:43 da0s1

Nachher
#ll /dev/da*
crw-rw-rw- 1 root mount 0, 153 Feb 22 10:43 da0
crw-r----- 1 root operator 0, 155 Feb 22 10:43 da0s1

Die Rechte fuer ad0s1 sind veraendert.

Das Script versucht mit einer Schleife alle gefundenen /dev/da*
zu mounten. Es wird bewusst nicht mit /fstab gearbeitet, weil
nicht vorherzusehen ist, wieviel Slice die Geraete mitbringen.
Wenn es kein mountfaehiges Slice findet oder das Device busy
ist gibt es halt einen Fehler und es beginnt der naechste Versuch.

Halte ich fuer legitim, weil ich vorher nicht prüfen kann, welches
Slice mountfaehige ist oder ist das uebel??

Warum dabei die Device veraendert werden kann ICH nicht verstehen?????
Mach ich da was falsch??

Hat da jemand eine Idee?

Gruss dd

#uname -a
FreeBSD grab.radio-do.ath.cx 6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #3:
Tue Feb 21 11:54:44 CET 2006
root(at)grab.radio-do.ath.cx:/usr/obj/usr/src/sys/GRAB amd64

Shellscript Ausschnitt:
#!/bin/sh
#Finden User an Screen :0
USR=`who -T | grep '? :0' | cut -f 1 -d " "`
#Finden Liste /dev/da*
DEV=`ls /dev/ | grep da | cut -f 1 -d " "`

       for DEVAKTUELL in $DEV
          #Beginn mount Schleife
          do
                DEV1=$DEVAKTUELL
                   # Mountdir anlegen
                    MOUNTDIR="USB_"$USR"_"$DEV1
                    mkdir /mnt/$MOUNTDIR
                   # Rechte im Mountdir aendern
                    chown $USR /mnt/$MOUNTDIR
                    # Mounten als User OHNE fstab Eintrag
                    su $USR -c "/sbin/mount_msdosfs /dev/$DEV1
/mnt/$MOUNTDIR"
           done
           #Ende der Mountschliefe
EOF

Das liegt noch in ...../local/etc/devd/umass.conf damit der devd mitbekommt
das was auf usb geschieht

attach 100 {
   device-name "umass[0-9]+";
   action "/bin/sleep 3; /etc/rc.d/devfs restart;
/usr/local/share/umass/umassaction
 attach $device-name";
};

detach 100 {
   device-name "umass[0-9]+";
   action "/usr/local/share/umass/umassaction detach $device-name";
};

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 22 Feb 2006 - 12:28:57 CET

search this site