Der Linux-Kernel meldet Geräteänderungen durch Uevents an den Userspace. Auf vielen aktuellen Distributionen verarbeitet systemd-udevd diese Ereignisse mithilfe von udev-Regeln und einer Gerätedatenbank. Zusammen mit dem vom Kernel befüllten devtmpfs entstehen daraus Eigentümerschaft, Berechtigungen, Eigenschaften und symbolische Links, die Anwendungen unter und um /dev sehen.
Geräte · Lektion 5
udev
Lerne, wie udev Geräteereignisse des Kernels verarbeitet und Richtlinien, Berechtigungen sowie dauerhafte Links anwendet.
Vom Kernel-Ereignis zur Geräterichtlinie
Wenn ein Gerät hinzugefügt, geändert, verschoben oder entfernt wird, kann udev:
- Attribute aus sysfs und Ereigniseigenschaften lesen
- Richtlinien für Eigentümer, Gruppe und Modus auf einen Geräteknoten anwenden
- stabile symbolische Links wie
/dev/disk/by-id/...hinzufügen - Geräte für andere Dienste markieren
- eng begrenzte Hilfsverarbeitung ausführen
Der Kernel bleibt für das eigentliche Gerät und seinen Treiber zuständig. Das Löschen eines Knotens aus /dev entfernt keine physische Hardware. Auch das manuelle Erstellen eines Knotens mit mknod lässt nicht unterstützte Hardware weder entstehen noch bindet es einen Treiber.
Was löst bei einer Geräteänderung normalerweise die Verarbeitung durch udev aus?
Speicherorte und Priorität von Regeln
Regeln befinden sich häufig in:
/usr/lib/udev/rules.d/für vom Hersteller oder Paket bereitgestellte Regeln/run/udev/rules.d/für flüchtige Laufzeitregeln/etc/udev/rules.d/für lokale Richtlinien des Administrators
Dateien werden in lexikografischer Reihenfolge ihrer Namen verarbeitet. Gleichnamige Dateien in Verzeichnissen höherer Priorität ersetzen gemäß der installierten udev-Implementierung Versionen niedrigerer Priorität. Lokale Regeln sollten einen bewusst gewählten Dateinamen verwenden und stabile Eigenschaften statt Aufzählungsnamen abgleichen.
Eine Regel kann jedes passende Gerät betreffen. Prüfe ihren Geltungsbereich daher sorgfältig. Bearbeite paketierte Regeln nicht direkt, wenn eine lokale Überschreibung oder Ergänzungsregel angebracht ist.
Welches Verzeichnis ist für dauerhafte lokale udev-Regeln des Administrators vorgesehen?
Ein Gerät mit `udevadm` untersuchen
Frage die udev-Eigenschaften eines vorhandenen Knotens ab:
$ udevadm info --query=all --name=/dev/sda
Verwende einen Knoten, der auf dem aktuellen System existiert. udevadm info --attribute-walk --name=... kann Attribute entlang der sysfs-Elternkette anzeigen und so beim Erstellen einer Regel helfen. udevadm monitor --kernel --udev --property beobachtet Kernel- und verarbeitete Ereignisse. Die Ausgabe kann Gerätekennungen offenlegen und sollte entsprechend behandelt werden.
Was fordert udevadm info --query=all --name=/dev/sda an?
Regeländerungen vorsichtig anwenden
Das Neuladen von Regeldateien wirkt sich auf die Verarbeitung zukünftiger Ereignisse aus; es baut nicht automatisch den Zustand jedes vorhandenen Geräts neu auf. Das manuelle Auslösen von Ereignissen kann viele Geräte und Dienste betreffen. Grenze das Ziel deshalb ein und verwende die Dokumentation des installierten udevadm. Ein Testbefehl kann die Regelauswertung simulieren, bildet aber möglicherweise nicht jede Nebenwirkung eines echten Ereignisses nach.
Sichere lokale Regeln, prüfe ihre Syntax, beobachte ein bekanntes Testgerät und halte einen Wiederherstellungsweg bereit, bevor du Berechtigungen oder Namen änderst. Führe keine lang laufende Arbeit direkt in der udev-Ereignisverarbeitung aus, sondern übertrage sie einem geeigneten Dienst.
Was verändert das Neuladen von udev-Regeln in erster Linie?
Nutze das Lab Hardwaregeräte unter Linux erkunden, um udevadm-Eigenschaften, sysfs-Pfade und Links unter /dev in einer kontrollierten Umgebung einander zuzuordnen.
Lektion abgeschlossen
Sie haben udev abgeschlossen
Du kannst udev nun zwischen Kernel-Ereignissen und Userspace-Geräterichtlinien einordnen.
Ordne Uevents und sysfs-Attribute dem Regelabgleich von udev zu.
Trenne die Speicherorte für Hersteller-, Laufzeit- und lokale Regeln.
Untersuche Eigenschaften und Ereignisfluss mit
udevadm.Lade Regeln neu und löse sie nur in einem eng begrenzten, getesteten Umfang aus.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen