Conocer un dispositivo de archivos especiales de números mayores y menores en Linux

StackOverflow https://stackoverflow.com/questions/1823743

  •  22-07-2019
  •  | 
  •  

Pregunta

Todos los archivos en / dev son archivos especiales ... representan dispositivos de la computadora. Se crearon con la syscall mknod . Mi pregunta es: ¿cómo puedo conocer al menor y ¿Qué números principales se utilizaron para crear este archivo especial?

¿Fue útil?

Solución

La lista se llama LANANA Linux Device List , y es administrada por Alan Cox.

Puede encontrar la última copia en línea ( enlace directo ), o en la fuente de Linux. Su nombre de archivo en el árbol de kernel es Documentation / devices.txt .

Para ver los números mayores y menores que crearon un nodo en / dev (o cualquier nodo de dispositivo), simplemente use ls con el - l opción:

22:26 jsmith@undertow% ls -l /dev/xvd?
brw-rw---- 1 root disk    202,   0 Nov  1 20:31 /dev/xvda
brw-rw---- 1 root disk    202,  16 Nov  1 20:31 /dev/xvdb
brw-rw---- 1 root disk    202,  32 Nov  1 20:31 /dev/xvdc

En este ejemplo, 202 es el número principal de los tres dispositivos, y 0 , 16 y 32 son menores de edad. El b a la izquierda indica que el nodo es un dispositivo de bloque. La alternativa es c , un dispositivo de caracteres:

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty

Otros consejos

$ ls -l /dev/fd0 /dev/null
brw-rw---- 1 root floppy 2, 0 Nov 22 19:48 /dev/fd0
crw-rw-rw- 1 root root   1, 3 Nov 22 19:48 /dev/null
$ stat -c '%n: %F, major %t minor %T' /dev/fd0 /dev/null
/dev/fd0: block special file, major 2 minor 0
/dev/null: character special file, major 1 minor 3

La mayoría de los números de dispositivo son fijos (es decir, / dev / null siempre serán dispositivos de caracteres 1: 3 ) pero en Linux, algunos se asignan dinámicamente.

$ cat /proc/devices
Character devices:
...
 10 misc
...

Block devices:
...
253 mdp
254 device-mapper
$ cat /proc/misc
...
 57 device-mapper
...

Por ejemplo, en este sistema, sucede que / dev / mapper / control será c: 10: 57 mientras que el resto de / dev / mapper / * será b: 254: * , y esto podría diferir de un ciclo de arranque a otro, o incluso cuando los módulos se cargan / descargan y los dispositivos se agregan / eliminan .

Puede explorar estos registros de dispositivos en / sys .

$ readlink /sys/dev/block/2:0
../../devices/platform/floppy.0/block/fd0
$ cat /sys/devices/platform/floppy.0/block/fd0/dev
2:0
$ readlink /sys/dev/char/1:3
../../devices/virtual/mem/null
$ cat /sys/devices/virtual/mem/null/dev
1:3

También puedes usar stat.

$ stat -c 'major: %t minor: %T' <file>

Especialmente para dispositivos de bloque:

$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda       8:0    0   90G  0 disk
├─sda1    8:1    0    4G  0 part [SWAP]
├─sda2    8:2    0    4G  0 part /

Alternativa que no depende de stat :

$ cat /sys/class/*/random/dev
1:8
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top