SDカードリーダーのシリアル番号に基づいてudevルールを使用してブロックデバイス名を設定する方法

SDカードリーダーのシリアル番号に基づいてudevルールを使用してブロックデバイス名を設定する方法

私は 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:ペーストビン

更新: 解決策を見つけました:

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 では動作しません。なぜでしょうか?

関連情報