Udev symlinks

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Mit udev automatisch Symlinks anlegen

udev wird auf beinahe allen aktuellen Linux-Distributionen für die Verwaltung von Device-Nodes verwendet. Im folgenden möchte ich kurz vorstellen, wie man für ein bestimmtes Gerät automatisch immer einen konstant benannten Symlink unterhalb von /dev anlegen kann.

Dies vor allem dann praktisch wenn man viele Geräte mit dem selben Chip verwendet, bei mir z.B. ein FTDI FT232R USB/Seriell-Konverter. Über die Seriennummer wird jedem dieser Chips ein passender Name zugeordnet. Gleichzeitig können auch die Rechte angepasst werden.

Seriennummer herausfinden

  • Das Gerät neu einstecken und dabei /var/log/messages beobachten
  • Dort wird normal das zugewiesene device-node ausgegeben:
kernel: usb 2-3.5: new full speed USB device using ehci_hcd and address 6
kernel: usb 2-3.5: New USB device found, idVendor=0403, idProduct=6001
kernel: usb 2-3.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 2-3.5: Product: FT232R USB UART
kernel: usb 2-3.5: Manufacturer: FTDI
kernel: usb 2-3.5: SerialNumber: A900abab
kernel: usb 2-3.5: configuration #1 chosen from 1 choice
kernel: ftdi_sio 2-3.5:1.0: FTDI USB Serial Device converter detected
kernel: usb 2-3.5: Detected FT232RL
kernel: usb 2-3.5: FTDI USB Serial Device converter now attached to ttyUSB0
  • Hier also /dev/ttyUSB0
  • Als nächstes udev nach den Details dieses Geräts befragen:
udevadm info -a -n /dev/ttyUSB0
  • Wir suchen uns daraus die Attribute zusammen, die es von anderen Geräten unterscheiden.

Hier sind das folgende:

ATTRS{idVendor}=="0403"
ATTRS{idProduct}=="6001"
ATTRS{serial}=="A900abab"

udev-Regel erstellen

  • Im Verzeichnis /etc/udev/rules.d liegen normalerweise die Regeln, nach denen udev die Device-Nodes anlegt
  • Wir legen dort eine neue Datei an, z.B. 92-ftdi.rules
  • Die Nummer am Anfang gibt die Reihenfolge an, in der die Regeln abgearbeitet werden. Für unsere Zwecke hier nicht so wichtig
  • In diese Datei kommt folgender Inhalt:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A900abab", SYMLINK+="jeelink", MODE="0666"
  • Damit wird für dieses Gerät immer automatisch ein Symlink /dev/jeelink angelegt
  • Außerdem werden die Zugriffsrechte auf 0666 gesetzt, also jeder Benutzer des Systems darf hier lesen und schreiben. Damit kann dann z.B. avrdude auch ohne Root-Rechte ausgeführt werden.