udevadm 규칙은 'udevadm 테스트'에는 적용되지만 'udevadm 트리거'에는 적용되지 않습니다.

udevadm 규칙은 'udevadm 테스트'에는 적용되지만 'udevadm 트리거'에는 적용되지 않습니다.

특정 장치의 tty 포트 이름을 지정하는 "99-usb.rules"라는 간단한 규칙을 만들었습니다.

KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", NAME="mydevice"

이 규칙은 다음을 사용하여 udevadm 테스트를 실행할 때 제대로 작동합니다.

udevadm test $(udevadm info -q path -n /dev/ttyACM0)

이 명령을 실행하면 "/dev/mydevice"가 나타나고 "mydevice"를 통해 USB 장치와 통신할 수 있습니다. 문제는 테스트 환경 외부에서 이 규칙을 실행할 수 없다는 것입니다. "udevadm control -R" 및 "udevadm Trigger"를 시도했을 뿐만 아니라 장치 연결을 끊었다가 다시 연결하고 시스템을 다시 시작했습니다. "udevadm 트리거"가 실패하는 이유에 대한 아이디어가 있습니까? 저는 OpenWrt Barrier Breaker 14.07 운영 체제에서 udev 버전 173을 사용하고 있습니다.

답변1

내 Linux 시스템에도 비슷한 문제가 있습니다. 나는 궁극적으로 이 NAME옵션이 네트워크 인터페이스에서만 작동하기 때문에 성능이 비참할 정도로 부족하다는 것을 알았습니다. 디스크 드라이브, TTY 및 커널에서 관리하는 기타 항목에는 영향을 미치지 않습니다. 대신 SYMLINK+=...장치에 대한 심볼릭 링크를 만들어야 합니다 . 내 생각에는 그것이 당신의 목적에 더 잘 맞는 것 같아요.

답변2

EC2 NVME EBS 볼륨을 Ubuntu의 udev에 표시하려면 amazon-ec2-utilsAWS가 패키지에서 제공하는 규칙을 확인하세요 /lib/udev/rules.d/70-ec2-nvme-devices.rules.

# ebs nvme devices
ACTION=="add", KERNEL=="nvme[0-9]*n[0-9]*",        ENV{DEVTYPE}=="disk",      ATTRS{model}=="Amazon Elastic Block Store", PROGRAM="/sbin/ebsnvme-id -u /dev/%k", SYMLINK+="%c"
ACTION=="add", KERNEL=="nvme[0-9]*n[0-9]*p[0-9]*", ENV{DEVTYPE}=="partition", ATTRS{model}=="Amazon Elastic Block Store", PROGRAM="/sbin/ebsnvme-id -u /dev/%k", SYMLINK+="%c%n"

위에서 언급한 것처럼 ACTION==add기본 트리거 동작( change)에는 이 내용이 포함되어 있지 않습니다. 대신 다음과 같이 트리거하십시오.

udevadm trigger \
  --action add \
  --settle

관련 정보