Aturan Udev untuk memasang disk tidak berfungsi

9

Saya memiliki konten berikut di /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"

Setelah berlari:

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

Itu tidak melakukan apa-apa sama sekali. Namun jika saya mengubah perintah mount untuk sesuatu seperti / bin / touch / tmp / xyz berfungsi.

Versi:

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

Jawaban:

18

Ini adalah fitur systemd. udevPerintah asli telah diganti oleh systemd-udevd(lihat halaman manualnya). Salah satu perbedaannya adalah ia menciptakan namespace filesystem sendiri, jadi mount Anda selesai, tetapi tidak terlihat di namespace utama. (Anda dapat memeriksanya dengan melakukan systemctl status systemd-udevduntuk mendapatkan PID Utama dari layanan ini, kemudian melihat isi dari /proc/<pid>/mountinfountuk sistem berkas Anda).

Jika Anda ingin kembali memiliki shared bukan sistem nama filesystem pribadi, kemudian buat file /etc/systemd/system/systemd-udevd.servicedengan konten

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

atau direktori dan file /etc/systemd/system/systemd-udevd.service.d/myoverride.confbaru hanya dengan 2 baris terakhir, yaitu

[Service]
MountFlags=shared

dan restart layanan systemd-udevd. Saya belum menemukan implikasi dari melakukan ini.

meuh
sumber
Ya saya sudah menerapkan solusi seperti itu, saya ingin tahu apakah memiliki implikasi keamanan juga.
sebelk
1
Cukup yakin ini tidak berhasil sampai saya menambahkan [Service]antara dua baris.
goldilocks
1
@goldilocks Anda mungkin benar. Saya menambahkan ini ke jawabannya, terima kasih. Mungkin tergantung pada apa bagian terakhir dalam file yang disertakan, tetapi tampaknya systemd sekarang lebih memilih Anda untuk menggunakan *.d/*.confcara membuat perubahan, karena .includesepertinya tidak didokumentasikan.
meuh
12

Masalah yang sama ini terjadi di Ubuntu 18.04 dengan penyebab mendasar yang sama. Untuk memperbaikinya kami membuat file override untuk systemd-udevd:

sudo systemctl edit systemd-udevd

Dan masukkan ke dalamnya:

[Service]
MountFlags=shared

Simpan file dan kemudian jalankan:

sudo systemctl daemon-reload
sudo service systemd-udevd --full-restart
ruang bebas
sumber
Itu bekerja seperti pesona pada Raspberry (Raspbian 9 "stretch"). Terima kasih!
Maxwel Leite
2
Itu tidak berfungsi untuk Ubuntu 18.04 saya untuk memecahkan masalah tidak ada automount untuk USB drive.
Yu Shen
Bekerja di Ubuntu 18.04. @YuShen, Anda mungkin ingin memeriksa aturan udev Anda.
Greg Bell