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.