udev забывает о теге в пользовательском правиле

У меня есть довольно простой набор пользовательских правил:

ACTION=="add", SUBSYSTEM=="usb", ENV{ID_MODEL_ID}=="0748", ENV{ID_VENDOR_ID}=="05e3", TAG+="my-card-reader"
TAGS=="my-card-reader", ENV{DEVTYPE}=="disk", ENV{ID_INSTANCE}=="0:1", SYMLINK+="sdcard"
TAGS=="my-card-reader", ENV{ID_INSTANCE}=="0:1", ENV{DEVTYPE}=="partition", SYMLINK+="sdcard%n"

Я пытаюсь определить свой картридер USB и затем дать карте памяти microSD известные имена в/dev. Этот подшипник раньше работал в 16,04, в 18,04 он не делает.

При проверке udevadm monitor -p, Я вижу, что читатель USB распознан:

UDEV  [1832291.742219] add      /devices/pci0000:00/0000:00:14.0/usb4/4-2 (usb)
ACTION=add
[…]
SUBSYSTEM=usb
TAGS=:my-card-reader:
[…]

Но когда я проверяю, что sysfs соединяют каналом позже с udevadm info /sys/devices/pci0000:00/0000:00:14.0/usb4/4-2, мой ТЕГ больше не показывают — на самом деле, существует нет E: TAGS запись, доступная вообще.

Для других устройств, например, раздел на моей карте памяти microSD, значении по умолчанию Ubuntu systemd ТЕГ остается доступным:

P: /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host3/target3:0:0/3:0:0:2/block/sdf
N: sdf
[…]
E: SUBSYSTEM=block
E: TAGS=:systemd:
[…]

Обновление 1

Я работал с udev_log="debug" при отключении и перевключении средства чтения и SD-карты, внезапно и до сих пор только однажды, мои правила были применены. Однако смотрение на journalctl отлаживает журналы от udev и сравнения, я не вижу различия кроме гонки между журналом ядра, udev журнал демона, и разветвленным udev рабочим, а также seq числами.

Обновление 2

Я в значительной степени уменьшил проблему. Тег доступен, когда картридер USB присоединяется во время начальной загрузки. Когда я (пере-) присоединяю его позже, тег отсутствует.

Что я пропускаю?

1
задан 15 May 2019 в 13:41

2 ответа

По-видимому, существует целая вещь, продолжающаяся: https://github.com/systemd/systemd/issues/7587

Длинная короткая история: ТЕГИ только допустимы на событие и не сохранились. Удаление ACTION=="add", от моих правил файл заставил его работать

0
ответ дан 7 December 2019 в 20:18

Скорее всего, этот тег был перезаписан другим правилом.

  • Ubuntu 18.04 получил обновленные правила. Проверьте, используя grep -r TAG в папках системных правил, см. man udev.
  • Файл пользовательских правил с низким номером. Используйте udevadm test ... и udevadm trigger ..., чтобы проверить, какие правила обработаны для этого события.
0
ответ дан 15 May 2019 в 13:41

Другие вопросы по тегам:

Похожие вопросы: