Device hierarchy (디바이스 체계/구조)


리눅스 커널은 실제로 디바이스들을 트리 형태의 구조로 표현하고 이 정보들을 sysfs을 통해 나타내며 규칙을 작성할 때 매우 유용합니다. 예를 들어 내 하드 디스크 디바이스의 표현은 차례로 PCI 버스 디바이스의 직렬 ATA 컨트롤러 디바이스의 SCSI 디스크 디바이스의 자식 디바이스입니다. 위처럼 여러분은 문제의 디바이스의 부모로부터 정보를 확인해 볼 수 있습니다. 예를 들어 저의 하드디스크의 시리얼 번호는 디바이스 레벨에서는 확인할 수 없습니다. 하지만 부모 디바이스인 SCSI 디스크 레벨에서는 확인 할 수 있습니다.


지금까지 여러분들이 사용하려는 해당 디바이스와는 일치하지만 부모 디바이스의 속성 값과는 일치하지 않는 4개의 메인 match key(KERNEL/SUBSYSTEM/DRIVER/ATTR)들을 소개했습니다. udev는 디바이스 트리 구조에서 상위 레벨을 검색할 수 있는(parent) 다양한 match key를 제공합니다. (자세히 보시면 위의 match key와는 다른 key들입니다.)


  • KERNELS - 상위 디바이스 중 임의의 장치에 대한 커널 이름 또는 디바이스의 커널   

                        장치 이름 매치

  • SUBSYSTEMS - 해당 디바이스 또는 상위 디바이스의 임의의 서브시스템과 매치

  • DRIVERS - 디바이스를 지원하는 드라이버 이름 또는 상위 디바이스 중의 드라이버

                       이름과 매치

  • ATTRS - 디바이스의 sysfs 속성 또는 상위 디바이스 중 임의의 디바이스 sysfs   

                    속성과 매치


트리 형태의 디바이스 구조를 고려하면 규칙을 작성하는 것이 조금은 복잡하게 느껴질 수 있습니다. 여러분들을 도와줄 툴(Tool)들이 있으니 안심하시고 그 내용은 추후에 설명 드리겠습니다.