UDEV(7) | udev | UDEV(7) |
BEZEICHNUNG
udev - Dynamische Geräteverwaltung
BESCHREIBUNG
Udev versorgt die Systemsoftware mit Gereäteereignissen, verwaltet Berechtigungen von Geräteknoten und kann zusätzliche Symlinks im Verzeichnis /dev/ erstellen oder Netzwerkschnittstellen umbenennen. Der Kernel weist normalerweise bloß nicht vorhersagbare Gerätenamen basierend auf der Reihenfolge der Erkennung zu. Symlinks oder Netzwerkgerätenamen mit Bedeutung stellen eine Möglichkeit bereit, Geräte zuverlässig basierend auf ihren Eigenschaften oder der aktuellen Konfiguration zu identifizieren.
Immer wenn ein Gerät dem System hinzugefügt oder aus ihm entfernt wird oder wenn sich sein Zustand ändert, empfängt der Udev-Daemon systemd-udevd.service(8) ein Geräte-Uevent direkt vom Kernel. Wenn Udev ein Geräteereignis empfängt, prüft es seinen Satz an Konfigurationsregeln gegen die verschiedenen Geräteattribute, um das Gerät zu identifizieren. Passende Regeln können zur Speicherung von zusätzliche Geräteinformationen in der Udev-Datenbank führen oder zur Erstellung von aussagekräftigen Symlinknamen verwandt werden.
Alle von Udev verarbeiteten Geräteinformationen werden in der Udev-Datenbank gespeichert und an mögliche Ereignis-Abonnenten gesandt. Zugriff auf alle gespeicherten Daten und die Ereignisquellen werden durch die Bibliothek libudev bereitgestellt.
REGELDATEIEN
Die Udev-Regeln werden aus Dateien, die sich in den Systemregelverzeichnissen /usr/lib/udev/rules.d und /usr/local/lib/udev/rules.d, dem flüchtigen Laufzeitverzeichnis /run/udev/rules.d und dem lokalen Administrationsverzeichnis /etc/udev/rules.d befinden, gelesen. Alle Regeldateien werden gemeinsam sortiert und in lexikalischer Reihenfolge verarbeitet, unabhängig von den Verzeichnissen, in denen sie sich befinden. Allerdings ersetzen Dateien mit identischen Dateinamen einander. Dateien in /etc/ haben die höchste Priorität, Dateien in /run/ haben Vorrang vor Dateien mit dem gleichen Namen unter /usr/. Damit kann bei Bedarf eine vom System bereitgestellte Regeldatei mit einer lokalen Datei außer Kraft gesetzt werden, ein Symlink in /etc/ mit dem gleichen Namen wie eine Regeldatei in /usr/lib/, der auf /dev/null zeigt, deaktiviert die Regeldatei komplett. Regeldateien müssen die Erweiterung .rules tragen; andere Erweiterungen werden ignoriert.
Jede Zeile in der Regeldatei enthält mindestens ein Schlüssel-Wert-Paar. Ausnahmen sind nur leere Zeilen und Zeilen, die mit »#« beginnen; diese werden ignoriert. Es gibt zwei Arten von Schlüsseln: Übereinstimmung und Zuweisung. Falls alle Übereinstimmungsschlüssel mit ihren Werten übereinstimmen, werden die Regeln angewandt und die Zuweisungsschlüssel erhalten die festgelegten Werte zugewiesen.
Eine Übereinstimmungsregel kann eine Netzwerkschnittstelle umbenennen, Symlinks hinzufügen, die auf Geräteknoten zeigen oder ein bestimmtes Programm als Teil der Ereignisverarbeitung ausführen.
Eine Regel besteht aus einer Kommata-getrennten Liste von einem oder mehreren Schlüssel-Operator-Wert-Paaren. Jeder Ausdruck hat eine eindeutige Auswirkung, abhängig vom verwandten Schlüssel und Operator.
Operatoren
"=="
"!="
"="
"+="
"-="
Hinzugefügt in Version 217.
":="
Hinzugefügt in Version 247.
Werte
Werte werden als Zeichenketten in doppelten englischen Anführungszeichen geschrieben, wie in ("Zeichenkette"). Um das Anführungszeichen (") im Wert aufzunehmen, stellen Sie ihm einen Rückwärtsschrägstrich voran (\"). Alle weiteren Vorkommen eines Rückwärtsschrägstriches gefolgt von einem Zeichen werden nicht demaskiert. Dies bedeutet, dass »\t\n« als vier Zeichen behandelt wird: Rückwärtsschrägstrich, kleines t, Rückwärtsschrägstrich, kleines n.
Der Zeichenkette kann ein klein geschriebenes e vorangestellt werden (e"Zeichenkette\n"), um die Zeichenkette als C-artig maskiert zu markieren, siehe Maskiersequenzen in C[1] zu markieren. Zum Beispiel wird e"Zeichenkette\n" als 13 Zeichen ausgewertet: einem Großbuchstaben, elf Kleinbuchstaben und einem Zeilenumbruch. Dies kann zur Darstellung eines besonderen Zeichens nützlich sein, wenn ein Kerneltreiber dieses benötigt.
Bitte beachten Sie, dass NUL in keiner Zeichenkettenvariante erlaubt ist.
Schlüssel
Die nachfolgenden Namen können zum Vergleichen mit Geräteeigenschaften verwandt werden. Einige dieser Schlüssel passen auch auf Eigenschaften der in Sysfs übergeordneten Geräte, nicht nur auf das Gerät, das das Ereignis erstellt hat. Falls in einer Regel mehrere Schlüssel, die auf ein übergeordnetes Gerät passen, festgelegt werden, müssen sämtliche Schlüssel auf ein und das gleiche übergeordnete Gerät passen.
ACTION
DEVPATH
KERNEL
KERNELS
NAME
SYMLINK
SUBSYSTEM
SUBSYSTEMS
DRIVER
DRIVERS
ATTR{Dateiname}
Nachfolgender Leerraum im Attributwert wird ignoriert, außer der festgelegte Übereinstimmungswert enthält selbst abschließenden Leerraum.
ATTRS{Dateiname}
Nachfolgender Leerraum im Attributwert wird ignoriert, außer der festgelegte Übereinstimmungswert enthält selbst abschließenden Leerraum.
SYSCTL{Kernelparameter}
Hinzugefügt in Version 240.
ENV{Schlüssel}
CONST{Schlüssel}
"arch"
Hinzugefügt in Version 244.
"virt"
Hinzugefügt in Version 244.
"cvm"
Hinzugefügt in Version 254.
Unbekannte Schlüssel passen niemals.
Hinzugefügt in Version 244.
TAG
TAGS
TEST{oktale Modusmaske}
PROGRAM
Dies kann nur für sehr kurz laufende Vordergrundprozesse verwandt werden. Für Details, siehe RUN.
Beachten Sie, dass mehrere PROGRAM-Schlüssel in einer Regel festgelegt werden dürfen und dass »=«, »:=« und »+=« die gleiche Auswirkung wie »==« haben.
RESULT
Die meisten Felder unterstützen Shell-Glob-Muster-Vergleiche und alternative Muster. Die folgenden Sonderzeichen werden unterstützt:
"*"
"?"
"[]"
"|"
Hinzugefügt in Version 217.
Den folgenden Schlüsseln können Werte zugewiesen werden:
NAME
SYMLINK
Die Menge der Zeichen zur Benennung eines Symlinks ist begrenzt. Die erlaubten Zeichen sind »0-9A-Za-z#+-.:=@_/«, gültige UTF-8-Zeichensequenzen und »\x00«-Hexadezimalkodierung. Alle anderen Zeichen werden durch ein »_« ersetzt.
Es können mehrere Symlinks angegeben werden, indem die Namen durch Leerzeichen getrennt werden. Falls mehrere Geräte den gleichen Namen beanspruchen, zeigt der Link immer auf das Gerät mit der höchsten »link_priority«. Falls das aktuelle Gerät verschwindet, werden die Links neu bewertet und das Gerät mit der nächst höchsten »link_priority« wird der Eigentümer des Links. Falls keine »link_priority« festgelegt ist, ist die Reihenfolge der Geräte (und welchem davon der Link gehört) nicht definiert.
Symlink-Namen dürfen niemals mit dem Vorgabegeräteknotennamen des Kernels in Konflikt stehen, da dies zu unvorhersagbarem Verhalten führen würde.
OWNER, GROUP, MODE
SECLABEL{Modul}
Hinzugefügt in Version 209.
ATTR{Schlüssel}
SYSCTL{Kernelparameter}
Hinzugefügt in Version 220.
ENV{Schlüssel}
TAG
RUN{Typ}
type kann sein:
"program"
Dies ist die Vorgabe, falls kein Typ festgelegt ist.
"builtin"
Hinzugefügt in Version 199.
Der Programmname und die nachfolgenden Argumente sind durch Leerzeichen getrennt. Einfache englische Anführungszeichen können zur Angabe von Argumenten mit Leerzeichen verwandt werden.
Dies kann für sehr kurz laufende Vordergrundprozesse verwandt werden. Läuft ein Ereignisprozess für längere Zeitperioden, dann können alle weiteren Ereignisse für dieses oder abhängige Geräte blockiert sein.
Beachten Sie, dass laufende Programme, die auf das Netzwerk zugreifen oder Dateisysteme ein-/aushängen, innerhalb von Udev-Regeln aufgrund der in systemd-udevd.service erzwungenen Standard-Sandbox nicht erlaubt sind.
Das Starten von Daemons oder langlaufenden Prozessen ist nicht erlaubt, der mit Fork erzeugte Prozess wird nach Abschluss der Ereignisbehandlung bedingungslos getötet, unabhängig davon, ober er sich in den Hintergrund geschoben hat. Um aus Udev-Regeln heraus langlaufende Prozesse zu aktivieren, sollten Sie eine Dienste-Unit bereitstellen und diese mittels der Geräteeigenschaft SYSTEMD_WANTS durch eine Udev-Regel hereinziehen. Siehe systemd.device(5) für Details.
LABEL
GOTO
IMPORT{Typ}
"program"
Hinzugefügt in Version 199.
"builtin"
Hinzugefügt in Version 199.
"file"
"db"
"cmdline"
"parent"
Dies kann nur für sehr kurz laufende Vordergrundprozesse verwandt werden. Für Details siehe RUN.
Beachten Sie, dass in einer Regel mehrere IMPORT{}-Schlüssel festgelegt werden können und dass »=«, »:=« und »+=« die gleiche Auswirkung wie »==« haben. Der Schlüssel ist wahr, falls der Import erfolgreich war, außer »!=« wurde als Operator verwandt, dieser führt dazu, dass der Schlüssel wahr wird, falls der Import fehlschlug.
OPTIONS
link_priority=Wert
string_escape=none|replace
static_node=
watch
nowatch
db_persist
Hinzugefügt in Version 241.
log_level=Stufe
Dies kann zur Fehlersuche von Ereignissen für bestimmte Geräte nützlich sein. Beachten Sie, dass die Protokollstufe angewandt wird, wenn die Zeile, die diese Regel enthält, verarbeitet wird. Zur Fehlersuche wird daher empfohlen, dass dies an einer frühen Stelle festgelegt wird, z.B. als erste Zeile von 00-debug.rules.
Beispiel für die Fehlersuche bei der Verarbeitung von Uevents in Netzwerkschnittstellen:
# /etc/udev/rules.d/00-debug-net.rules SUBSYSTEM=="net", OPTIONS="log_level=debug"
Hinzugefügt in Version 248.
Die Felder ENV, GROUP, MODE, NAME, OWNER, PROGRAM, RUN, SECLABEL und SYMLINK unterstützen einfache Zeichenkettenersetzungen. Die RUN-Ersetzung wird durchgeführt, nachdem alle Regeln verarbeitet wurden, direkt bevor das Programm ausgeführt wird, wodurch die Verwendung von Geräteeigenschaften ermöglicht wird, die in vorherigen Regeln gesetzt wurden. Für alle anderen Felder wird die Ersetzung durchgeführt, während die individuelle Regel verarbeitet wird. Die verfügbaren Ersetzungen sind:
$kernel, %k
$number, %n
$devpath, %p
$id, %b
$driver
$attr{Datei}, %s{Datei}
Falls das Attribut ein Symlink ist, wird das letzte Element des Symlink-Ziels als Wert zurückgegeben.
$env{Schlüssel}, %E{Schlüssel}
$major, %M
$minor, %m
$result, %c
$parent, %P
$name
$links
$root, %r
$sys, %S
$devnode, %N
%%
$$
SIEHE AUCH
ANMERKUNGEN
- 1.
- Maskiersequenzen in C
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
systemd 255 |