กฎของ Udev เพื่อเมานต์ดิสก์ไม่ทำงาน


9

ฉันมีเนื้อหาดังต่อไปนี้ใน /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"

หลังจากทำงาน:

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

มันไม่ทำอะไรเลย อย่างไรก็ตามหาก II เปลี่ยนคำสั่ง mount สำหรับบางอย่างเช่น / bin / touch / tmp / xyz

รุ่น:

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

คำตอบ:


18

นี่คือคุณสมบัติ systemd udevคำสั่งดั้งเดิมถูกแทนที่ด้วยsystemd-udevd(ดูหน้าคน) หนึ่งในความแตกต่างคือมันสร้างเนมสเปซระบบไฟล์ของตัวเองดังนั้นการเมานต์ของคุณจะเสร็จสิ้น แต่จะไม่สามารถมองเห็นได้ในเนมสเปซหลัก (คุณสามารถตรวจสอบสิ่งนี้ได้โดยทำsystemctl status systemd-udevdเพื่อรับ PID หลักของบริการจากนั้นตรวจสอบเนื้อหาของ/proc/<pid>/mountinfoระบบไฟล์ของคุณ)

หากคุณต้องการกลับไปที่มีการแบ่งใช้แทนเนมสเปซระบบไฟล์ส่วนตัวให้สร้างไฟล์ที่/etc/systemd/system/systemd-udevd.serviceมีเนื้อหา

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

หรือไดเรกทอรีใหม่และไฟล์ที่/etc/systemd/system/systemd-udevd.service.d/myoverride.confมีเพียง 2 บรรทัดสุดท้ายคือ

[Service]
MountFlags=shared

และรีสตาร์ทเซอร์วิส systemd-udevd ฉันไม่พบความหมายของการทำเช่นนี้


ใช่ฉันใช้วิธีแก้ปัญหาเช่นนี้ฉันสงสัยว่ามีความเกี่ยวข้องด้านความปลอดภัยด้วยหรือไม่
sebelk

1
ค่อนข้างแน่ใจว่านี่จะไม่ทำงานจนกว่าฉันจะเพิ่ม[Service]ระหว่างสองบรรทัด
goldilocks

1
@goldilocks คุณอาจพูดถูก ฉันเพิ่มสิ่งนี้ในคำตอบขอบคุณ มันอาจขึ้นอยู่กับสิ่งที่ส่วนสุดท้ายอยู่ในไฟล์ที่รวม แต่ดูเหมือนว่าตอนนี้ systemd ต้องการให้คุณใช้*.d/*.confวิธีการเปลี่ยนแปลงเนื่องจาก.includeดูเหมือนจะไม่มีเอกสาร
meuh

12

ปัญหาเดียวกันนี้เกิดขึ้นใน Ubuntu 18.04 พร้อมด้วยสาเหตุที่เหมือนกัน ในการแก้ไขเราจะสร้างไฟล์แทนที่สำหรับsystemd-udevd:

sudo systemctl edit systemd-udevd

และใส่เข้าไป:

[Service]
MountFlags=shared

บันทึกไฟล์แล้วดำเนินการ:

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

มันใช้งานได้อย่างมีเสน่ห์บน Raspberry (Raspbian 9 "stretch") ขอบคุณ!
Maxwel Leite

2
มันไม่ได้ผลสำหรับ Ubuntu 18.04 ของฉันเพื่อแก้ปัญหาการไม่เชื่อมต่อกับไดรฟ์ USB
Yu Shen

ทำงานใน Ubuntu 18.04 @YuShen คุณอาจต้องการตรวจสอบกฎ udev ของคุณ
Greg Bell
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.