Como definir o nome do dispositivo de bloco usando regras do udev com base no número de série do leitor de cartão SD

Como definir o nome do dispositivo de bloco usando regras do udev com base no número de série do leitor de cartão SD

Eu tenho um leitor de cartão SD e quero definir nomes de dispositivos de bloco para /dev/sdcard2 e suas partições serão nomeadas /dev/sdcard2p1 /dev/sdcard2p2 /dev/sdcard2p3 ... (com base na contagem de partições do cartão específico inserido no leitor)

Esta regra deve ser aplicada a qualquer cartão SD (com várias contagens de partições) inserido neste leitor de cartão SD específico (distinguido pelo número de série) e os dispositivos de bloco que apontam para o cartão SD inserido devem ter esses nomes.

O leitor de cartão SD possui este número de série ID_SERIAL_SHORT=20210500010790

Então, quero escrever a regra udev que definirá o nome do dispositivo de bloco conforme descrevi acima.

Eu tentei esta regra:

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

Mas não está funcionando, o que estou fazendo de errado?

Esta é a saída de udevadm monitor --environment --udev:pasta

Atualização: encontrei alguma solução:

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"

Funciona com ATTRS, mas não funciona com ENV, mas por quê?

informação relacionada