Die Udev-Regel zum Mounten der Festplatte funktioniert nicht

9

Ich habe den folgenden Inhalt 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"

Nach dem Rennen:

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

Es macht überhaupt nichts. Wenn ich jedoch den Befehl mount für etwas wie / bin / touch / tmp / xyz ändere, funktioniert es.

Versionen:

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

Antworten:

18

Dies ist eine systemd-Funktion. Der ursprüngliche udevBefehl wurde durch ersetzt systemd-udevd(siehe Manpage). Einer der Unterschiede besteht darin, dass ein eigener Dateisystem-Namespace erstellt wird, sodass die Bereitstellung abgeschlossen ist, der jedoch im Haupt-Namespace nicht sichtbar ist. (Sie können dies überprüfen, indem systemctl status systemd-udevdSie die Haupt-PID des Dienstes abrufen und dann den Inhalt /proc/<pid>/mountinfoIhres Dateisystems durchsuchen.)

Wenn Sie wieder einen gemeinsam genutzten anstelle eines privaten Dateisystem-Namespace verwenden möchten, erstellen Sie eine Datei /etc/systemd/system/systemd-udevd.servicemit Inhalten

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

oder ein neues Verzeichnis und eine neue Datei /etc/systemd/system/systemd-udevd.service.d/myoverride.confmit nur den letzten 2 Zeilen, dh

[Service]
MountFlags=shared

und starten Sie den systemd-udevd-Dienst neu. Ich habe die Auswirkungen davon nicht gefunden.

meuh
quelle
Ja, ich habe eine solche Problemumgehung angewendet. Ich frage mich, ob dies auch Auswirkungen auf die Sicherheit hat.
sebelk
1
Ich bin mir ziemlich sicher, dass dies nicht funktioniert hat, bis ich [Service]zwischen diesen beiden Zeilen hinzugefügt habe .
Goldlöckchen
1
@goldilocks Du hast wahrscheinlich recht. Ich habe dies der Antwort hinzugefügt, danke. Es kann davon abhängen, was der letzte Abschnitt in der enthaltenen Datei war, aber es scheint, dass systemd Sie jetzt bevorzugt *.d/*.conf, Änderungen vorzunehmen, da .includedies nicht dokumentiert zu sein scheint.
Meuh
12

Das gleiche Problem tritt in Ubuntu 18.04 mit der gleichen zugrunde liegenden Ursache auf. Um dies zu beheben, erstellen wir eine Überschreibungsdatei für systemd-udevd:

sudo systemctl edit systemd-udevd

Und einfügen:

[Service]
MountFlags=shared

Speichern Sie die Datei und führen Sie dann Folgendes aus:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart
Freiraum
quelle
Es funktionierte wie ein Zauber auf Himbeere (Raspbian 9 "Stretch"). Vielen Dank!
Maxwel Leite
2
Bei meinem Ubuntu 18.04 funktionierte es nicht, um das Problem zu lösen, dass kein USB-Laufwerk automatisch installiert wurde.
Yu Shen
Arbeitete in Ubuntu 18.04. @YuShen, möchten Sie vielleicht Ihre udev-Regeln überprüfen.
Greg Bell