udev
bei /dev/sda1 aus dem vorherigen Beitrag (here) handelt es sich um eine USB Festplatte, die ich bei Bedarf an den Rechner anstöpsle. Deswegen ist leider nicht gegeben, dass die Partition auch immer sda1 lautet. Wenn z.B. schon ein USB Stick eingesteckt ist, wird die Festplatte auf den Namen /dev/sdb hören.
Umgehen lässt sich dieses Namenschaos mit udev. Udev ersetzt seit der Linux Kernel Version 2.6 das alte devfs und sorgt dafür, dass sobald ein neues Gerät an den PC angeschlossen wird, die zugehörige Gerätedatei unter /dev/ verfügbar gemacht wird.
Dabei kann udev sehr einfach dazu gebracht werden beim Anlegen gleichzeitig einen Link zu erzeugen, der auf das neue Gerät verweist. Dies ermöglicht es mir meine Backupfestplatte, die je nach Szenario als /dev/sda1, dev/sdb1 etc. pp. erkannt wird immer als /dev/backup anzusprechen.
Udev benötigt dafür „Schlüsselwerte“, die einmalig für die Festplatte sind. Die findet man unter /sys/, wo das sysfs kleine Dateien mit Hardware-Informationen in einem Verzeichnisbaum ablegt. Nehmen wir an, die Platte ist momentan als /dev/sda erkannt worden, dann erläutert udevinfo -q path -n /dev/sda, dass /dev/sda unter /block/sda im /sys/ Verzeichnis zu finden ist.
udevinfo -a -p /sys/block/sda
bringt jede Menge Informationen zu meiner Festplatte, die für udev geeignet sind. Ich verwende bevorzugt ATTRS{serial}.
...
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{serial}=="DEF10000CF6494A"
ATTRS{product}=="USB2.0 Storage Device"
ATTRS{manufacturer}=="Cypress Semiconductor"
...
udevinfo -a -p /sys/block/sda|grep serial schafft mehr Übersicht.
In meinem gentoo System (und unter Debian ebenso) liegen die Regeln, die udev beachtet, wenn es erkannt hat das ein neues Gerät angeschlossen wurde, in /etc/udev/rules.d/. Die Datei 10-local.rules ist dazu da eigene udev-Regeln zu definieren.
Für meine Backup Platte sieht der Eintrag jetzt folgendermaßen aus (in einer Zeile):
BUS=="usb", KERNEL=="sd?1", SYSFS{serial}=="DEF10000CF6494A", NAME="%k", SYMLINK+="backup"
Bus ist usb, weil das Gerät über usb angeschlossen wird, die Geräte Adresse lautet sd?1, weil klar ist, dass das Gerät vom Kernel immer als sda1, sdb1, sdc1, … behandelt wird, spricht: nur die 3 Stelle ist nicht eindeutig, weswegen ich hier den Platzhalter ‘?’ verwenden. SYSFS{serial} ist die eindeutige Serial-ID der Hardware, die udevinfo geliefert hat, in NAME bedeutet %k, dass udev den Dateinamen verwenden soll, den der Kernel liefert (also sda1 oder sdb1, …) während gleichzeitig SYMLINK+=“backup“ dafür sorgt, dass immer auch ein link namens backup erzeugt wird, der auf den Kernelnamen verweist.
Beim nächsten Anschließen der Festplatte bestätigt sich, ob die Regel korrekt angelegt wurde.
$ ls -l /dev/backup
lrwxrwxrwx 1 root root 4 9. Mär 14:37 /dev/backup -> sdd1

Eine Antwort schreiben