Conocer un dispositivo de archivos especiales de números mayores y menores en Linux
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?
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