• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

udev Timingprobleme

norritt

Member
Hallo zusammen,

bis vor kurzem hatte ich ein funktionierendes udev Script das bestimmte Dateien auf eine externe HDD kopiert hat, sobald diese angeschlossen wurde. Mittlerweile habe ich eine 2te HDD, die ich auf die selbe Art nutzen möchte. In der ursprünglichen Version wurden die Partitionen der Platte automatisch über die Block-Device Namen bzw. die entsprechenden fstab Einträge z.B. /dev/sdd1 eingemountet. Durch die 2te platte habe ich nun allerdings das Problem, daß je nach Einschaltreihenfolge die Platten unterschiedliche Device-Namen erhalten. Gelöst habe ich das Problem, indem ich die Partitionen benamt habe und nun über "/dev/disk/by-label/..." mounte. Manuell klappt das auch prima leider ist udev nun zu schnell, sodass die Scripte nicht mehr korrekt ausgeführt werden. Die udev Regel grift nämlich sofort wenn die Platte erkannt wird, aber noch bevor die Partitionen mit Label erkannt werden. In dem moment indem das Kopierscript also die Zielpartition mounten möchte, gibt es einen Fehler (der "/dev/disk/by-label/"-Eintrag existier noch nicht). Meine Idee das mit einer kurzen Warteperiode zu lösen schlug leider fehl, weil die Partitionen solange nicht erkannt werden bis die udev-Regel und das zugeordnete Script fertig abgearbeitet wurden. Kennt irgendjemand einen Weg udev-Regeln so anzupassen, daß sie erst nachdem die Partitionen erkannt wurden greifen und nicht bereits vorher?

Hier eine der Beispielregeln die zu früh reagiert:
Code:
KERNEL=="1-5", SUBSYSTEM=="usb", ATTR{serial}=="<Some Serial Number Here>", ACTION=="add", ENV{ID_FS_LABEL}=="backup_home" RUN+="<some script>"

Ich vermute ich muss KERNEL/SUBSYSTEM durch andere Attribute ersetzen.
 

josef-wien

Ultimate Guru
Die Verknüpfungen in /dev/disk/... werden durch 60-persistent-storage.rules erzeugt. Welchen Dateinamen hat Deine Regel-Datei?

P. S. Wozu dienen die Abfragen auf KERNEL und ATTR?
 
OP
N

norritt

Member
Hi Josef,

danke für den Anstoß - die rules-datei hatte die Nummer 10. Ich hatte sie beim testen zwar schonmal nach hinten geschoben, aber ohne Erfolg, sodaß ich die Nummer wieder auf 10 zurückgesetzt hatte.

Ich hab sie jetzt auf 61 gesetzt. Was KERNEL und ATTR angeht hast Du recht, allerdings musste ich noch den Parameter "SUBSYSTEM" auf "block" setzen - mit "usb" hat er die hdd nicht erkannt. Jetzt scheints aber zu laufen (zumindest mit einer der Platten). Die Zweite werde ich gleich mal testen.

Vielen Dank!
 

josef-wien

Ultimate Guru
Du kannst die Abfrage auf SUBSYSTEM auch weglassen.

Wenn ich genauer nachdenke, ist die zusätzliche Abfrage der Seriennummer durchaus sinnvoll. Die Wahrscheinlichkeit ist zwar gering, aber vielleicht kommt Dir doch ein fremder Datenträger unter, der genau "Deine" Volume-Kennung verwendet. Ich ziehe ENV{ID_SERIAL_SHORT} oder ENV{ID_SERIAL} gegenüber ATTRS{serial} vor.
 
Oben