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에서는 작동하지 않습니다. 그런데 그 이유는 무엇입니까?

관련 정보