Apa yang sebenarnya dilakukan oleh file perangkat di / dev?

31

(Bukan duplikat Pengertian / dev dan subdir serta file-nya )

Saya sedang menjelajahi sistem file saya dan untuk pertama kalinya saya mengambil waktu sebentar untuk menganalisis /devdirektori saya . Saya terkejut dengan jumlah file perangkat di dalamnya, dan tidak bisa memahami semuanya:

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

Saya tahu bahwa sd*'s adalah disk dan filesystem saya, tapi apa yang loopx, fd0uxxxx, sgx, vcsxxxdan semua file tunggal lainnya. Kebanyakan dari mereka adalah file perangkat menurut ls.

Saya mengerti bahwa menjawab pertanyaan ini sepenuhnya akan membutuhkan banyak informasi, jadi kecuali seseorang dapat memberikan tautan dengan ikhtisar yang bagus tentang file-file perangkat yang berbeda di dalamnya devdan untuk apa mereka semua digunakan, saya mengusulkan agar kami membuat jawaban CW.

n0pe
sumber
Saya tergoda untuk mengatakan: Anda tidak ingin tahu (bukan tentang semua ini). Saya sarankan menulis ulang pertanyaan Anda sebagai: Perangkat apa saja yang /devharus saya ketahui? (Mungkin Anda akan memiliki jawaban untuk semuanya, mungkin tidak ...)
Stéphane Gimenez
1
Saya telah mengubah judul, panggilan bagus. Namun, jika mungkin saya ingin MENCINTAI untuk mengetahui apa yang mereka semua lakukan, atau memiliki cara untuk mengetahuinya (membaca file perangkat? Jika itu masuk akal).
n0pe
Saya tidak berpikir akan bermanfaat untuk mendaftar perangkat satu per satu. Pengunjung masa depan cenderung memiliki daftar yang sedikit berbeda. Baca dokumentasi yang saya tunjukkan dalam jawaban saya , dan jika Anda masih belum bisa menemukannya, tanyakan pertanyaan spesifik.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

48

Beberapa di antaranya memiliki halaman manual (di bagian 4 ; biarkan digit terakhir dan dalam beberapa kasus seperti sdahuruf terakhir).

Untuk jawaban yang lebih pasti, tetapi biasanya kurang mudah dibaca, lihat di dokumentasi kernel . Pertama-tama tentukan apakah perangkat tersebut adalah perangkat blok atau perangkat karakter , dan nomor mayor dan minornya. Sebagai contoh

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

begitu sdajuga perangkat blok ( b) dengan mayor: minor = 8: 0. Sekarang lihat di devices.txt: blok 8 adalah perangkat disk SCSI, yang merupakan sebagian besar disk saat ini (sebagian besar disk IDE dan SATA terlihat melalui antarmuka SCSI, meskipun ini tergantung pada opsi kompilasi kernel). Perangkat blok 8: 1 ( /dev/sda1) adalah partisi pertama dari /dev/sda.

Mungkin ada beberapa perangkat aneh yang tidak didokumentasikan. Anda dapat melihat pada sistem Anda di mis /sys/dev/block/8:0: ini adalah tautan simbolik ke direktori di bawah /sysyang menyediakan berbagai informasi tentang perangkat. Anda dapat mengikuti lebih banyak tautan, dan khususnya (dalam hal ini) /sys/dev/block/8:0/device/drivermendarat Anda ke direktori yang sesuai dengan driver. Sumber informasi lainnya adalah /proc/devices, yang menunjukkan driver apa yang mengklaim setiap nomor perangkat utama.

Sebagian besar sistem Linux menggunakan udev untuk mengisi /devberdasarkan driver dan perangkat keras yang tersedia. Anda dapat menelusuri aturan untuk membuat file perangkat, biasanya di /lib/udev/rules.ddan /etc/udev/rules.d(lokasi yang tepat tergantung pada distribusi).

Beberapa file bukan perangkat. lsof /dev/NAME(sebagai root) akan memberi tahu Anda untuk proses apa yang menggunakan mereka dan dengan demikian memberi Anda petunjuk apa gunanya. Untuk direktori, lihat file di dalamnya.

Jawaban ini khusus untuk Linux, tetapi kesatuan lainnya mengikuti prinsip yang sama. Periksa halaman manual (di bagian 4 pada sebagian besar varian, tetapi beberapa gunakan bagian 7), atau dokumentasi sistem atau kernel lainnya. Informasi yang relevan adalah bit blok / karakter dan utama: angka minor.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Wow luar biasa, Anda telah merinci beberapa tempat menarik yang sedang saya baca. Terima kasih untuk ini.
n0pe