[Linux] Chemins fixes pour plusieurs périphériques série

Un cas où plusieurs périphériques série sont utilisés en même temps sous Linux. Par exemple, lorsqu'un module GPS et un module de communication LTE sont connectés en même temps, les deux sont reconnus comme / dev / ttyUSB0 ou / dev / ttyUSB1 par défaut, mais les numéros à la fin sont attribués dans l'ordre reconnu, donc au démarrage. En fonction du timing de, il est possible de frapper le module opposé. Dans ce cas, le programme qui démarre automatiquement ne pourra pas bien accéder à l'appareil.

Pour éviter cela, écrivez des règles udev et définissez un chemin fixe afin de pouvoir accéder aux modules dans n'importe quel ordre.

À propos des règles udev

udev est un système de gestion des fichiers de périphériques pour accéder aux périphériques. Un fichier de périphérique peut être créé sous / dev quand un périphérique est connecté, ou supprimé quand il est déconnecté, mais ici un lien symbolique est créé et fixé quand un périphérique série spécifique est connecté. Décrit les règles d'accès à un périphérique spécifique avec un nouveau chemin

À propos du fichier de règles

Les règles udev sont placées sous / etc / udev / rules.d. Les noms de fichiers commencent par un nombre à deux chiffres et «-» et ont une extension de «.rules»

Exemple de nom de fichier udev


70-persistent-net.rules

Les numéros à deux chiffres sont appelés par ordre croissant de nombre. Par conséquent, si la règle est définie arbitrairement par l'utilisateur, il est préférable de spécifier un nombre plus jeune tel que «10» et de l'appliquer préférentiellement. Si la règle pour le même appareil est appelée en premier, la règle avec le dernier numéro ne sera pas appliquée.

Vérification des règles appliquées

Vérifions les règles appliquées à un appareil. Voici un exemple [^ 1] pour vérifier les règles d'udev pour / dev / sda

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

Exemple de sortie

# 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
        :

Vous pouvez voir que nous recherchons une règle pour le périphérique spécifié par cette commande. Divers autres éléments sont affichés, mais veuillez vous référer à d'autres pour des explications détaillées. Je vais juste m'assurer que les règles que j'ai écrites sont correctement chargées.

Les règles dans / lib / udev / rules.d (règles fournies par le système) et les règles dans / etc / udev / rules.d (règles configurées par l'utilisateur) sont dans l'ordre des nombres à 2 chiffres. Il sera chargé. S'il est lu correctement, le nom du fichier apparaîtra après Lecture du fichier de règles:, mais s'il y a une erreur dans la règle, un message d'erreur apparaîtra, alors soyez prudent.

Comment rédiger des règles

Veuillez vous référer à http://www.reactivated.net/writing_udev_rules.html pour savoir comment écrire des règles udev.

Si vous pouvez bien utiliser les règles d'udev, vous pourrez exécuter des commandes spécifiques lorsque l'appareil sera connecté.

référence

Si vous souhaitez utiliser le même appareil plus d'une fois

Puisque le chemin attribué par le port USB connecté sous / dev / serial / by-id / est généré, il y avait un exemple de création d'un lien symbolique pour y accéder.

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

Cependant, cette méthode est également reconnue lors de la mise à niveau du noyau ou lorsqu'il y a plusieurs contrôleurs USB (non seulement avec une carte d'extension, mais aussi avec une carte où les ports USB 3.x et les ports USB 2.0 sont mélangés). Veuillez noter que la commande peut changer et que l'environnement utilisable sera limité.

référence

[^ 1]: Certains sites peuvent avoir introduit la commande ʻudevadm, qui est maintenant remplacée par ʻudevadm info.

Recommended Posts

[Linux] Chemins fixes pour plusieurs périphériques série
pyenv pour linux
[Pour mémoire] Linux Partie 2
À quoi sert Linux?
Votre propre Koredake est une commande Linux