¿Qué hacen realmente los archivos del dispositivo en / dev?

31

(No es un duplicado de Understanding / dev y sus subdirecciones y archivos )

Estaba navegando por mi sistema de archivos y por primera vez me tomé un segundo para analizar mi /devdirectorio. Me sorprendió la cantidad de archivos de dispositivos que contenía, y no pude entenderlos todos:

max@linux-vwzy:/dev> ls
adsp             disk      fd0u1760  initctl  mem                 root  sg0       tty    tty21  tty35  tty49  tty62    vboxdrv     vcsa2
audio            dri       fd0u1840  input    mixer               rtc   sg1       tty0   tty22  tty36  tty5   tty63    vboxnetctl  vcsa3
autofs           dsp       fd0u1920  kmem     mixer1              rtc0  sg2       tty1   tty23  tty37  tty50  tty7     vboxusb     vcsa4
block            dvd       fd0u360   kmsg     net                 scd0  sg3       tty10  tty24  tty38  tty51  tty8     vcs         vcsa5
bootsplash       dvdrw     fd0u720   log      network_latency     sda   sg4       tty11  tty25  tty39  tty52  tty9     vcs1        vcsa6
bsg              fb0       fd0u800   loop0    network_throughput  sda1  sg5       tty12  tty26  tty4   tty53  ttyS0    vcs10       vcsa7
btrfs-control    fd        fd0u820   loop1    null                sda2  sg6       tty13  tty27  tty40  tty54  ttyS1    vcs2        vga_arbiter
bus              fd0       fd0u830   loop2    nvram               sda3  sg7       tty14  tty28  tty41  tty55  ttyS2    vcs3        xconsole
cdrom            fd0u1040  full      loop3    oldmem              sdb   shm       tty15  tty29  tty42  tty56  ttyS3    vcs4        zero
cdrw             fd0u1120  fuse      loop4    port                sdc   snapshot  tty16  tty3   tty43  tty57  ttyS4    vcs5
char             fd0u1440  fw0       loop5    ppp                 sdc1  snd       tty17  tty30  tty44  tty58  ttyS5    vcs6
console          fd0u1600  hidraw0   loop6    psaux               sdd   sr0       tty18  tty31  tty45  tty59  ttyS6    vcs7
core             fd0u1680  hidraw1   loop7    ptmx                sde   stderr    tty19  tty32  tty46  tty6   ttyS7    vcsa
cpu              fd0u1722  hidraw2   mapper   pts                 sdf   stdin     tty2   tty33  tty47  tty60  uinput   vcsa1
cpu_dma_latency  fd0u1743  hpet      mcelog   random              sdg   stdout    tty20  tty34  tty48  tty61  urandom  vcsa10

Sé que los sd*'s son mis discos y sistemas de ficheros, pero ¿cuáles son loopx, fd0uxxxx, sgx, vcsxxxy todos los demás archivos individuales. La mayoría de ellos son archivos de dispositivo según ls.

Entiendo que responder completamente esta pregunta requeriría una tonelada de información, por lo que a menos que alguien pueda proporcionar un enlace con un resumen de los diferentes archivos de dispositivos devy para qué se utilizan, propongo que respondamos CW.

n0pe
fuente
Estoy tentado a decir: no quieres saber (no sobre todo esto). Sugiero reescribir su pregunta como: ¿Cuáles son los dispositivos /devque debo conocer? (Tal vez tenga respuestas para todos de todos modos, tal vez no ...)
Stéphane Gimenez
1
He cambiado el título, buena decisión. Sin embargo, si es posible, ME ENCANTARÍA saber lo que hicieron todos, o tener una forma de averiguarlo (¿leer el archivo del dispositivo? Si eso tiene sentido).
n0pe
No creo que sea útil enumerar los dispositivos uno por uno. Es probable que los futuros visitantes tengan una lista ligeramente diferente. Lea las documentaciones que he indicado en mi respuesta , y si aún no puede resolver algunas, haga una pregunta específica.
Gilles 'SO- deja de ser malvado'

Respuestas:

48

Algunos de estos tienen páginas de manual (en la sección 4 ; omita los dígitos finales y, en algunos casos, como sdala letra final).

Para obtener una respuesta más definitiva, pero generalmente menos fácil de leer, consulte la documentación del kernel . Primero determine si el dispositivo es un dispositivo de bloque o un dispositivo de caracteres , y su número mayor y menor. Por ejemplo

$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jul 12 15:54 /dev/sda

también lo sdaes un dispositivo de bloque ( b) con mayor: menor = 8: 0. Ahora búsquelo en devices.txt: 8 bloques son dispositivos de disco SCSI, que son la mayoría de los discos hoy en día (la mayoría de los discos IDE y SATA también se ven a través de la interfaz SCSI, aunque esto depende de las opciones de compilación del núcleo). El dispositivo de bloque 8: 1 ( /dev/sda1) es la primera partición de /dev/sda.

Puede haber algunos dispositivos extraños que no están documentados. Puede buscar en su sistema, por ejemplo /sys/dev/block/8:0: este es un enlace simbólico a un directorio en el /sysque se proporcionan diversos elementos de información sobre el dispositivo. Puede seguir más enlaces, y en particular (en este caso) lo /sys/dev/block/8:0/device/driverlleva a un directorio que corresponde con el controlador. Otra fuente de información es /proc/devices, que indica qué controlador reclama cada número de dispositivo principal.

La mayoría de los sistemas Linux usan udev para completar en /devfunción de los controladores y hardware disponibles. Puede examinar las reglas para crear archivos de dispositivo, generalmente en /lib/udev/rules.dy /etc/udev/rules.d(las ubicaciones exactas dependen de la distribución).

Algunos de los archivos no son dispositivos. lsof /dev/NAME(como root) le dirá a qué proceso los está utilizando y, por lo tanto, le dará una pista de para qué sirven. Para los directorios, mira los archivos en ellos.

Esta respuesta es específica de Linux, pero otras unidades siguen los mismos principios. Consulte las páginas de manual (en la sección 4 sobre la mayoría de las variantes, pero algunas usan la sección 7), u otra documentación del sistema o del núcleo. La información relevante es el bit de bloque / carácter y el mayor: números menores.

Gilles 'SO- deja de ser malvado'
fuente
Wow increíble, has detallado varios puntos de interés que estoy leyendo actualmente. Gracias por esto.
n0pe