20

のすべてのファイル/devは特別なファイルです...それらはコンピューターのデバイスを表します。それらはmknodsyscallで作成されました。私の質問は、この特別なファイルの作成に使用されたマイナー番号とメジャー番号を知るにはどうすればよいですか?

4

5 に答える 5

28

このリストはLANANA Linux Device Listと呼ばれ、 Alan Cox によって管理されています。

最新のコピーは、オンライン (直接リンク) または Linux ソースにあります。カーネル ツリーでのファイル名はDocumentation/devices.txt.

/devノード(またはそのデバイスノード)を作成したメジャー番号とマイナー番号を確認するには、次のオプションを使用lsします。-l

22:26 jsmith@undertow% ls -l /dev/xvd?
brw-rw---- 1 root disk    202,   0 Nov  1 20:31 /dev/xvda
brw-rw---- 1 root disk    202,  16 Nov  1 20:31 /dev/xvdb
brw-rw---- 1 root disk    202,  32 Nov  1 20:31 /dev/xvdc

この例で202は、 は 3 つのデバイスのメジャー番号であり0、 、16、および32はマイナーです。左側のbは、ノードがブロック デバイスであることを示します。代替手段はc、キャラクターデバイスです。

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty
于 2009-12-01T03:18:35.130 に答える
9
$ ls -l /dev/fd0 /dev/null
brw-rw---- 1 ルート フロッピー 2, 0 11 月 22 日 19:48 /dev/fd0
crw-rw-rw- 1 ルート ルート 1、3 Nov 22 19:48 /dev/null
$ stat -c '%n: %F, メジャー %t マイナー %T' /dev/fd0 /dev/null
/dev/fd0: ブロック スペシャル ファイル、メジャー 2 マイナー 0
/dev/null: キャラクタ特殊ファイル、メジャー 1 マイナー 3

ほとんどのデバイス番号は固定されています (つまり/dev/null、常に character device になります1:3) が、Linux では動的に割り当てられるものもあります。

$猫 /proc/devices
キャラクターデバイス:
...
 10 その他
...

ブロック デバイス:
...
253mdp
254 デバイスマッパー
$猫/proc/misc
...
 57 デバイスマッパー
...

たとえば、このシステムでは、 の残りの部分はであり、これはブート サイクルごとに異なる可能性があります。また、モジュールがロード/アンロードされ、デバイスが追加/削除された場合でも異なります/dev/mapper/controlc:10:57/dev/mapper/*b:254:*

これらのデバイス登録については、 で詳しく調べることができます/sys

$ readlink /sys/dev/block/2:0
../../デバイス/プラットフォーム/フロッピー.0/ブロック/fd0
$ cat /sys/devices/platform/floppy.0/block/fd0/dev
2:0
$ readlink /sys/dev/char/1:3
../../devices/virtual/mem/null
$ cat /sys/devices/virtual/mem/null/dev
1:3
于 2009-12-01T03:52:47.683 に答える
1

に依存しない代替案stat:

$ cat /sys/class/*/random/dev
1:8
于 2017-04-26T16:34:52.510 に答える