Как задать имя блочного устройства с помощью правил udev на основе серийного номера устройства чтения SD-карт

Как задать имя блочного устройства с помощью правил udev на основе серийного номера устройства чтения SD-карт

У меня есть устройство чтения SD-карт, и я хочу задать имена блочных устройств как /dev/sdcard2, а их разделы будут называться /dev/sdcard2p1 /dev/sdcard2p2 /dev/sdcard2p3 ... (в зависимости от количества разделов конкретной карты, вставленной в устройство чтения)

Это правило должно применяться к любой SD-карте (с различным количеством разделов), вставленной в это конкретное устройство чтения SD-карт (отличающееся серийным номером), и блочные устройства, указывающие на вставленную SD-карту, должны иметь эти имена.

Устройство чтения SD-карт имеет серийный номер ID_SERIAL_SHORT=20210500010790

Поэтому я хочу написать правило udev, которое установит имя блочного устройства, как я описал выше.

Я попробовал это правило:

KERNEL=="sd*", ACTION=="add", ENV{ID_SERIAL_SHORT}=="20210500010790", SYMLINK+="sdcard2%n"

Но это не работает, что я делаю не так?

Это вывод udevadm monitor --environment --udev:pastebin

Обновление: Я нашел решение:

ACTION=="add", SUBSYSTEM=="block", ATTRS{serial}=="20210500010790", ENV{DEVTYPE}=="disk", SYMLINK+="sdcard2"
ACTION=="add", SUBSYSTEM=="block", ATTRS{serial}=="20210500010790", ENV{DEVTYPE}=="partition", SYMLINK+="sdcard2p%n"

Работает с ATTRS, но не работает с ENV, но почему?

Связанный контент