Was machen die Gerätedateien in / dev eigentlich?

31

(Kein Duplikat von Understanding / dev und seinen Unterverzeichnissen und Dateien )

Ich habe mein Dateisystem durchsucht und zum ersten Mal eine Sekunde gebraucht, um mein /devVerzeichnis zu analysieren . Ich war von der Menge der darin enthaltenen Gerätedateien überrascht und konnte keinen Sinn daraus ziehen:

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

Ich weiß , dass die sd*‚s sind meine Platten und Dateisysteme, aber was ist loopx, fd0uxxxx, sgx, vcsxxxund alle andere einzelne Dateien. Die meisten von ihnen sind Gerätedateien nach ls.

Ich verstehe, dass eine vollständige Beantwortung dieser Frage eine Menge Informationen erfordern würde. Wenn also nicht jemand einen Link mit einem umfassenden Überblick über die verschiedenen Gerätedateien und deren Verwendungszweck bereitstellen kann dev, schlagen wir eine CW-Antwort vor.

n0pe
quelle
Ich bin versucht zu sagen: Du willst es nicht wissen (nicht über all das). Ich schlage vor, Ihre Frage wie folgt umzuschreiben: Was sind die Geräte in denen /devich wissen sollte? (Vielleicht haben Sie für alle Antworten, vielleicht auch nicht ...)
Stéphane Gimenez
1
Ich habe den Titel geändert, guter Ruf. Wenn möglich, würde ich jedoch LIEBEN, zu wissen, was sie alle getan haben, oder eine Möglichkeit zu finden (die Gerätedatei zu lesen? Wenn das Sinn macht).
Nr.
Ich halte es nicht für sinnvoll, die Geräte einzeln aufzulisten. Zukünftige Besucher haben wahrscheinlich eine etwas andere Liste. Lesen Sie die Dokumentationen, die ich in meiner Antwort angegeben habe , und stellen Sie eine bestimmte Frage, wenn Sie einige davon immer noch nicht herausfinden können.
Gilles 'SO- hör auf böse zu sein'

Antworten:

48

Einige von ihnen haben Manpages (in Abschnitt 4 ; lassen Sie die letzte (n) Ziffer (n) und in einigen Fällen sdaden letzten Buchstaben weg ).

Eine genauere, aber normalerweise weniger leicht zu lesende Antwort finden Sie in der Kernel-Dokumentation . Bestimmen Sie zunächst, ob es sich bei dem Gerät um ein Block- oder ein Zeichengerät handelt , sowie dessen Haupt- und Nebennummer. Beispielsweise

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

so sdaist ein block device ( b) mit major: minor = 8: 0. Sehen Sie jetzt nach devices.txt: 8 Block sind SCSI-Plattengeräte, die heutzutage die meisten Platten sind (die meisten IDE- und SATA-Platten werden auch über die SCSI-Schnittstelle angezeigt, obwohl dies von den Kernel-Kompilierungsoptionen abhängt). Block Device 8: 1 ( /dev/sda1) ist die erste Partition von /dev/sda.

Möglicherweise gibt es einige ungerade Geräte, die nicht dokumentiert sind. Sie können auf Ihrem System beispielsweise nachsehen, ob /sys/dev/block/8:0dies ein symbolischer Link zu einem Verzeichnis ist, in /sysdem verschiedene Informationen zum Gerät verfügbar sind . Sie können weiteren Links folgen und werden (in diesem Fall) /sys/dev/block/8:0/device/driverin ein Verzeichnis geleitet, das dem Treiber entspricht. Eine weitere Informationsquelle ist /proc/devices, die angibt, welcher Treiber die wichtigsten Gerätenummern angibt.

Die meisten Linux-Systeme verwenden udev , um /devbasierend auf den verfügbaren Treibern und der verfügbaren Hardware Daten zu erfassen. Sie können die Regeln durchsuchen, um Gerätedateien zu erstellen, normalerweise in /lib/udev/rules.dund /etc/udev/rules.d(die genauen Speicherorte hängen von der Verteilung ab).

Einige der Dateien sind keine Geräte. lsof /dev/NAME(als root) teilt Ihnen mit, für welchen Prozess sie verwendet werden, und gibt Ihnen somit einen Hinweis darauf, wofür sie bestimmt sind. Schauen Sie sich für die Verzeichnisse die Dateien in ihnen an.

Diese Antwort ist spezifisch für Linux, aber andere Unices folgen den gleichen Grundsätzen. Überprüfen Sie die Manpages (in Abschnitt 4 bei den meisten Varianten, aber einige verwenden Abschnitt 7) oder eine andere System- oder Kerneldokumentation. Die relevante Information ist das Block- / Zeichenbit und die Major: Minor-Zahlen.

Gilles 'SO - hör auf böse zu sein'
quelle
Wow erstaunlich, Sie haben einige interessante Punkte aufgeführt, die ich gerade lese. Danke dafür.
Nr.