[Linux] Feste Pfade für mehrere serielle Geräte

Ein Fall, in dem unter Linux mehrere serielle Geräte gleichzeitig verwendet werden. Wenn beispielsweise das GPS-Modul und das LTE-Kommunikationsmodul gleichzeitig verbunden sind, werden beide standardmäßig als / dev / ttyUSB0 oder / dev / ttyUSB1 erkannt, aber die Nummern am Ende werden in der erkannten Reihenfolge zugewiesen, also beim Start Abhängig vom Zeitpunkt ist es möglich, das gegenüberliegende Modul zu treffen. In diesem Fall kann das automatisch startende Programm nicht gut auf das Gerät zugreifen.

Um dies zu verhindern, schreiben Sie udev-Regeln und definieren Sie einen festen Pfad, damit Sie in beliebiger Reihenfolge auf die Module zugreifen können.

Über udev Regeln

udev ist ein System zum Verwalten von Gerätedateien für den Zugriff auf Geräte. Eine Gerätedatei kann unter "/ dev" erstellt werden, wenn ein Gerät verbunden ist, oder gelöscht werden, wenn es getrennt wird. Hier wird jedoch eine symbolische Verknüpfung erstellt und behoben, wenn ein bestimmtes serielles Gerät angeschlossen wird. Beschreibt die Regeln für den Zugriff auf ein bestimmtes Gerät mit einem neuen Pfad

Über die Regeldatei

udev-Regeln werden unter / etc / udev / rules.d platziert. Dateinamen beginnen mit einer zweistelligen Nummer und "-`" und haben die Erweiterung ".rules"

Beispiel für einen udev-Dateinamen


70-persistent-net.rules

Zweistellige Nummern werden in aufsteigender Reihenfolge der Nummern aufgerufen. Wenn die Regel vom Benutzer willkürlich festgelegt wird, ist es daher besser, eine jüngere Zahl wie "10" anzugeben und diese bevorzugt anzuwenden. Wenn die Regel für dasselbe Gerät zuerst aufgerufen wird, wird die Regel mit der späteren Nummer nicht angewendet.

Überprüfen der angewandten Regeln

Lassen Sie uns die Regeln überprüfen, die auf ein Gerät angewendet werden. Unten finden Sie ein Beispiel [^ 1], um die Regeln von udev für / dev / sda zu überprüfen

# udevadm test `udevadm info -q path -n /dev/sda`

Ausgabebeispiel

# udevadm test `udevadm info -q path -n /dev/sda`
calling: test
version 3.2.9
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          3
file size:         8270736 bytes
header size             80 bytes
strings            2110312 bytes
nodes              6160344 bytes
Load module index
timestamp of '/etc/udev/rules.d' changed
Reading rules file: /lib/udev/rules.d/01-md-raid-creating.rules
Reading rules file: /lib/udev/rules.d/10-dm.rules
Reading rules file: /lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /lib/udev/rules.d/40-slackware.rules
Reading rules file: /lib/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /lib/udev/rules.d/50-compat_firmware.rules
Reading rules file: /lib/udev/rules.d/50-udev-default.rules
Reading rules file: /lib/udev/rules.d/60-block.rules
Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib/udev/rules.d/60-drm.rules
Reading rules file: /lib/udev/rules.d/60-evdev.rules
Reading rules file: /lib/udev/rules.d/60-input-id.rules
        :

Sie können sehen, dass wir nach einer Regel für das durch diesen Befehl angegebene Gerät suchen. Es werden verschiedene andere Dinge ausgegeben, aber bitte beziehen Sie sich auf andere für detaillierte Erklärungen. Ich werde nur sicherstellen, dass die Regeln, die ich geschrieben habe, korrekt geladen sind.

Die Regeln in / lib / udev / rules.d (vom System bereitgestellte Regeln) und die Regeln in / etc / udev / rules.d (vom Benutzer konfigurierte Regeln) sind in zweistelliger Reihenfolge. Es wird geladen. Wenn es richtig gelesen wird, wird der Dateiname nach "Regeldatei lesen:" angezeigt. Wenn jedoch ein Fehler in der Regel vorliegt, wird eine Fehlermeldung angezeigt. Seien Sie also vorsichtig.

Wie schreibe ich Regeln?

Informationen zum Schreiben von udev-Regeln finden Sie unter http://www.reactivated.net/writing_udev_rules.html.

Wenn Sie die Regeln von udev gut anwenden können, können Sie bestimmte Befehle ausführen, wenn das Gerät angeschlossen ist.

Referenz

Wenn Sie dasselbe Gerät mehrmals verwenden möchten

Da der Pfad generiert wird, der von dem unter "/ dev / serial / by-id /" angeschlossenen USB-Port zugewiesen wird, gab es ein Beispiel für die Erstellung einer symbolischen Verknüpfung für den Zugriff darauf.

http://tclip.blog.fc2.com/blog-entry-86.html

Diese Methode wird jedoch auch beim Upgrade des Kernels oder bei mehreren USB-Controllern erkannt (nicht nur mit einer Erweiterungskarte, sondern auch mit einer Karte, auf der USB 3.x-Anschlüsse und USB 2.0-Anschlüsse gemischt sind). Bitte beachten Sie, dass sich die Reihenfolge ändern kann und die nutzbare Umgebung eingeschränkt ist.

Referenz

[^ 1]: Einige Websites haben möglicherweise den Befehl "udevinfo" eingeführt, der jetzt durch "udevadm info" ersetzt wird.

Recommended Posts

[Linux] Feste Pfade für mehrere serielle Geräte
pyenv für Linux
[Für Memo] Linux Teil 2
Wofür ist Linux?
Ihr eigener Koredake ist ein Linux-Befehl