Правило 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

Це системна функція. Оригінальну 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]між цими двома рядками.
золотинок

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

Це спрацювало як шарм на Малині (Raspbian 9 "стрейч"). Дякую!
Maxwel Leite

2
Не вдалося моєму Ubuntu 18.04 вирішити проблему відсутності автоматичної установки USB-накопичувача.
Ю. Шень

Працював в Ubuntu 18.04. @YuShen, ви можете перевірити свої правила udev.
Грег Белл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.