/ dev와 / sys / class의 차이점은 무엇입니까?


답변:


26

파일은 /devUDEV가 런타임에 작성하는 실제 장치 파일입니다. 디렉토리 /sys/class는 런타임에 커널에 의해 내 보내져를 통해 하드웨어의 계층 구조를 노출시킵니다 sysfs.

로부터 libudev과 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"
...

잘 이해하지 못했습니다. 확실히하기 위해 약간의 설명을 요구합니다. / dev 또는 / sys에 항목을 작성하여 외부 장치 (예 : i2c 또는 mipi를 통해)와 인터페이스하기로 결정했는지는 전적으로 개인 취향에 따라 결정됩니까? 그렇지 않다면 어떤 경우 / 왜 후자 대신 전자를 선택하겠습니까 (그리고 그 반대)?
LandonZeKepitelOfGreytBritn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.