Quy tắc Udev để gắn đĩa không hoạt động


9

Tôi có nội dung sau trong /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"

Sau khi chạy:

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

Nó không làm gì cả. Tuy nhiên, nếu II thay đổi lệnh mount cho một cái gì đó như / bin / touch / tmp / xyz thì nó hoạt động.

Phiên bản:

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

Câu trả lời:


18

Đây là một tính năng systemd. Lệnh ban đầu udevđã được thay thế bằng systemd-udevd(xem trang man của nó). Một trong những khác biệt là nó tạo ra không gian tên hệ thống tập tin riêng của mình, vì vậy việc gắn kết của bạn đã được thực hiện, nhưng nó không hiển thị trong không gian tên chính. (Bạn có thể kiểm tra điều này bằng cách thực hiện systemctl status systemd-udevdđể có được PID chính của dịch vụ, sau đó xem qua nội dung của /proc/<pid>/mountinfohệ thống tệp của bạn).

Nếu bạn muốn quay lại để chia sẻ thay vì không gian tên hệ thống tệp riêng tư, thì hãy tạo một tệp /etc/systemd/system/systemd-udevd.servicecó nội dung

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

hoặc một thư mục và tệp /etc/systemd/system/systemd-udevd.service.d/myoverride.confmới chỉ với 2 dòng cuối cùng, nghĩa là

[Service]
MountFlags=shared

và khởi động lại dịch vụ systemd-udevd. Tôi đã không tìm thấy ý nghĩa của việc này.


Có, tôi đã áp dụng một cách giải quyết như vậy, tôi tự hỏi nếu nó cũng có ý nghĩa bảo mật.
sebelk

1
Khá chắc chắn rằng điều này đã không hoạt động cho đến khi tôi thêm vào [Service]giữa hai dòng.
goldilocks

1
@goldilocks Có lẽ bạn đúng. Tôi đã thêm điều này vào câu trả lời, cảm ơn. Nó có thể phụ thuộc vào phần cuối cùng trong tệp được bao gồm, nhưng có vẻ như systemd bây giờ thích bạn sử dụng *.d/*.confcách thực hiện thay đổi, vì .includedường như không được ghi lại.
meuh

12

Vấn đề tương tự này xảy ra trong Ubuntu 18.04 với cùng một nguyên nhân cơ bản. Để khắc phục, chúng tôi tạo một tệp ghi đè cho systemd-udevd:

sudo systemctl edit systemd-udevd

Và chèn vào nó:

[Service]
MountFlags=shared

Lưu tệp và sau đó thực hiện:

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

Nó hoạt động như một bùa mê trên Raspberry (Raspbian 9 "căng"). Cảm ơn!
Maxwel Leite

2
Nó không hoạt động cho Ubuntu 18.04 của tôi để giải quyết vấn đề không có autoount cho ổ USB.
Yu Shen

Đã làm việc trong Ubuntu 18.04. @YuShen, bạn có thể muốn kiểm tra các quy tắc udev của mình.
Greg Bell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.