Hi Leuts,
Ich hab gerade versucht meine diversen USB-Disks, Camera und MP3-Spieler beim anstöpselt automatisch zu mounten (System ist eine OpenSUSE 10.2) und hab mir 'nen Wolf gesucht warum das nicht funktioniert. Letztendlich lag es an einer (meines Erachtens) Inkonsistenz des udev-mount-Programmes /lib/udev/mount.sh. Dieses durchsucht die /etc/fstab nach Einträgen für den gerade gefundenen Speicherträger. Dabei wird der Eintrag aus der fstab mit den vorhandenen Node-Namen verglichen, wobei letztere eben nicht nur den echte HW-Namen (sda usw) enthalten, sondern auch die 'persistenten Devicenamen' /dev/disk/by-???/*.
Und genau letztere hatte ich in der /etc/fstab verwendet um die mountpoints unabhängig davon festzulegen, in welcher Reihenfolge ich die USB-Geräte anstecke. Aber es hat nicht funktioniert. :evil:
Bis ich dann gesehen habe daß für den abschließenden mount-Befehl eben nicht der persistente Name verwendet wird, sondern der (echte) Device-Name - für den aber gar kein Eintrag in der fstab vorhanden ist!
Ich hab darum das mount-Script leicht abgeändert sodaß der gefundene persistente Name auch für den Mount-Befehl verwendet wird. Hier das diff:
Ein weiteres Problem war daß das mount-script nur für Partitionen aufgerufen wird: In /etc/udev/rules.d/85-mount-fstab.rules steht als Selektionsparameter nur KERNEL=="sd*[0-9]|hd*[0-9]". Wer die gesamte Platte ohne Partitionstabelle formatiert hat schaut auch in die Röhre
Ich hab darum noch ein zusätzliches "|sd*" angehängt - damit funktionieren auch solche Platten. Im Prinzip sollte es auch genügen die beiden [0-9] zu löschen - war mir nur nicht ganz sicher...
Vielleicht findet's ja jemand hilfreich....
Pit
Ich hab gerade versucht meine diversen USB-Disks, Camera und MP3-Spieler beim anstöpselt automatisch zu mounten (System ist eine OpenSUSE 10.2) und hab mir 'nen Wolf gesucht warum das nicht funktioniert. Letztendlich lag es an einer (meines Erachtens) Inkonsistenz des udev-mount-Programmes /lib/udev/mount.sh. Dieses durchsucht die /etc/fstab nach Einträgen für den gerade gefundenen Speicherträger. Dabei wird der Eintrag aus der fstab mit den vorhandenen Node-Namen verglichen, wobei letztere eben nicht nur den echte HW-Namen (sda usw) enthalten, sondern auch die 'persistenten Devicenamen' /dev/disk/by-???/*.
Und genau letztere hatte ich in der /etc/fstab verwendet um die mountpoints unabhängig davon festzulegen, in welcher Reihenfolge ich die USB-Geräte anstecke. Aber es hat nicht funktioniert. :evil:
Bis ich dann gesehen habe daß für den abschließenden mount-Befehl eben nicht der persistente Name verwendet wird, sondern der (echte) Device-Name - für den aber gar kein Eintrag in der fstab vorhanden ist!
Ich hab darum das mount-Script leicht abgeändert sodaß der gefundene persistente Name auch für den Mount-Befehl verwendet wird. Hier das diff:
Code:
asterix:udev% diff -u mount.sh.orig mount.sh
--- mount.sh.orig 2007-05-05 14:22:32.000000000 +0100
+++ mount.sh 2007-05-05 14:54:56.000000000 +0100
@@ -33,6 +33,7 @@
for n in $NODES; do
if [ "$n" == "$dn" ] ; then
HOTPLUG="yes"
+ MOUNTPOINT=$dn
fi
done
;;
@@ -49,7 +50,7 @@
# fsck options:
# -M : respect fs_pass_no, emulate mount
# -a : auto repair
-MESSAGE="`fsck -M -a $DEVNAME 2>&1`"
+MESSAGE="`fsck -M -a $MOUNTPOINT 2>&1`"
RET=$?
case $RET in
0|1) : ;;
@@ -68,7 +69,7 @@
# mount options:
# -v : be verbose
# -a : respect noauto option
-MESSAGE="`mount -av $DEVNAME 2>&1`"
+MESSAGE="`mount -av $MOUNTPOINT 2>&1`"
RET=$?
-test $? != 0 && err_mesg "Could not mount '$DEVNAME'."
+test $RET != 0 && err_mesg "Could not mount '$DEVNAME'."
exit $RET
Ein weiteres Problem war daß das mount-script nur für Partitionen aufgerufen wird: In /etc/udev/rules.d/85-mount-fstab.rules steht als Selektionsparameter nur KERNEL=="sd*[0-9]|hd*[0-9]". Wer die gesamte Platte ohne Partitionstabelle formatiert hat schaut auch in die Röhre
Vielleicht findet's ja jemand hilfreich....
Pit