Що насправді роблять файли пристроїв у / dev?


31

(Не дублікат розуміння / dev та його підкаталів та файлів )

Я переглянув свою файлову систему і вперше проаналізував свою /dev каталогу. Мене здивувало кількість файлів пристроїв у ньому, і я не міг зрозуміти їх усіх:

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

Я знаю , що sd*«s мої диски і файлові системи, але що loopx, fd0uxxxx, sgx,vcsxxx і всі інші окремі файли. Більшість з них є файлами пристроїв відповідно до ls.

Я розумію, що для повного відповіді на це запитання потрібно багато інформації, тому, якщо хтось не зможе надати посилання з великим проходом файлів різних пристроїв devі для чого вони використовуються, я пропоную зробити відповідь CW.


Мені спокуса сказати: ти не хочеш знати (не про все це). Я пропоную переписати ваше запитання так: Про які пристрої /devя повинен знати? (Можливо, у вас все одно будуть відповіді, а може, і ні.)
Stéphane Gimenez

1
Я змінив назву, хороший дзвінок. Однак, якщо це можливо, я хотів би знати, що вони все робили, або матиму змогу дізнатися (читання файлу пристрою? Якщо це має сенс).
n0pe

Я не думаю, що було б корисно перераховувати пристрої один за одним. Майбутні відвідувачі, ймовірно, мають дещо інший список. Прочитайте документацію, яку я вказав у своїй відповіді , і якщо ви все ще не можете з'ясувати деякі з них, задайте конкретне запитання.
Жил 'SO- перестань бути злим'

Відповіді:


48

Деякі з них містять підручні сторінки (у розділі 4 ; залиште остаточну цифру та у кількох випадках, наприклад, sdaзаключну букву).

Для більш чіткої, але зазвичай менш легкої для читання відповіді, подивіться в документацію на ядро . Спочатку визначте, чи пристрій блоковий пристрій чи символьний пристрій , а також його основну та незначну кількість. Наприклад

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

так sdaце блок пристрою ( b) з основним: мінор = 8: 0. Тепер погляньте на це devices.txt: 8 блок - це дискові пристрої SCSI, які є більшістю дисків на сьогоднішній день (більшість дисків IDE і SATA також переглядаються через інтерфейс SCSI, хоча це залежить від параметрів компіляції ядра). Блок пристрою 8: 1 (/dev/sda1 ) є першим розділом /dev/sda.

Можливо, є декілька пристроїв, які не мають документального підтвердження. Ви можете подивитися у своїй системі, наприклад /sys/dev/block/8:0: це символічне посилання на каталог, /sysщо надає різні відомості про пристрій. Ви можете перейти до більше посилань, і, зокрема, (у цьому випадку) /sys/dev/block/8:0/device/driverви перейдете до каталогу, який відповідає драйверу. Ще одне джерело інформації /proc/devices, яке вказує на те, який драйвер вимагає кожного основного номера пристрою.

Більшість систем Linux використовують udev для заповнення /devна основі наявних драйверів та апаратних засобів. Ви можете переглядати правила для створення файлів пристроїв, як правило, у /lib/udev/rules.dта /etc/udev/rules.d(точні місця залежать від розповсюдження).

Кілька файлів не є пристроями. lsof /dev/NAME(як корінь) підкаже, для якого процесу використовується їх, і, таким чином, підкаже, для чого вони призначені. Для каталогів подивіться файли в них.

Ця відповідь характерна для Linux, але інші унії відповідають тим же принципам. Перевірте основні сторінки (у більшості варіантів у розділі 4, але деякі використовують розділ 7) або іншу документацію на систему чи ядро. Відповідна інформація - це блок / символьний біт та основна: незначні числа.


Нічого дивовижного, ви детально описали кілька цікавих місць, які я зараз читаю. Дякую за це
n0pe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.