ATTRS{*}
USB 장치에 대한 udev 규칙을 작성하려고 하는데 규칙의 속성을 일치시키는 데 문제가 있습니다. 를 사용하여 일부 디버깅을 수행한 후 udevadm info
내 장치 중 어느 것도 속성을 표시하지 않는다는 것을 발견했습니다.
udevadm info -a
Linux 서버에서 루트 볼륨을 실행 하면 다음과 같은 결과가 나타납니다.
looking at device '/devices/vbd-768/block/xvda':
KERNEL=="xvda"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="83886080"
ATTR{stat}==" 717683 43803 15924796 381200 8002096 5757360 169243664 6994333 0 635530 7372343"
ATTR{range}=="16"
ATTR{discard_alignment}=="0"
ATTR{ext_range}=="16"
ATTR{alignment_offset}=="0"
ATTR{inflight}==" 0 0"
ATTR{removable}=="0"
ATTR{capability}=="10"
그러나 노트북에서 실행하면 다음과 같은 결과가 나타납니다.
looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
KERNEL=="sda"
SUBSYSTEM=="block"
DRIVER==""
이는 모든 장치에서 발생할 수 있습니다. ATTR{*}
시스템의 모든 장치에 대한 변수를 가져올 수 없는 것 같습니다 . 이 문제의 원인은 무엇입니까?
참고: 저는 이 기사 현재 최신 커널인 Arch Linux를 실행하고 있습니다.
답변1
당신이 보고 있는 정확한 항목을 알고 싶습니다 udevadm
.
/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
랩톱에서 액세스하는 것은 /devices/vbd-768/block/xvda
서버에서 액세스하는 것과 매우 다릅니다.
디스크에 관심이 있으시면 버스 ID로 찾아보시는 것을 추천드립니다.
를 사용하여 디스크의 버스 ID를 찾을 수 있습니다 lsblk -S
. 7줄이 있어야 하며 처음 두 줄은 관심 있는 줄입니다. NAME
및 HCTL
. NAME
는 드라이브 이름(예: sda
)을 나타내고, HCTL
버스 ID(예: 2:0:0:0
)를 나타냅니다.
이제 조회 시 이 버스 ID가 사용됩니다.udevadm
udevadm info --path=/sys/bus/scsi/devices/[bus ID] -a
이렇게 하면 출력 그룹 중 하나가 귀하와 유사한 것에 /devices/vbd-768/block/xvda
도 적용됩니다 ATTRS
. 여기서 지정하는 경로는 드라이브 정보의 하위 집합에만 적용되는 것 같습니다.