Je crée une nouvelle règle de base
/etc/udev/rules.d/10-myrule.rules
contenant:
KERNEL!="sdb*", GOTO="auto_mount_end"
ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media"
LABEL="auto_mount_end"
J'ai enregistré, redémarré et inséré une carte SD (reconnue par /dev/sdb1
, je le vois avec dmesg
), mais rien ne se passe. Quand je fais manuellement mount /dev/sdb1 /media
, cela fonctionne.
Comment puis-je dépanner / déboguer une telle udev
règle?
Remarque: j'utilise ArchLinux, mais cela devrait être le même sur n'importe quelle distribution?
arch-linux
mount
udev
Basj
la source
la source
99-myrule.rules
...systemd
Change- t-il quelque chose au comportement normal d'udev?udevadm monitor
, voyez ceci et celaudevadm test
et j'ai validé les règles contre la réalité avecudevadm info
.Réponses:
10-
comme mentionné par jasonwryan, utilisez une numérotation élevée (90's good). Donc, votre règle ne sera pas remplacée par une autre.Utilisez les clés minimales comme vous en avez vraiment besoin. Exemple,
!=
&GOTO
/LABEL
, utilisez plutôt directement==
Votre cible était
sdb1
avec une commande fixe, minimisez la correspondance aveugle en utilisantKERNEL=="sdb1"
Je trouve utile de créer une règle de débogage shadow, j'ai appelé shadow parce que je le laisse toujours là dans le même fichier, donc je l'utilise quand j'en ai besoin.
Remarque:
udev-env.txt
est créé puis la règle est déclenchée de toute façon. Ligne==
correspondant à un nœud correspondant. L'ENV enregistré dans ce fichier pourrait être un mélange entre 2 nœuds ou plus, créé presque en même temps, c'est unstdout
problème de mise en mémoire tampon.L' utilisation
udevadm monitor -u
,udevadm test ...
etudevadm trigger ...
de vérifier que les règles traitées les événements.À l'intérieur des scripts, c'est à vous de créer un journal de débogage et d'intercepter les commandes ayant échoué, en enregistrant également leur valeur de retour
stdout
et lesstderr
messages.Mise à jour:
Référence: udev_237 -
man udev
(Ubuntu_18.04)la source
udevadm test...
semble ne montrer que les variables d'environnement, queATTRS
vous pouvez utiliserudevadm info $DEVICE
pour trouver ces autres paramètres.udevadm info
retour, une arborescence de périphériques veille à bien distinguer les paramètres entre un périphérique et ses périphériques parents (les propriétés semblent être héritées si elles ne sont pas remplacées). Dans mon cas, le sous-système était incorrect.udevadm test "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."
N'y a-t-il aucun moyen de retracer ce qui se passe réellement ?udevadm monitor -u
pour vérifier les événements / conditions etudevadm trigger ...
tester leurs actions.Je pense que la commande que vous recherchez ici est
udevadm
. Vous utiliserez les paramètrestrigger
ettest
pour déclencher une nouvelle analyse des événements udev et pour tester un événement spécifique, respectivement.J'ai appris cela à la dure lorsque je me suis amusé avec le nouveau nom de périphérique réseau dans EL 7. Bonne chance!
la source
Créer un fichier de règles udev
Ajouter une règle qui dit aux udisks de le monter automatiquement
ATTRS{type}=="SD"
peut ne pas être nécessaire si vous utilisez différents types.Règles de rechargement
Éjectez-le puis remettez-le en place.
Référence: Archlinux Wiki: Certains périphériques, qui doivent être traités comme amovibles, ne sont pas
la source
J'avais le même problème avec RASPBERRY PI 3 B +, il se pourrait que les commandes ci-dessus puissent vous aider. Mais cela ne m'a pas aidé. J'essayais d'invoquer un script lors de l'insertion d'un périphérique de stockage USB. Les règles ne sont pas enregistrées dans syslog, il devient donc très difficile de comprendre quelle règle a fonctionné ou quelle règle a échoué.
J'ai donc fait ce qui suit:
(1) J'ai créé mon fichier de règles dans /etc/udev/rules.d/100-myrule.rules
(2) puis j'ai exécuté la commande
sudo /etc/init.d/udev restart
puis j'ai vérifié que cela fonctionnait. Une information peut vous être utile ou non, mais les systèmes de fichiers sont en lecture seule pour udev jusqu'à ce que la commande at (2) soit exécutée.
la source