Các tập tin thiết bị trong / dev thực sự làm gì?


31

(Không phải là bản sao của Hiểu / dev và các thư mục con và tệp của nó )

Tôi đã duyệt qua hệ thống tập tin của mình và lần đầu tiên tôi dành một giây để phân tích /devthư mục của mình . Tôi đã rất ngạc nhiên bởi số lượng tập tin thiết bị trong đó và không thể hiểu được tất cả chúng:

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

Tôi biết rằng sd*'s là đĩa và hệ thống file của tôi, nhưng là gì loopx, fd0uxxxx, sgx, vcsxxxvà tất cả các file đơn lẻ khác. Hầu hết trong số họ là các tập tin thiết bị theo ls.

Tôi hiểu rằng việc trả lời đầy đủ câu hỏi này sẽ cần rất nhiều thông tin, vì vậy trừ khi ai đó có thể cung cấp một liên kết với rất nhiều tập tin thiết bị khác nhau devvà tất cả chúng được sử dụng cho mục đích gì, tôi đề nghị chúng tôi thực hiện câu trả lời CW.


Tôi muốn nói: bạn không muốn biết (không phải về tất cả điều này). Tôi đề nghị viết lại câu hỏi của bạn như: Những thiết bị nào trong /devtôi nên biết về? (Có lẽ bạn sẽ có câu trả lời cho tất cả trong số họ dù sao, có lẽ không ...)
Stéphane Gimenez

1
Tôi đã thay đổi tiêu đề, cuộc gọi tốt. Tuy nhiên, nếu có thể tôi sẽ YÊU để biết tất cả những gì họ đã làm, hoặc có cách tìm hiểu (đọc tệp thiết bị? Nếu điều đó có ý nghĩa).
n0pe

Tôi không nghĩ sẽ hữu ích khi liệt kê từng thiết bị một. Khách truy cập trong tương lai có thể có một danh sách hơi khác nhau. Đọc các tài liệu tôi đã chỉ ra trong câu trả lời của tôi và nếu bạn vẫn không thể tìm ra một vài trong số chúng, hãy hỏi một câu hỏi cụ thể.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


48

Một số trong số này có các trang man (trong phần 4 ; bỏ qua (các) chữ số cuối cùng và trong một vài trường hợp như sdachữ cái cuối cùng).

Để có câu trả lời dứt khoát hơn, nhưng thường ít dễ đọc hơn, hãy tìm trong tài liệu kernel . Trước tiên, xác định xem thiết bị là thiết bị khối hay thiết bị ký tự và số chính và số phụ của nó. Ví dụ

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

vậy sdalà một thiết bị khối ( b) với chính: nhỏ = 8: 0. Bây giờ hãy tìm nó trong devices.txt: 8 khối là các thiết bị đĩa SCSI, hầu hết các đĩa hiện nay (hầu hết các đĩa IDE và SATA cũng được nhìn thấy qua giao diện SCSI, mặc dù điều này phụ thuộc vào các tùy chọn biên dịch kernel). Chặn thiết bị 8: 1 ( /dev/sda1) là phân vùng đầu tiên của /dev/sda.

Có thể có một vài thiết bị kỳ quặc không được ghi lại. Bạn có thể xem trên hệ thống của mình tại ví dụ /sys/dev/block/8:0: đây là một liên kết tượng trưng đến một thư mục bên dưới /syscung cấp nhiều thông tin khác nhau về thiết bị. Bạn có thể theo dõi nhiều liên kết hơn và đặc biệt (trong trường hợp này) đưa /sys/dev/block/8:0/device/driverbạn đến một thư mục tương ứng với trình điều khiển. Một nguồn thông tin khác là /proc/devices, cho biết trình điều khiển nào yêu cầu mỗi số thiết bị chính.

Hầu hết các hệ thống Linux sử dụng udev để cư trú /devdựa trên các trình điều khiển và phần cứng có sẵn. Bạn có thể duyệt các quy tắc để tạo tệp thiết bị, thường là trong /lib/udev/rules.d/etc/udev/rules.d(các vị trí chính xác phụ thuộc vào phân phối).

Một vài trong số các tập tin không phải là thiết bị. lsof /dev/NAME(với tư cách là root) sẽ cho bạn biết quy trình đang sử dụng chúng và do đó cung cấp cho bạn một gợi ý về những gì họ đang làm. Đối với các thư mục, xem các tập tin trong đó.

Câu trả lời này là dành riêng cho Linux, nhưng các đơn vị khác tuân theo các nguyên tắc tương tự. Kiểm tra các trang man (trong phần 4 trên hầu hết các biến thể, nhưng một số ít sử dụng phần 7), hoặc tài liệu hệ thống hoặc kernel khác. Thông tin liên quan là bit khối / ký tự và số chính: số phụ.


Thật tuyệt vời, bạn đã nêu chi tiết một số điểm quan tâm mà tôi hiện đang đọc. Cảm ơn vì điều đó.
n0pe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.