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