La regla Udev para montar el disco no funciona

9

Tengo el siguiente contenido en /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"

Despues de correr:

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

No hace nada en absoluto. Sin embargo, si cambio el comando de montaje para algo como / bin / touch / tmp / xyz, funciona.

Versiones

[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
fuente

Respuestas:

18

Esta es una característica del sistema. El udevcomando original ha sido reemplazado por systemd-udevd(vea su página de manual). Una de las diferencias es que crea su propio espacio de nombres del sistema de archivos, por lo que su montaje está hecho, pero no es visible en el espacio de nombres principal. (Puede verificar esto haciendo systemctl status systemd-udevdpara obtener el PID principal del servicio, luego mirando a través del contenido de /proc/<pid>/mountinfosu sistema de archivos).

Si desea volver a tener un espacio de nombres de sistema de archivos compartido en lugar de privado, cree un archivo /etc/systemd/system/systemd-udevd.servicecon contenido

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

o un nuevo directorio y archivo /etc/systemd/system/systemd-udevd.service.d/myoverride.confcon solo las últimas 2 líneas, es decir

[Service]
MountFlags=shared

y reinicie el servicio systemd-udevd. No he encontrado las implicaciones de hacer esto.

meuh
fuente
Sí, he aplicado una solución alternativa, me pregunto si también tiene implicaciones de seguridad.
sebelk
1
Estoy bastante seguro de que esto no funcionó hasta que agregué [Service]entre esas dos líneas.
Ricitos
1
@goldilocks Probablemente tengas razón. Agregué esto a la respuesta, gracias. Puede depender de cuál fue la última sección en el archivo incluido, pero parece que systemd ahora prefiere que use la *.d/*.confforma de hacer cambios, ya que .includeno parece estar documentado.
meuh
12

Este mismo problema ocurre en Ubuntu 18.04 con la misma causa subyacente. Para solucionarlo, creamos un archivo de anulación para systemd-udevd:

sudo systemctl edit systemd-udevd

E inserte en él:

[Service]
MountFlags=shared

Guarde el archivo y luego ejecute:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart
espacio libre
fuente
Funcionó de maravilla en Raspberry (Raspbian 9 "stretch"). ¡Gracias!
Maxwel Leite
2
No funcionó para mi Ubuntu 18.04 para resolver el problema de no montar automáticamente para la unidad USB.
Yu Shen el
Trabajó en Ubuntu 18.04. @YuShen, es posible que desee verificar sus reglas de udev.
Greg Bell