udev에서 사용할 수 없는 속성

udev에서 사용할 수 없는 속성

ATTRS{*}USB 장치에 대한 udev 규칙을 작성하려고 하는데 규칙의 속성을 일치시키는 데 문제가 있습니다. 를 사용하여 일부 디버깅을 수행한 후 udevadm info내 장치 중 어느 것도 속성을 표시하지 않는다는 것을 발견했습니다.

udevadm info -aLinux 서버에서 루트 볼륨을 실행 하면 다음과 같은 결과가 나타납니다.

  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줄이 있어야 하며 처음 두 줄은 관심 있는 줄입니다. NAMEHCTL. 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. 여기서 지정하는 경로는 드라이브 정보의 하위 집합에만 적용되는 것 같습니다.

관련 정보