Que font réellement les fichiers de périphérique dans / dev?

31

(Pas un double de Understanding / dev et de ses sous-répertoires et fichiers )

Je parcourais mon système de fichiers et pour la première fois j'ai pris une seconde pour analyser mon /devrépertoire. J'ai été surpris par la quantité de fichiers d'appareils qu'il contenait et je ne pouvais pas donner un sens à tous:

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

Je sais que les sd*« s sont mes disques et systèmes de fichiers, mais ce sont loopx, fd0uxxxx, sgx, vcsxxxet tous les autres fichiers individuels. La plupart d'entre eux sont des fichiers de périphérique selon ls.

Je comprends que répondre pleinement à cette question nécessiterait une tonne d'informations, donc à moins que quelqu'un ne puisse fournir un lien avec un grand aperçu des différents fichiers de périphériques devet à quoi ils sont tous utilisés, je propose de faire une réponse CW.

n0pe
la source
Je suis tenté de dire: tu ne veux pas savoir (pas tout ça). Je suggère de réécrire votre question comme suit: Quels sont les appareils que /devje devrais connaître? (Peut-être que vous aurez des réponses pour tous de toute façon, peut-être pas…)
Stéphane Gimenez
1
J'ai changé de titre, bon appel. Cependant, si possible, j'AIMERAIS savoir ce qu'ils ont tous fait, ou avoir un moyen de le savoir (lire le fichier de l'appareil? Si cela a du sens).
n0pe
Je ne pense pas qu'il serait utile de répertorier les appareils un par un. Les futurs visiteurs auront probablement une liste légèrement différente. Lisez les documentations que j'ai indiquées dans ma réponse , et si vous ne parvenez toujours pas à en comprendre certaines, posez une question spécifique.
Gilles 'SO- arrête d'être méchant'

Réponses:

48

Certains d'entre eux ont des pages de manuel (dans la section 4 ; omettez le (s) dernier (s) chiffre (s) et dans quelques cas comme sdala lettre finale).

Pour une réponse plus définitive, mais généralement moins facile à lire, consultez la documentation du noyau . Déterminez d'abord si le périphérique est un périphérique de bloc ou un périphérique de caractères , ainsi que son numéro majeur et mineur. Par exemple

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

il en sdava de même pour un périphérique bloc ( b) avec major: minor = 8: 0. Maintenant, recherchez-le dans devices.txt: le bloc 8 correspond aux périphériques de disque SCSI, qui sont la plupart des disques de nos jours (la plupart des disques IDE et SATA sont également visibles via l'interface SCSI, bien que cela dépende des options de compilation du noyau). Le périphérique de bloc 8: 1 ( /dev/sda1) est la première partition de /dev/sda.

Il peut y avoir quelques appareils bizarres qui ne sont pas documentés. Vous pouvez regarder sur votre système par exemple /sys/dev/block/8:0: il s'agit d'un lien symbolique vers un répertoire sous /sysqui fournit diverses informations sur l'appareil. Vous pouvez suivre plus de liens, et en particulier (dans ce cas) /sys/dev/block/8:0/device/drivervous atterrir dans un répertoire qui correspond au pilote. Une autre source d'informations est /proc/devices, qui indique quel pilote réclame chaque numéro de périphérique majeur.

La plupart des systèmes Linux utilisent udev pour remplir en /devfonction des pilotes et du matériel disponibles. Vous pouvez parcourir les règles pour créer des fichiers de périphérique, généralement dans /lib/udev/rules.det /etc/udev/rules.d(les emplacements exacts dépendent de la distribution).

Certains fichiers ne sont pas des appareils. lsof /dev/NAME(en tant que root) vous indiquera à quel processus les utilise et vous donnera ainsi une indication de leur utilisation. Pour les répertoires, regardez les fichiers qu'ils contiennent.

Cette réponse est spécifique à Linux, mais d'autres unités suivent les mêmes principes. Consultez les pages de manuel (dans la section 4 sur la plupart des variantes, mais quelques-unes utilisent la section 7), ou toute autre documentation du système ou du noyau. Les informations pertinentes sont le bit de bloc / caractère et le majeur: les nombres mineurs.

Gilles, arrête de faire le mal
la source
Wow incroyable, vous avez détaillé plusieurs points d'intérêt que je lis actuellement. Merci pour cela.
n0pe