/dev에 이름이 있다고 드라이버가 동작하는 것은 아닙니다
lsmod
cat /proc/devices
ls -l /dev/null
udevadm info --query=all --name=/dev/null| 위치 | 보여 주는 것 |
|---|---|
| lsmod | 현재 로드된 모듈입니다. 커널에 내장한 드라이버는 목록에 나오지 않습니다. |
| /proc/devices | 등록된 문자/블록 장치 major 번호와 이름입니다. 개별 장치의 정상 동작 목록은 아닙니다. |
| /dev의 특수 파일 | major/minor로 커널의 장치 기능을 연결하는 경로입니다. mknod는 드라이버 등록이 아닙니다. |
| sysfs의 driver 링크 | 장치와 바인딩된 드라이버를 찾는 데 사용합니다. |
lsmod의 사용 수를 사용자 프로세스가 open한 횟수와 항상 같다고 보지 않습니다. 다른 모듈의 참조나 드라이버의 수명 처리도 영향을 줍니다.
커널 이벤트와 사용자 공간의 처리를 구분합니다
udevadm monitor --kernel --udev --property장치 변화 때 커널 이벤트와 udev 처리 결과를 관찰합니다. devtmpfs가 노드를 만들고 udev가 권한·링크를 정리하는 구성도 있습니다. Android의 ueventd, BusyBox mdev, systemd-udevd는 서로 다른 사용자 공간 구현입니다. 특정 시스템의 코드를 모든 Linux의 유일한 절차로 설명하지 않습니다.
- 커널의 장치 등록버스와 장치 모델에 장치가 등록됩니다.
- 장치 노드와 이벤트devtmpfs 및 uevent 경로가 관여합니다.
- 사용자 공간 정책udev 같은 관리자가 권한과 심벌릭 링크 등을 적용합니다.
일반적인 구성의 역할을 나타냅니다. 모든 환경이 세 단계를 같은 프로그램이나 같은 시점에 수행하는 것은 아닙니다.
실행 중인 Device Tree를 읽습니다
dtc -I fs -O dts -o running.dts /sys/firmware/devicetree/baseDevice Tree로 부팅했고 해당 경로를 제공하는 시스템에서 사용할 수 있습니다. /proc/device-tree는 이 트리를 가리키는 링크로 제공되기도 합니다. 덤프한 DTS는 원본의 include, 주석, 라벨을 그대로 복원한 파일은 아닙니다. 부트로더가 수정한 최종 정보가 반영될 수 있습니다.
clocks 속성은 보통 provider의 phandle과 specifier를 담습니다. 바이트를 숫자로 출력했다고 바로 CPU 주파수가 되지는 않습니다. 해당 binding의 #clock-cells와 provider 정의를 함께 읽어야 합니다. 속성 값의 바이트 순서도 고려해야 하므로 od의 호스트 정수 해석만으로 의미를 단정하지 않습니다.
미디어 그래프는 연결 관계를 보여 줍니다
media-ctl -p -d /dev/media0
media-ctl --print-dot -d /dev/media0 > graph.dot
dot -Tsvg graph.dot -o graph.svg장치가 제공하는 entity, pad, link 관계를 확인하는 예입니다. 그래프의 선은 미디어 링크이며 데이터가 현재 흐른다는 측정 결과가 아닙니다. 스트리밍 상태와 포맷·링크 활성화는 별도로 확인합니다. v4l2-ctl의 지원 옵션과 대상 video/subdev 노드도 설치 버전에 맞춰 확인합니다.