/ devのデバイスファイルは実際に何をしますか?


31

理解/ devとそのサブディレクトリとファイルの複製ではありません)

私は自分のファイルシステムをブラウジングしていましたが、初めて/devディレクトリを分析するために2回目をとりました。私はその中のデバイスファイルの量に驚きました、そしてそれらのすべてを理解できませんでした:

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*のは、私のディスクとファイルシステムですが、何をしているloopxfd0uxxxxsgxvcsxxxおよび他のすべての単一のファイル。それらのほとんどはによるデバイスファイルですls

この質問に完全に答えるには膨大な情報が必要になることを理解しているので、誰かがさまざまなデバイスファイルdevとそれらのすべてが何に使用されているのかについての詳細なリンクを提供できない限り、CWの回答を作成することを提案します。


私は言いたいと思う:あなたは知りたくない(これについてすべてではない)。あなたの質問を次のように書き直すことをお勧めします:私が/dev知っているべきデバイスは何ですか?(たぶん、あなたはそれらのすべてに対する答えを持っているでしょう、多分そうではないでしょう...)
ステファン

1
タイトルを変更しました、いいですね。ただし、可能であれば、それらすべてが何をしたかを知りたい、または見つける方法があればいいのです(デバイスファイルを読み取るか?それが理にかなっている場合)。
-n0pe

デバイスを1つずつリストすることは有用ではないと思います。将来の訪問者は、わずかに異なるリストを持つ可能性があります。私の答えで示したドキュメントを読んで、まだそれらのいくつかを理解できない場合は、特定の質問をしてください。
ジル '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(rootとして)は、どのプロセスがそれらを使用しているかを教えてくれるので、それらが何のためにあるかについてのヒントを与えてくれます。ディレクトリについては、その中のファイルを見てください。

この答えはLinux固有のものですが、他の大学も同じ原則に従います。manページ(ほとんどの亜種のセクション4で、いくつかはセクション7を使用)、または他のシステムまたはカーネルのドキュメントを確認してください。関連する情報は、ブロック/文字ビットとメジャー:マイナー番号です。


驚くべきことに、あなたは私が現在読んでいるいくつかの興味のあるポイントを詳しく説明しました。これをありがとう。
n0pe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.