Inhaltsverzeichnis
Zusammenfassung
Mit Linux Kernel 2.6 gibt es eine neue Userspace-Lösung für ein dynamisches
Geräteverzeichnis /dev mit konsistenten
Gerätebezeichnungen: udev.
Es liefert nur Dateien für Geräte, die tatsächlich
vorhanden sind. udev erstellt oder
entfernt Geräteverknüpfungsdateien, die sich normalerweise
im Verzeichnis /dev befinden, und
benennt Netzwerkschnittstellen um.
Die Vorgänger-Implementierung
von /dev mit devfs funktioniert
nicht mehr und wird von udev ersetzt.
Traditionell wurden auf Linux-Systemen im Verzeichnis
/dev Geräteverknüpfungen (engl. device
nodes) gespeichert. Für jede mögliche Art von Gerät gab es
eine Verknüpfung, unabhängig davon, ob es im System tatsächlich existierte.
Entsprechend groß wurde dieses Verzeichnis. Mit devfs trat
eine deutliche Verbesserung ein, denn nur noch real existierende Geräte
erhielten einen Device Node in /dev.
udev geht einen neuen Weg bei der Erzeugung der Device
Nodes. Es vergleicht Informationen, die sysfs zur
Verfügung stellt, mit Angaben des Benutzers in Form von Regeln.
sysfs ist ein neues Dateisystem des Kernels 2.6 und
stellt die grundlegenden Informationen über angeschlossene Geräte im System
zur Verfügung. Es wird unter /sys eingehängt.
Die Erstellung von Regeln durch den Benutzer ist nicht zwingend erforderlich. Wird ein Gerät angeschlossen, wird auch die entsprechende Geräteverknüpfung erzeugt. Allerdings bieten die Regeln die Möglichkeit, die Namen der Verknüpfungen zu ändern. Dies bietet den Komfort, einen kryptischen Gerätenamen durch einen leicht zu merkenden zu ersetzen und darüber hinaus dauerhafte Gerätenamen zu erhalten, wenn man zwei Geräte des gleichen Typs angeschlossen hat.
Zwei Drucker erhalten standardmäßig die
Bezeichnungen /dev/lp0 und
/dev/lp1. Welches Gerät welchen Device Node erhält
hängt allerdings von der Reihenfolge ab, in der sie eingeschaltet werden.
Ein weiteres Beispiel sind externe Massenspeichergeräte wie USB-Festplatten.
Mit udev lassen sich exakte Geräte-Pfade in
/etc/fstab eintragen.
Bevor udev Geräteverknüpfungen unter
/dev erzeugt, liest es alle Dateien in
/etc/udev/rules.d mit der Endung
.rules in alphabetischer
Reihenfolge ein. Die erste Regel, die zu einem
Gerät passt, wird verwendet, auch wenn noch weitere existieren sollten.
Kommentare werden mit einem Hash-Zeichen # eingeleitet.
Regeln haben die Form:
Schlüssel, [Schlüssel,...] NAME [, SYMLINK]
Mindestens ein Schlüssel muss angegeben werden, da über diesen die Regel
einem Gerät zugeordnet wird. Auch der Name ist zwingend erforderlich, denn
unter diesem Namen wird die Geräteverknüpfung in /dev
angelegt. Der optionale Symlink-Parameter erlaubt es Verknüpfungen an
weiteren Stellen anzulegen. Eine Regel für einen Drucker könnte also
folgendermaßen aussehen:
BUS="usb", SYSFS{serial}="12345", NAME="lp_hp", SYMLINK="printers/hp"
In diesem Beispiel gibt es zwei Schlüssel: BUS und
SYSFS{serial}. udev wird die
Seriennummer mit der des Geräts, das an den USB-Bus angeschlossen ist,
verglichen. Alle Schlüssel müssen identisch sein, um dem Gerät den Namen
lp_hp im Verzeichnis /dev
zuzuweisen. Darüber hinaus wird es einen symbolischen Link namens
/dev/printers/hp anlegen, der auf die
Geräteverknüpfung verweist. Das Verzeichnis printers
wird dabei automatisch erzeugt. Druckaufträge können danach an
/dev/printers/hp oder /dev/lp_hp
geschickt werden.