В Gentoo я создал небольшой скрипт, который вызывался udev и позволял мне подключать USB-устройство, идентифицируемое по его серийному номеру, к любой точке монтирования, которую я выбрал.

В основном, /etc/udev/rules.d/00-removable.rules содержит

SUBSYSTEM=="block", ACTION=="add", KERNEL=="sd[b-z]*", RUN+="/usr/local/bin/mountRemovableMedia.sh %k"

и мой сценарий mountRemovableMedia.sh использует параметр устройства, переданный для определения серийного устройства, а затем подключает его к точке подключения, которую я хочу.

Теперь, в F21, с systemd это не работает. Сценарий вызывается (у меня есть файл журнала, записанный сценарием), команда монтирования выполняется (возвращает 0, ошибки нет), но фактического монтирования не происходит: если я набираю 'mount' в терминале, я не вижу устройство, и если я перейду к точке монтирования, каталог будет пуст.

Я попытался изменить mount на udisksctl mount --block-device ... но он все еще не работает.

1 ответ1

0

У меня была та же проблема со скриптом, который отлично работал в Fedora 20 и более ранних версиях. Я думаю, что причина, по которой это больше не работает в Fedora 21, заключается в том, что udev запускает скрипт с закрытым пространством имен монтирования, хотя я этого не подтвердил.

Обходной путь, который я нашел, заключается в следующем: вместо того, чтобы выполнить скрипт с помощью udev, я теперь выполняю его через модуль systemd.

Подробно я создал следующий файл системного модуля как /etc/systemd/system/mount_device.service:

[Unit]
After=dev-[UUID].device

[Service]
ExecStart=/etc/systemd/scripts/mount_device.sh

[Install]
WantedBy=dev-[UUID].device

где правильный dev-[UUID].device должен быть заменен на правильный системный идентификатор устройства, который можно определить с помощью systemctl --all --full -t device . Необходимо включить модуль, запустив systemctl enable mount_device.service .

Если скрипт выполняется таким образом, монтирование показывается, как и ожидалось. Единственным недостатком является то, что он работает только в том случае, если вы заранее знаете UUID, метку или подобное, что может не применяться в вашем случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .