sdcardリーダーがあり、ブロックデバイス名を/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では動作しません。しかし、その理由は何ですか?