예를 들어 /dev/sdb 장치가 있습니다. udev 하위 시스템을 어떻게 찾나요?
답변1
$ udevadm info -q all -a /dev/sdb
노트:위 코드는 UDEV 데이터베이스에 장치 정보를 쿼리하고 info
모든 정보를 쿼리하며 해당 장치 태그와 관련된 모든 속성을 반복합니다 -q all
./sys
발췌
--attribute-walk|-a
Print all sysfs properties of the specified device that can be used
in udev rules to match the specified device. It prints all devices
along the chain, up to the root of sysfs that can be used in udev
rules.
예
이것은 내 /dev/sda
장치입니다.
$ udevadm info -q all -a /dev/sda | grep parent
walks up the chain of parent devices. It prints for every device
and the attributes from one single parent device.
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
looking at parent device '/devices/pci0000:00/0000:00:1f.2':
looking at parent device '/devices/pci0000:00':
이 두 명령의 차이점
@sepero의 대답은 리프 노드의 UDEV 장치와 관련된 정보만 표시하는 것입니다.
세페로의 답변
$ udevadm info -q all -n /dev/sda > udevadm_info_1.txt
slm의 답변
/sys
내 대답은 장치의 전체 체인 계층 구조를 통과하면서 속성을 보여줍니다.
$ udevadm info -q all -a /dev/sda > udevadm_info_2.txt
둘 사이의 차이점을 볼 수 있습니다.
$ diff -y udevadm_info_1.txt udevadm_info_2.txt \
> udevadm_info_diff.txt
노트:버전 204를 사용하여 Fedora 19에서 실행 중입니다 udevadm
.
$ udevadm --version
204
답변2
udevadm info
그러한 정보를 제공합니다.
특별히 이 하위 시스템을 원하는 경우:
udevadm info -n /dev/sdb -q property | sed -n 's/SUBSYSTEM=//p'
udev 규칙을 작성할 때 가장 유용한 명령은 다음과 같습니다.
udevadm info -a -n /dev/sdb
그러면 udev 규칙에서 장치를 일치시키는 데 사용할 수 있는 규칙이 인쇄됩니다. 첫 번째 블록은 장치 자체와 관련되고, 후속 블록은 장치 트리의 상위 항목과 관련됩니다. 유일한 주의 사항은 다른 상위 항목에 해당하는 키를 혼합할 수 없다는 것입니다. 예를 들어, 이 발췌문을 보면
KERNEL=="sdb"
SUBSYSTEM=="block"
…
KERNELS=="5:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{model}=="Yoyodyne Diskinator"
…
KERNELS=="0000:00:1f.2"
SUBSYSTEMS=="pci"
DRIVERS=="ahci"
그런 다음 이 장치를 또는 와 SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator"
일치시킬 수 있지만 SUBSYSTEM=="block", SUBSYSTEMS=="pci", DRIVERS="ahci"
과는 일치하지 않을 수 있습니다 SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}="Yoyodyne Diskinator", DRIVERS="ahci"
.
규칙에 사용할 정보를 얻는 또 다른 방법은 다음과 같습니다.
udevadm info -q property -n /dev/sdb --export
그러면 udev 규칙에서 사용할 수 있는 형식으로 장치 속성 값이 인쇄됩니다.KEY=VALUE
ENV{KEY}=="VALUE"
기기에 항목이 없으면 /dev
아래 경로를 사용하여 참조할 수 있습니다 /sys
.
udevadm info -a -p /sys/block/sdb
(이 경우에는 유용한 예가 아닙니다. 카테고리가 일반적이지 않고 아직 항목이 없는 기기에 유용합니다 /dev
.)
udev 규칙을 변경하면 자동으로 읽혀지지만 나중에 시스템에 연결된 장치에만 적용됩니다. 연결된 장치에 새 규칙을 적용하려면 udevadm trigger
(앱을 특정 장치로 제한하는 옵션 포함)을 사용하세요.
답변3
$ udevadm info -q all -n /dev/sdb