Udev symlinks
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.