33.5. Dauerhafte Namen für Massenspeichergeräte

Mit SUSE Linux werden Skripte ausgeliefert, die Ihnen ermöglichen, ungeachtet der Initialisierungsreihenfolge Festplatten und anderen Speichergeräten immer dieselben Bezeichnungen zuzuordnen. /sbin/udev.get_persistent_device_name.sh ist ein Wrapper-Skript. Es ruft zunächst /sbin/udev.get_unique_hardware_path.sh auf, das den Hardware-Pfad zu einem angegebenen Gerät ermittelt. Außerdem erfrägt /sbin/udev.get_unique_drive_id.sh die Seriennummer. Beide Ausgaben werden an udev übergeben, das symbolische Links zum Device Node unter /dev erzeugt. Das Wrapperskript kann direkt in den udev-Regeln verwendet werden. Ein Beispiel für SCSI, das auch auf USB oder IDE übertragen werden kann (bitte in einer Zeile angeben):

BUS="scsi", PROGRAM="/sbin/udev.get_persistent_device_name.sh", 
NAME="%k" SYMLINK="%c{1+}"

Sobald ein Treiber für ein Massenspeichergerät geladen wurde, meldet er sich mit allen vorhandenen Festplatten beim Kernel an. Jede von ihnen wird einen Hotplug Block-Event auslösen, der udev aufruft. Dann liest udev die Regeln ein, um festzustellen, ob ein Symlink erzeugt werden muss.

Wenn der Treiber über die initrd geladen wird, gehen die Hotplug-Events verloren. Allerdings sind alle Informationen in sysfs gespeichert. Das Hilfsprogramm udevstart findet alle Device Dateien unter /sys/block und /sys/class und startet udev.

Darüber hinaus gibt es ein Startskript boot.udev, das während des Bootens alle Device Nodes neu erzeugt. Das Startskript muss allerdings über den YaST Runlevel Editor oder mit dem Befehl insserv boot.udev aktiviert werden.

[Tip]Tipp

Es gibt eine Reihe von Werkzeugen und Programmen, die sich fest darauf verlassen, dass /dev/sda eine SCSI-Festplatte und /dev/hda eine IDE-Platte ist. Wenn dies nicht der Fall ist, funktionieren diese Programme nicht mehr. YaST ist allerdings auf diese Werkzeuge angewiesen und arbeitet deshalb nur mit den Kernel Gerätebezeichnungen.