Rule writing


Rule files and semantics


시스템에 장치가 연결되어서 추가적인 동작을 수행하거나 이름을 어떻게 정해야 할지 결정해야 할 때, udev는 규칙 파일을 읽어 들여 실행합니다. 이 파일들은 /etc/udev/rules.d 디렉토리 아래 저장되어 있으며 해당 파일들은 모두 .rules 이란 접미사가 붙어있습니다.



위 사진처럼 /etc/udev/rules.d 디렉토리 아래 접미사 .rules이 붙은 파일들이 존재함을 알 수 있습니다. 위 파일들은 라즈베리 파이에 포팅된 OS인 라즈비안에서 확인하였습니다.


/etc/udev/rules.d/ 디렉토리 내의 파일, 즉 규칙 파일들을 어휘 순대로 실행됩니다. 이러한 실행순서는 어떤 환경에서는 매우 중요합니다. 일반적으로 여러분들은 리눅스 커널에서 제공하는 기본 udev 규칙보다 여러분이 작성 규칙이 먼저 실행되길 바랄 것입니다. 그런 경우에 파일 이름의 어휘 순대로 실행하기에 아래 예시와 같이 규칙 파일명을 생성하고 규칙을 해당 파일에 작성하는 것이 좋습니다.


/etc/udev/rules.d/10-local.rules


.rules파일 안에서 '#'로 시작하는 라인은 주석으로 취급되며 그 외 모든 라인은 규칙으로 판단됩니다. 여기서 한 가지 주의 할 것은 하나의 파일 내의 여러 규칙을 작성할 수 있으나 하나의 규칙은 무조건 한 라인에 작성해야 한다는 것입니다. 규칙이 길다고 개행(줄 바꿈)을 하는 것이 아니라 쭉 연결해서 작성해야만 하나의 규칙으로 시스템이 인식하고 실행할 것 입니다.


여기서 한 가지 의문점이 있을 수 있는데요, 만약 하나의 장치에 여러 규칙이 동시에 적용 된다면 어떻게 될까요? 가장 처음 적용되는 규칙만 실행하고 끝이 날까요?? udev의 장점 중 하나는 하나 이상의 rule들이 하나의 디바이스에 모두 적용될 수 있다는 것입니다. 이것은 udev의 매우 큰 장점 중의 하나입니다! 각 디바이스들은 각각 다른 이름들로 파일들이 생성이 될 것 입니다. 이 말인 즉 udev는 디바이스와 규칙이 중간에 매칭되더라도 거기서 해당 작업이 종료하지 않고 끝까지 규칙들을 매칭해 나간다는 것을 의미합니다. 그렇기에 모든 규칙에 대해 여러 개 적용되는 디바이스는 그에 맞게 여러 규칙이 적용됨을 알 수 있습니다.