Je veux monter le lecteur USB en /media
fonction de l'UUID du disque. Comment puis-je utiliser l'UUID d'un lecteur USB dans un fichier de règles udev et qu'est-ce qu'une règle udev pour monter le lecteur USB avec le numéro UUID comme nom de dossier.
La blkid
commande génère l'UUID d'un disque mais uniquement lors du montage.
Réponses:
Même si les UUID ne sont pas directement accessibles par udev, au moins dans Fedora et Ubuntu, ils sont définis comme variables d'environnement (
ENV
). Vous pouvez lire toutes les variables d'environnement d'un périphérique en appelantudevadm info /dev/sdc
. Par exemple, pour un NTFS sur un disque externe, j'obtiens:Tout ce qui a un
E:
devant est défini comme une variable d'environnement.Correspondance avec les UUID
Vous pouvez rivaliser avec
ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"
. En tant que premier filtre, je me compareKERNEL=="sd?2"
pour m'assurer que je ne gère que les périphériques de bloc avec le numéro de partition correct. La règle complète ressemblerait à ceci:La commande logger est utile pour affirmer que la règle est réellement exécutée. Ensuite, vous devez vérifier que la règle ne contient aucune erreur de syntaxe avec
udevadm test /dev/sdc2
. Votre fichier de règles doit être répertorié dans la sortie et aucun message d'erreur ne doit apparaître à côté. Maintenant , vous pouvez déclencher toutes les règles de votre appareil pour vérifier si votre règle fonctionne comme prévu:sudo udevadm trigger /dev/sdc2
. Si votre règle correspond, vous trouverez le message de journal personnalisé dans le journal système (/var/log/syslog
ou viajournalctl -b
).Edit: ali_m a souligné que les variables d'environnement sont définies par les règles précédentes et donc uniquement accessibles si votre
.rules
fichier a un ordre lexicographique suffisamment élevé . Commencer par "60" devrait suffire. Personnellement, je commence mes règles par "zz" (si possible) pour les distinguer des règles prédéfinies en un coup d'œil.Utilisation des UUID dans la
RUN
commande et ailleursUdev a une syntaxe de substitution de variable et d'attribut assez puissante . Plus précisément, chaque occurrence de
$env{ID_FS_UUID}
sera remplacée par l'UUID du lecteur. Donc, pour monter un appareil sous/media/
UUID
vous pouvez utiliser cette règle:Vous voudrez probablement configurer les udisks à la place, cependant, il est spécialisé pour l'espace de problème que vous souhaitez résoudre. Voir https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia comme point de départ.
Mon cas d'utilisation réel pour monter des périphériques avec udev au lieu de
/etc/fstab
ou udisks est de monter des systèmes de fichiers zfs qui ont quelques particularités les rendant pas tout à fait adaptés aux outils habituels.la source
.rules
nom de fichier doit commencer par un nombre> 60 .Il y a une solution approximative qui me vient à l'esprit. Définissez l'entrée fstab co-répondante identifiée par l'UUID. Et dans les règles udev, exécutez
mount -a
chaque fois qu'un nouveau périphérique sd * est ajouté.la source