장치 표현 /dev
과 장치 표현의 차이점은 무엇입니까 /sys/class
?
하나는 다른 것보다 선호됩니까? 하나는 제공하고 다른 하나는 제공하지 않는 것이 있습니까?
장치 표현 /dev
과 장치 표현의 차이점은 무엇입니까 /sys/class
?
하나는 다른 것보다 선호됩니까? 하나는 제공하고 다른 하나는 제공하지 않는 것이 있습니까?
답변:
파일은 /dev
UDEV가 런타임에 작성하는 실제 장치 파일입니다. 디렉토리 /sys/class
는 런타임에 커널에 의해 내 보내져를 통해 하드웨어의 계층 구조를 노출시킵니다 sysfs
.
발췌
유닉스 및 유닉스 계열 시스템에서 하드웨어 장치는 / dev 디렉토리에있는 특수 파일 (장치 파일 또는 노드라고도 함)을 통해 액세스됩니다. 이러한 파일은 일반 파일과 마찬가지로 읽고 쓸 수 있지만 디스크에서 데이터를 쓰고 읽는 대신 커널 드라이버와 직접 통신 한 다음 하드웨어와 통신합니다. / dev 파일을 자세히 설명하는 많은 온라인 리소스가 있습니다. 전통적으로 이러한 특수 파일은 설치시 mknod 명령을 사용하여 배포시 작성되었습니다. 최근 Linux 시스템은 udev를 사용하여 런타임에 이러한 / dev 파일을 관리하기 시작했습니다. 예를 들어, udev는 장치가 감지 될 때 노드를 생성하고 장치가 제거 될 때 노드를 삭제합니다 (런타임에 핫 플러그 장치 포함). 이 방법,
다른 발췌
Sysfs의 디렉토리에는 컴퓨터에 연결된 장치 계층이 포함됩니다. 예를 들어, 내 컴퓨터에서 hidraw0 장치는 다음 위치에 있습니다.
/sys/devices/pci0000:00/0000:00:12.2/usb1/1-5/1-5.4/1-5.4:1.0/0003:04D8:003F.0001/hidraw/hidraw0
경로에 따라 장치는 장치 1-5의 포트 번호 4에 연결된 장치의 구성 1 (: 1.0) 구성 (대략 끝에서 시작)에 연결되고 USB 컨트롤러 1 (usb1)에 연결되고 PCI 버스. 흥미롭지 만이 디렉토리 경로는 하드웨어가 실제로 컴퓨터에 어떻게 연결되어 있는지에 따라 다르기 때문에 그다지 좋지 않습니다.
다행히 Sysfs는 많은 PCI 및 USB 포트를 알 필요없이 장치에 쉽게 액세스 할 수 있도록 많은 심볼릭 링크를 제공합니다. / sys / class에는 각기 다른 장치 클래스에 대한 디렉토리가 있습니다.
일반적으로 규칙을 사용 /etc/udev/rules.d
하여 시스템을 보강하십시오. 다양한 하드웨어가있을 때 스크립트를 실행하도록 규칙을 구성 할 수 있습니다.
일단 시스템이 가동되면 /dev
또는 에 대해 작동하는 스크립트를 작성할 수 /sys
있으며 실제로 개인 취향에 /sys
따라 udevadm
달라 지지만 일반적 으로 다양한 시스템 리소스의 위치에 대해 UDEV를 쿼리 하는 것과 같은 도구를 사용 하려고 시도 합니다.
$ udevadm info -a -p $(udevadm info -q path -n /dev/sda) | head -15
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
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{ro}=="0"
ATTR{size}=="976773168"
ATTR{stat}==" 6951659 2950164 183733008 41904530 16928577 18806302 597365181 580435555 0 138442293 622621324"
ATTR{range}=="16"
...