Udev는 디버그하기 어렵습니다. – 시스템 시작 중 원래 환경은 나중에 다시 실행하는 동안 항상 환경에서 약간씩 벗어납니다.
그래서 저는 시행착오보다는 udev에 대한 이해를 바탕으로 udev 규칙을 작성하려고 합니다.
큰 질문은 다음과 같습니다.핫플러그/콜드플러그 중에 어떤 udev 속성을 사용할 수 있나요?
혼란은 다음 두 명령에서 비롯됩니다.
udevadm test /sys/class/net/wlx801f024ddc32
udevadm info --attribute-walk --path=/sys/class/net/wlx801f024ddc32
예를 들어, 둘 다 list SUBSYSTEM
udev-rules와 함께 작동하는 것으로 알고 있습니다. 그러나 전자에만 있고 DEVTYPE
(적어도 WLAN 장치의 경우) 후자에만 있습니다 KERNEL
.
실제로 부팅하는 동안 DEVTYPE(예: "wlan")이 필요하지만 규칙이 적용될 때는 사용할 수 없는 것 같습니다...
답변1
이것이 나의 이해이다:
udevadm info -a
:속성ATTRS{}
및 장치 계층 구조를 표시합니다.udevadm test
:ENV{}
udev 처리 중 변수를 표시합니다.
동일한 유형의 정보를 표시하지 않습니다. DEVTYPE 변수가 존재할 수 있으므로 테스트해야 합니다 ENV{DEVTYPE}=="wlan"
. 그러나 ENV{} 변수는 udev 처리 중에 점진적으로 생성된다는 점을 고려해야 합니다. 따라서 규칙의 순서가 중요합니다. 규칙은 ENV{DEVTYPE}
다른 규칙이 생성된 후에 나타나야 합니다.
다음 명령을 사용하여 "udev_actions.txt" 파일을 분석하여 사물의 순서를 추론할 수 있습니다. 그런 다음 테스트를 위해 ".rules" 파일에 가장 적합한 번호를 지정할 수 있습니다 ENV{DEVTYPE}
.
$ sudo udevadm test $DEVPATH 1> udev_ENV.txt 2> udev_actions.txt