La règle Udev pour monter le disque ne fonctionne pas

9

J'ai le contenu suivant dans /etc/udev/rules.d/81-external-disk.rules:

ENV{ID_FS_UUID}=="6826692e-79f4-4423-8467-cef4d5e840c5", RUN{program}+="/bin/mount -o nofail,x-systemd.device-timeout=1 -t ext4 -U 6826692e-79f4-4423-8467-cef4d5e840c5 /backup/external"

Après l'exécution:

udevadm control --reload ; udevadm trigger /dev/sdb1

Cela ne fait rien du tout. Cependant, si je modifie la commande de montage pour quelque chose comme / bin / touch / tmp / xyz, cela fonctionne.

Versions:

[root@helsinki rules.d]# rpm -qa | grep udev
libgudev1-219-19.el7_2.12.x86_64
python-pyudev-0.15-7.el7_2.1.noarch
[root@helsinki rules.d]# rpm -qa | grep systemd
systemd-libs-219-19.el7_2.12.x86_64
systemd-219-19.el7_2.12.x86_64
systemd-sysv-219-19.el7_2.12.x86_64
[root@helsinki rules.d]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
sebelk
la source

Réponses:

18

Il s'agit d'une fonction systemd. La udevcommande d' origine a été remplacée par systemd-udevd(voir sa page de manuel). L'une des différences est qu'il crée son propre espace de noms de système de fichiers, donc votre montage est terminé, mais il n'est pas visible dans l'espace de noms principal. (Vous pouvez vérifier cela en faisant systemctl status systemd-udevdpour obtenir le PID principal du service, puis en parcourant le contenu de /proc/<pid>/mountinfovotre système de fichiers).

Si vous souhaitez revenir à un espace de noms de système de fichiers partagé plutôt que privé, créez un fichier /etc/systemd/system/systemd-udevd.serviceavec son contenu

.include /usr/lib/systemd/system/systemd-udevd.service
[Service]
MountFlags=shared 

ou un nouveau répertoire et fichier /etc/systemd/system/systemd-udevd.service.d/myoverride.confavec seulement les 2 dernières lignes, c'est-à-dire

[Service]
MountFlags=shared

et redémarrez le service systemd-udevd. Je n'ai pas trouvé les implications de faire cela.

meuh
la source
Oui, j'ai appliqué une telle solution de contournement, je me demande si cela a aussi des implications sur la sécurité.
sebelk
1
Je suis sûr que cela n'a pas fonctionné jusqu'à ce que j'ajoute [Service]entre ces deux lignes.
goldilocks
1
@goldilocks Vous avez probablement raison. J'ai ajouté ceci à la réponse, merci. Cela peut dépendre de ce que la dernière section était dans le fichier inclus, mais il semble que systemd préfère maintenant que vous utilisiez la *.d/*.conffaçon d'apporter des modifications, car cela ne .includesemble pas être documenté.
meuh
12

Ce même problème se produit dans Ubuntu 18.04 avec la même cause sous-jacente. Pour le corriger, nous créons un fichier de remplacement pour systemd-udevd:

sudo systemctl edit systemd-udevd

Et insérez-y:

[Service]
MountFlags=shared

Enregistrez le fichier puis exécutez:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart
espace libre
la source
Cela a fonctionné comme un charme sur la framboise (Raspbian 9 "stretch"). Merci!
Maxwel Leite
2
Cela n'a pas fonctionné pour mon Ubuntu 18.04 pour résoudre le problème de l'absence de montage automatique pour le lecteur USB.
Yu Shen
A travaillé dans Ubuntu 18.04. @YuShen, vous voudrez peut-être vérifier vos règles udev.
Greg Bell