Cosa fanno effettivamente i file del dispositivo in / dev?


31

(Non un duplicato di Understanding / dev e dei suoi sottodirectory e file )

Stavo navigando nel mio filesystem e per la prima volta ho impiegato un secondo per analizzare la mia /devdirectory. Sono rimasto sorpreso dalla quantità di file di dispositivi in ​​esso contenuti e non sono riuscito a dare un senso a tutti loro:

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

So che i sd*'s sono i miei dischi e file system, ma quali sono loopx, fd0uxxxx, sgx, vcsxxxe tutti gli altri singoli file. La maggior parte di questi sono file di dispositivi secondo ls.

Comprendo che rispondere a questa domanda richiederebbe moltissime informazioni, quindi a meno che qualcuno non sia in grado di fornire un collegamento con una panoramica completa dei diversi file di dispositivi in devcui sono utilizzati, propongo di fornire una risposta in CW.


Sono tentato di dire: non vuoi sapere (non di tutto questo). Suggerisco di riscrivere la tua domanda come: Quali sono quei dispositivi /devche dovrei sapere? (Forse avrai comunque delle risposte per tutti loro, forse no ...)
Stéphane Gimenez,

1
Ho cambiato il titolo, buona chiamata. Tuttavia, se possibile, mi piacerebbe sapere cosa hanno fatto tutti, o avere un modo per scoprirlo (leggere il file del dispositivo? Se questo ha senso).
n0pe

Non penso che sarebbe utile elencare i dispositivi uno per uno. I futuri visitatori avranno probabilmente un elenco leggermente diverso. Leggi le documentazioni che ho indicato nella mia risposta e, se ancora non riesci a capirne alcune, fai una domanda specifica.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


48

Alcuni di questi hanno pagine man (nella sezione 4 ; tralasciamo le cifre finali e in alcuni casi come sdala lettera finale).

Per una risposta più definitiva, ma di solito meno facile da leggere, consultare la documentazione del kernel . Innanzitutto determinare se il dispositivo è un dispositivo a blocchi o un dispositivo a caratteri e il suo numero maggiore e minore. Per esempio

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

così sdaè un dispositivo a blocchi ( b) con major: minor = 8: 0. Ora cercalo in devices.txt: 8 blocchi sono i dispositivi a disco SCSI, che sono la maggior parte dei dischi al giorno d'oggi (la maggior parte dei dischi IDE e SATA sono visti anche attraverso l'interfaccia SCSI, anche se questo dipende dalle opzioni di compilazione del kernel). Block device 8: 1 ( /dev/sda1) è la prima partizione di /dev/sda.

Potrebbero esserci alcuni dispositivi dispari che non sono documentati. Puoi guardare ad esempio il tuo sistema /sys/dev/block/8:0: questo è un collegamento simbolico a una directory /sysche fornisce varie informazioni sul dispositivo. È possibile seguire più collegamenti e in particolare (in questo caso) si /sys/dev/block/8:0/device/driverarriva a una directory che corrisponde al driver. Un'altra fonte di informazioni è /proc/devices, che indica quale driver richiede ogni numero di dispositivo principale.

La maggior parte dei sistemi Linux utilizza udev per popolare in /devbase ai driver e all'hardware disponibili. È possibile sfogliare le regole per creare file di dispositivo, in genere in /lib/udev/rules.de /etc/udev/rules.d(le posizioni esatte dipendono dalla distribuzione).

Alcuni file non sono dispositivi. lsof /dev/NAME(come root) ti dirà a quale processo li sta usando e quindi ti darà un suggerimento a cosa servono. Per le directory, guarda i file in esse contenuti.

Questa risposta è specifica per Linux, ma altri unice seguono gli stessi principi. Controlla le pagine man (nella sezione 4 sulla maggior parte delle varianti, ma alcune usano la sezione 7), o altra documentazione del sistema o del kernel. Le informazioni rilevanti sono il bit blocco / carattere e il maggiore: numeri minori.


Caspita, hai dettagliato diversi punti di interesse che sto leggendo. Grazie per questo.
n0pe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.