如何使用基于SD卡读卡器序列号的udev规则设置块设备名称

如何使用基于SD卡读卡器序列号的udev规则设置块设备名称

我有 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,但为什么呢?

相关内容