/dev
内のすべてのファイルは特別なファイルです...それらはコンピューターのデバイスを表します。それらはmknod
システムコールで作成されました。私の質問は、この特別なファイルの作成に使用されたマイナー番号とメジャー番号をどのように知ることができるかということです。
このリストはLANANA Linuxデバイスリストと呼ばれ、AlanCoxによって管理されています。
最新のコピー オンライン( 直接リンク )、またはLinuxソースで見つけることができます。カーネルツリーでのファイル名は Documentation/devices.txt
です。
/dev
(またはそれに関する任意のデバイスノード)にノードを作成したメジャー番号とマイナー番号を確認するには、-l
オプションを指定してls
を使用します。
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
$ ls -l/dev/fd0/dev/null brw-rw ---- 1ルートフロッピー2、0 Nov 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
は常に文字デバイス1:3
になります)、Linuxでは一部が動的に割り当てられます。
$ cat/proc/devices キャラクターデバイス: ... 10その他 ... ブロックデバイス: 。 .. 253 mdp 254デバイスマッパー $ cat/proc/misc ... 57デバイスマッパー ...
たとえば、このシステムでは、/dev/mapper/control
がc:10:57
になり、残りの/dev/mapper/*
がb:254:*
になることがあります。これは、起動サイクルごとに異なる可能性があります。別の-またはモジュールがロード/アンロードされ、デバイスが追加/削除された場合でも。
これらのデバイス登録については、/sys
でさらに詳しく調べることができます。
$ readlink/sys/dev/block/2:0 ../../ devices/platform/floppy.0/block/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
Statを使用することもできます。
$ stat -c 'major: %t minor: %T' <file>
特にブロックデバイスの場合:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 90G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
├─sda2 8:2 0 4G 0 part /
stat
に依存しない代替手段:
$ cat /sys/class/*/random/dev
1:8