sdcard 리더 일련 번호를 기반으로 udev 규칙을 사용하여 블록 장치 이름을 설정하는 방법

sdcard 리더 일련 번호를 기반으로 udev 규칙을 사용하여 블록 장치 이름을 설정하는 방법

sdcard 리더가 있고 블록 장치 이름을 /dev/sdcard2로 설정하고 해당 파티션의 이름은 /dev/sdcard2p1 /dev/sdcard2p2 /dev/sdcard2p3 ...(리더에 삽입된 특정 카드의 파티션 수에 따라)가 됩니다.

이 규칙은 이 특정 sdcard 리더(일련 번호로 구분)에 삽입된 모든 sdcard(다양한 파티션 수 포함)에 적용되어야 하며 삽입된 sdcard를 가리키는 블록 장치에는 해당 이름이 있어야 합니다.

Sdcard 리더의 일련 번호는 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에서는 작동하지 않습니다. 그런데 왜 그럴까요?

관련 정보