La regola Udev per montare il disco non funziona


9

Ho il seguente contenuto in /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"

Dopo l'esecuzione:

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

Non fa assolutamente nulla. Tuttavia, se cambio il comando mount per qualcosa come / bin / touch / tmp / xyz, funziona.

versioni:

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

Risposte:


18

Questa è una funzionalità di sistema. Il udevcomando originale è stato sostituito da systemd-udevd(vedi la sua pagina man). Una delle differenze è che crea il proprio spazio dei nomi del filesystem, quindi il tuo mount è fatto, ma non è visibile nello spazio dei nomi principale. (Puoi verificarlo facendo questo systemctl status systemd-udevdper ottenere il PID principale del servizio, quindi guardando il contenuto del /proc/<pid>/mountinfotuo filesystem).

Se vuoi tornare ad avere uno spazio dei nomi di filesystem condiviso anziché privato, quindi crea un file /etc/systemd/system/systemd-udevd.servicecon i contenuti

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

o una nuova directory e file /etc/systemd/system/systemd-udevd.service.d/myoverride.confcon solo le ultime 2 righe, ad es

[Service]
MountFlags=shared

e riavviare il servizio systemd-udevd. Non ho trovato le implicazioni nel fare questo.


Sì, ho applicato una soluzione alternativa, mi chiedo se abbia anche implicazioni di sicurezza.
sebelk,

1
Abbastanza sicuro che non ha funzionato fino a quando non ho aggiunto [Service]tra quelle due righe.
Riccioli d'oro,

1
@goldilocks Probabilmente hai ragione. Ho aggiunto questo alla risposta, grazie. Potrebbe dipendere dall'ultima sezione del file incluso, ma sembra che systemd ora preferisca utilizzare il *.d/*.confmodo di apportare modifiche, poiché non .includesembra essere documentato.
Meuh

12

Lo stesso problema si verifica in Ubuntu 18.04 con la stessa causa sottostante. Per risolvere il problema, creiamo un file di sostituzione per systemd-udevd:

sudo systemctl edit systemd-udevd

E inserire in esso:

[Service]
MountFlags=shared

Salvare il file ed eseguire:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart

Ha funzionato come un incantesimo su Raspberry (Raspbian 9 "stretch"). Grazie!
Maxwel Leite,

2
Non ha funzionato con Ubuntu 18.04 per risolvere il problema dell'assenza di automount per l'unità USB.
Yu Shen,

Ha funzionato in Ubuntu 18.04. @YuShen, potresti voler controllare le tue regole udev.
Greg Bell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.