The sysfs tree


sysfs로부터 우리가 관심있는 정보를 사용하기 위한 방법은 위에서 간단히 다루었습니다. 위에서 다루었던 내용을 기반으로 규칙을 작성하기 위해서 attributes(속성)의 이름과 그들의 현재 value(값/정보)들에 대해 알아야 합니다.


sysfs는 매우 단순한 구조입니다. 논리적인 디렉토리 형태로 나뉘어져 있죠. 각 디렉토리는 하나의 정보를 포함하는 수많은 파일(속성)들을 포함합니다. 몇몇 심볼릭 링크들은 부모에 디바이스를 연결합니다.


일부 디렉토리는 최상위 디바이스 경로들입니다. 이 디렉토리들은 디바이스 노드들에 해당하는 실제 디바이스들을 나타냅니다. 최상위 디바이스 경로들은 dev 파일을 포함하고 있는 sysfs 디렉토리들로 구분됩니다. 그 목록들을 확인 하려면 아래 명령어를 실행하시면 됩니다.


# find /sys -name dev



예를 들어, 나의 시스템에서 /sys/block/sda 디렉토리는 나의 하드디스크에 대한 디바이스 경로입니다. 이것은 부모 디바이스인 SCSI 디스크 디바이스와 심볼릭 링크인 /sys/block/sda/device로 연결되어있습니다.


여러분이 sysfs 정보를 기반으로 규칙을 작성할 때, 단순하게 체인(트리구조에서 연결된 형태)의 한 부분의 어느 파일들의 속성 내용들과 매치만 하면 된다. 그 말인 즉 디바이스 정보 파일 내의 디바이스의 속성을 맞춰 규칙을 작성하면 됩니다. 예를 들어 내 하드디스크의 사이즈를 알고 싶다면 아래와 같이 명령어를 치면 됩니다. (체인이란 말이 디바이스에 연결된 정보들의 파일들을 의미하는 것 같습니다. 이해가 안되시면 원문을 참고해 보세요.)


# cat /sys/block/sda/size

234441648

</td></tr></tbody></table></div>



udev 규칙에서 디스크 사이즈인 “234441648”을 확인하기 위해 ATTR{size}를 사용할 수 있습니다. udev는 전체 디바이스 체인을 통해 반복하며 또 다른 체인 부분의 속성들을 ATTR 속성을 사용하여 매치 할 수 있습니다.(ex. /sys/class/block/sda/device/의 속성들)

그러나 이 후에 설명할 다른 체인 부분을 다룰 때 여러분들이 따라야 할 몇 개의 특정 절차가 있습니다.


비록 이것이 sysfs의 구조의 유용한 안내서 역할을 하고 정확히 udev가 값들을 매치 하더라도 sysfs를 통해 수동적으로 확인하는 것은 시간 소모가 크고 불필요한 일이 될 것입니다.