
У меня есть устройство чтения 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, но почему?