Schließt man unter Linux Geräte an, passiert etwas damit – das Gerät wird erkannt und lässt sich nutzen. Egal ob es sich um einen USB-Stick, eine externe oder interne Festplatte handelt, eine Webcam oder was auch immer – der Linux-Kernel muss die Hardware erkennen – dies geschieht natürlich automatisch, anschließend sorgt entsprechende Software dafür, was mit der Hardware geschieht.
Verantwortlich für die Einbindung von Hardware ist unter Linux eine Systemsoftware namens Udev. Udev bindet die Hardware ein und sorgt dafür, dass diese vom System genutzt werden kann.

Nehmen wir als Beispiel eine externe Festplatte, man schließt eine solche an, der Linux-Kernel erkennt diese – anschließend nimmt sich Udev der Hardware an und bindet diese in das Systemverzeichnis/dev“ als neue Gerätedatei ein, dann ist die Hardware nutzbar.

Udev stellt jegliche Hardware, egal ob eingebaut oder angeschlossen, unter „/dev“ zur Verfügung. Doch kann die Software nicht nur Hardware nutzbar machen, die Software kann uns auch weiter behilflich sein – sie kann dafür sorgen, dass mit der Hardware geschieht, was wir möchten – etwa dass sich der Dateimanager automatisch öffnet, wenn ein USB-Medium angeschlossen wird …
Sehen wir uns einfach einmal an, wie Udev funktioniert.

Gehen wir wieder zurück zu unserer externen Festplatte – wir schließen die Hardware an den Computer an, der Linux-Kernel erkennt diese. Der Linux-Kernel erstellt unter „/sys“ einen Gerätenamen. Udev erkennt die neu angeschlossene Hardware und bindet diese unter „/dev“ ein. Was mit Hardware geschehen soll, liest diese Software aus den Dateien unter „/lib/udev/rules.d/“ aus:

Und genau dieses Verzeichnis können wir nutzen, um dem System zu zeigen, was mit entsprechender Hardware geschehen soll.

Zu Beginn müssen wir erst einmal den eindeutigen Namen der Hardware kennen. Hängen wir ein externes USB-Medium ein, zeigt uns der Befehl:

mount

wo das System dieses einhängt. Ein Beispiel:

/dev/sda1 on /media/robertg/Ventoy type exfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,iocharset=utf8,errors=remount-ro,uhelper=udisks2)

Wir finden diesen USB-Stick unter „/media/robertg/Ventoy/„, er nennt sich also ganz einfach „Ventoy“ – er kann aber auch recht kryptische Bezeichnungen haben, wenn Sie ihn nicht umbenannt haben.

Als root zeigen uns:

lsblk

(MBR) oder:

blkid

(GPT) dies schön übersichtlich. Der Befehl:

journalctl -f

zeigt uns, was passiert, während man Hardware anschließt (erst starten, dann anschließen, mit Strg+c beenden):

Hier vor allem wichtig ist die eindeutige Bezeichnung:

Dez 10 03:54:41 debian-huawei kernel: usb 2-3: New USB device found, idVendor=0781, idProduct=5591, bcdDevice= 1.00

Speziell „idVendor=0781“ und „idProduct=5591„. Ähnliche Ausgaben zur eindeutigen Erkennung zeigt uns der Befehl

dmesg | grep -i usb

nach dem Anschließen:

Auch folgender Befehl kann zur eindeutigen Identifizierung beitragen (nach dem Anschließen):

udevadm info --attribute-walk --name=/dev/sda1

In diesem Fall gibt man einfach die Partition an:

udevadm info --attribute-walk --name=/dev/sda1

Oder während des Anschließens (erster Befehl ist jedoch verständlicher):

Dies war alles ein wenig viel – mehr als „idVendor=“ und „idProduct=“ und Informationen wie „KERNEL==“sda1″“ und „SUBSYSTEM==“block““ benötigen Sie jedoch nicht. Jetzt können wir dem System mit einer Udev-Regel zeigen, was es mit der Hardware anstellen soll.

Als Beispiel möchte ich, dass der Stick sich mit dem Namen „musik“ im System einhängt und der Benutzer „robert“ vollen Zugriff (alle Rechte) darauf hat. Wir legen (natürlich als root) unter „/lib/udev/rules.d/“ eine neue Datei an – ich nenne diese beispielsweise „10-usb-music.rules“ und befülle sie wie folgt:

KERNEL=="sda1", SUBSYSTEM=="block", ATTR{ID_VENDOR_ID}=="0781", ATTR{ID_SERIAL_SHORT}=="5591", OWNER="robert", SYMLINK+="musik"

Jetzt können wir natürlich nicht nur dem System sagen, wo sich der USB-Stick etwa einhängen soll – wir können natürlich auch etwa ein Script ausführen lassen, wenn er eingehängt wird – Beispiel:

KERNEL=="sda1", ACTION=="add", SUBSYSTEM=="block", ATTR{ID_VENDOR_ID}=="0781", ATTR{ID_SERIAL_SHORT}=="5591", OWNER="robert", SYMLINK+="musik", RUN=="/pfad/zum/Script.sh"

Um eine Aktion auszuführen, fügen wir „ACTION==“add““ hinzu, am Ende der Regel folgt mit „RUN==“/pfad/zum/Script.sh““ die Aufgabe.

Sollte die Regel nicht sofort wirken, hilft ein Neustart des Systems. Wichtig: geben Sie der neuen Regel einen Namen mit einer niedrigen Zahl, Regeln mit niedriger Zahl (im Beispiel „10“) werden zuerst ausgeführt.


Weitere Dokumentation: Freedesktop.org und Archlinux.

Categories:

Tags:

Schreibe einen Kommentar

Eine Reaktion

Neue Themen im Forum
Abschied bis Herbst: Dänisches Di …https://www.heise.de/news/Von-Word-und-Excel-zu-LibreOffice-Daenis … Weiterlesen
Network Data Usage Monitor wie ri …der Schalter --xml oder --json gibt dir die Daten im entsprechende … Weiterlesen
Keine Berechtigung für Dateianhan …Hallo Feifel, passe ich morgen Abend (also über Mittwoch an), s … Weiterlesen
Kategorien im Wiki
WIKI-Beiträge des Monates

Die Beiträge des Monates finden Sie im Kalender unter den blau markierten Tageszahlen.

September 2023
M D M D F S S
 123
45678910
11121314151617
18192021222324
252627282930  
Archive