So verwenden Sie UDEV für die Erkennung und Verwaltung von Geräten unter Linux

So verwenden Sie UDEV für die Erkennung und Verwaltung von Geräten unter Linux

Udev (UserSpace /dev) ist ein Linux-Subsystem für die Erkennung und Verwaltung der dynamischen Geräte, da die Kernelversion 2.6. Es ist ein Ersatz von Devfs Und Hotplug.

Es wird dynamisch Geräteknoten erstellt oder entfernt (eine Schnittstelle zu einem Gerätetreiber, der in einem Dateisystem angezeigt wird, als wäre es eine gewöhnliche Datei, die unter dem gespeichert ist /dev Verzeichnis) zur Startzeit oder wenn Sie ein Gerät zum System hinzufügen oder entfernen. Anschließend werden Informationen zu einem Gerät oder Änderungen an seinem Status in den Benutzerraum verteilt.

Es ist Funktion, 1) die Systemanwendungen mit Geräteereignissen zu liefern, 2) Berechtigungen von Geräteknoten zu verwalten und 3) nützliche Symlinks in der /dev Verzeichnis für den Zugriff auf Geräte oder die Umbension von Netzwerkschnittstellen.

Einer der Profis von Udev ist, dass es anhaltende Geräteamen verwenden kann, um eine konsistente Benennung von Geräten über Neustarts hinweg zu garantieren, trotz ihrer Entdeckungsreihenfolge. Diese Funktion ist nützlich, da der Kernel einfach unvorhersehbare Geräteamen basierend auf der Reihenfolge der Entdeckung zuweist.

In diesem Artikel werden wir lernen, wie man benutzt Udev Für die Geräteerkennung und -verwaltung auf Linux -Systemen. Beachten Udev als Teil der Standardinstallation.

Lernen Sie die Grundlagen von Udev unter Linux

Der Udev Dämon, systemd-udevd (oder systemd-udevd.Service) Kommuniziert mit dem Kernel und empfängt ein Gerät Uevents Direkt daraus jedes Mal, wenn Sie ein Gerät aus dem System hinzufügen oder entfernen oder ein Gerät seinen Status ändert.

Udev basiert auf Regeln - die Regeln sind flexibel und sehr mächtig. Jedes empfangene Geräteereignis wird mit den Regeln abgestimmt /lib/udev/Regeln.D Und /run/udev/Regeln.D.

Sie können benutzerdefinierte Regelndateien in die schreiben /etc/udev/Regeln.D/ Verzeichnis (Dateien sollten mit dem enden .Regeln Erweiterung) um ein Gerät zu verarbeiten. Beachten Sie, dass die Regeln von Dateien in diesem Verzeichnis die höchste Priorität haben.

So erstellen Sie eine Geräteknotendatei, Udev muss ein Gerät unter Verwendung bestimmter Attribute wie dem identifizieren Etikett, Seriennummer, seine Haupt- und geringfügige Anzahl verwendet, Busgerätnummer und vieles mehr. Diese Informationen werden von der exportiert sysfs Dateisystem.

Wenn Sie ein Gerät mit dem System anschließen, erkennt und initialisiert der Kernel es und ein Verzeichnis mit dem Gerätenamen wird unter erstellt /sys/ Verzeichnis, das die Geräteattribute speichert.

Die Hauptkonfigurationsdatei für UDEV ist /etc/udev/udev.Conf, Und um das Laufzeitverhalten des Udev -Daemons zu steuern, können Sie die verwenden Udevadm Dienstprogramm.

Den empfangenen Kernel anzeigen Veranstaltungen (Uevents) Und Udev -Ereignisse (Was Udev nach der Regelverarbeitung versendet), laufen Sie aus Udevadm Mit dem Befehl monitor. Schließen Sie dann ein Gerät an Ihr System an und beobachten Sie vom Terminal, wie das Geräteereignis behandelt wird.

Der folgende Screenshot zeigt einen Auszug von einem HINZUFÜGEN Ereignis nach der Verbindung einer USB -Flash -Festplatte an das Testsystem:

$ Udevadm Monitor 
Überwachen Sie Geräteereignisse unter Linux

Verwenden Sie das LSBLK -Dienstprogramm, mit dem die LSBLK -Dienstprogramme gelesen werden, um den Namen Ihrer USB -Festplatte zu finden, das das liest sysfs Dateisystem und Udev db Informationen über verarbeitete Geräte sammeln.

 $ lsblk 
Listen Sie Blockgeräte unter Linux auf

Aus der Ausgabe des vorherigen Befehls wird die USB -Scheibe benannt SDB1 (Der absolute Weg sollte sein /dev/sdb1). Verwenden Sie die Geräteattribute aus der UDEV -Datenbank, um die Geräteattribute aus der UDEV -Datenbank abzufragen Info -Befehl.

