file /dev/*
여러 파일의 설명을 "Block Special (M/N)" 및 "Character Special (M/N)"로 인쇄합니다. 여기서 M과 N은 숫자입니다. 예를 들어:
$ file /dev/null
/dev/null: character special (1/3)
man file
이는 문서화되지 않은 것 같지만 모호하게 참조되어 있으며 man stat
이를 기본 장치 유형과 보조 장치 유형으로 지칭하는 것으로 보입니다. apropos 'device type'
아무것도 발견되지 않았습니다. 그렇다면 이 숫자는 무엇을 의미하는가?
답변1
Unix의 장치에는 유형(예: 문자 또는 블록), 주 번호(일반적으로 드라이버) 및 부 번호(일반적으로 인스턴스)가 있습니다.
예를 들면 다음과 같습니다.
% ls -l /dev/vda
brw-rw---- 1 root disk 253, 0 Feb 3 09:09 /dev/vda
이것은 블록 장치, 기본 장치 253, 보조 장치 0입니다.
살펴보면 /proc/devices
다음과 같이 끝나는 것을 알 수 있습니다.
Block devices:
2 fd
259 blkext
9 md
253 virtblk
254 mdp
따라서 253이 "virtblk"임을 알 수 있습니다. 이것은 가상 디스크가 있는 가상 머신이기 때문에 의미가 있습니다!
이 드라이버의 경우 부 장치 번호는 장치 내의 블록 장치 및 파티션을 나타냅니다.
% ls -l /dev/vd*
brw-rw---- 1 root disk 253, 0 Feb 3 09:09 /dev/vda
brw-rw---- 1 root disk 253, 1 Feb 3 09:09 /dev/vda1
brw-rw---- 1 root disk 253, 2 Feb 3 09:09 /dev/vda2
brw-rw---- 1 root disk 253, 3 Feb 3 09:09 /dev/vda3
brw-rw---- 1 root disk 253, 16 Feb 3 09:09 /dev/vdb
brw-rw---- 1 root disk 253, 32 Feb 3 09:09 /dev/vdc
brw-rw---- 1 root disk 253, 33 Feb 3 09:09 /dev/vdc1
"실제" 하드웨어와 관련되지 않은 특수 드라이버가 있습니다. 예를 들어
% ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Feb 3 09:09 /dev/null
캐릭터 장치, 메이저 1, 마이너 3 입니다. /proc/devices
드라이버 1에 대해 알려주세요.
1 mem
이 "mem" 드라이버가 다른 장치도 처리하는 것을 볼 수 있습니다.
% ls -l /dev | grep ' 1, '
crw-rw-rw- 1 root root 1, 7 Feb 3 09:09 full
crw-r--r-- 1 root root 1, 11 Feb 3 09:09 kmsg
crw-r----- 1 root kmem 1, 1 Feb 3 09:09 mem
crw-rw-rw- 1 root root 1, 3 Feb 3 09:09 null
crw------- 1 root root 1, 12 Feb 3 09:09 oldmem
crw-r----- 1 root kmem 1, 4 Feb 3 09:09 port
crw-rw-rw- 1 root root 1, 8 Feb 3 09:09 random
crw-rw-rw- 1 root root 1, 9 Feb 3 09:09 urandom
crw-rw-rw- 1 root root 1, 5 Feb 3 09:09 zero
답변2
각 장치 노드의 유형(블록 또는 문자)과 번호(주 및 부 번호라고 함)는 커널의 식별자로 사용됩니다.
Linux에서는 장치의 표준 목록과 해당 기능에 대한 간략한 설명이 유지됩니다.커널에서. 여기에서 일반적으로 드라이버를 식별하는 주요 번호(예를 들어TTY 장치 드라이버) 및 부 번호는 드라이버가 관리하는 장치를 식별합니다.