$ udevadm info /dev /sdb1 
Abfragegeräteattribute von Udev DB unter Linux

Wie man mit Udev -Regeln unter Linux arbeitet

In diesem Abschnitt werden wir kurz diskutieren, wie man schreibt Udev Regeln. Eine Regel umfasst eine von Kommas getrennte Liste von einem oder mehreren Schlüsselwertpaaren. Mit den Regeln können Sie einen Geräteknoten aus dem Standardnamen umbenennen, die Berechtigungen und das Eigentum eines Geräteknotens ändern, die Ausführung eines Programms oder Skripts auslösen, wenn ein Geräteknoten erstellt oder gelöscht wird.

Wir werden eine einfache Regel schreiben, um ein Skript zu starten, wenn ein USB -Gerät hinzugefügt wird und wenn es aus dem laufenden System entfernt wird.

Beginnen wir zunächst die beiden Skripte erstellen:

$ sudo vim /bin /device_added.Sch 

Fügen Sie die folgenden Zeilen in die hinzu Device_Added.Sch Skript.

#!/bin/bash echo "USB -Gerät hinzugefügt zu $ ​​(Datum)" >>/TMP/Skripte.Protokoll 

Öffnen Sie das zweite Skript.

$ sudo vim /bin /device_removed.Sch 

Fügen Sie dann die folgenden Zeilen hinzu zu Device_Removed.Sch Skript.

#!/bin/bash echo "USB -Gerät zu $ ​​(Datum) entfernt" >>/TMP/Skripte.Protokoll 

Speichern Sie die Dateien, schließen Sie und lassen Sie beide Skripte ausführbar.

$ sudo chmod +x /bin /device_added.sh $ sudo chmod +x /bin /merde_removed.Sch 

Lassen Sie uns als nächstes eine Regel erstellen, um die Ausführung der oben genannten Skripte auszulösen, die aufgerufen werden /etc/udev/Regeln.D/80-Test.Regeln.

$ vim/etc/udev/Regeln.D/80-Test.Regeln 

Fügen Sie diese beiden folgenden Regeln hinzu.

Subsystem == "USB", action == "Add", Env devype == "USB_DEVICE", run+= "/bin/device_added.sh "subsystem ==" USB ", action ==" remove ", env devType ==" USB_DEVICE ", run+="/bin/devely_removed.Sch" 

Wo:

  • "==": ist ein Bediener, der für die Gleichheit verglichen wird.
  • "+=": Ist ein Operator, der den Wert zu einem Schlüssel hinzufügt, der eine Liste von Einträgen enthält.
  • TEILSYSTEM: entspricht dem Subsystem des Ereignisgeräts.
  • AKTION: entspricht dem Namen der Ereignisaktion.
  • Env devype: Übereinstimmung mit einem Geräteeigenschaftswert, Gerätetyp in diesem Fall.
  • LAUFEN: Gibt ein Programm oder ein Skript an, das im Rahmen der Ereignisbehandlung ausgeführt werden kann.

Speichern Sie die Datei und schließen Sie sie. Dann als Wurzel erzählen systemd-udevd So laden Sie die Regulierungsdateien neu (dies werden auch andere Datenbanken wie den Kernel -Modulindex neu geladen), indem Sie ausgeführt werden.

$ sudo udevadm Kontrolle -Relaad 

Schließen Sie nun ein USB -Laufwerk in Ihren Computer an und prüfen Sie, ob die Device_Added.Sch Skript wurde ausgeführt. Zuallererst die Datei Skripte.Protokoll sollte erstellt werden unter /tmp.

$ ls -l /tmp /Skripte.Protokoll 
Überprüfen Sie das Skript -Protokoll nach dem Hinzufügen von USB

Dann sollte die Datei einen Eintrag haben wie “USB -Gerät zum Datum der Zeit entfernt”, Wie im Screenshot gezeigt.

$ CAT /TMP /Skripte.Protokoll 
Überprüfen Sie die Skripts anmelden, nachdem Sie USB entfernen

Weitere Informationen zum Schreiben von UDEV -Regeln und zum Verwalten von Udev erhalten Sie von der Udev Und Udevadm Handbucheinträge durch Ausführen:

$ MAN UDEV $ MAN UDEVADM 
Zusammenfassung

Udev ist ein bemerkenswerter Geräte -Manager, der eine dynamische Möglichkeit zum Einrichten von Geräteknoten in der /dev Verzeichnis. Es stellt sicher, dass Geräte konfiguriert sind, sobald sie angeschlossen und entdeckt werden. Es verbreitet Informationen über ein verarbeitetes Gerät oder ändert sich in seinem Zustand, in den Benutzerraum.

Wenn Sie Fragen oder Gedanken zu diesem Thema teilen, verwenden Sie das Feedback -Formular.