web-dev-qa-db-ja.com

Linuxでデバイスの特殊ファイルのメジャー番号とマイナー番号を知っている

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

19
Manuel Aráoz

このリストは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つのデバイスのメジャー番号であり、016、および32はマイナーです。左側のbは、ノードがブロックデバイスであることを示します。別の方法は、文字デバイスであるcです。

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty
26
Jed Smith
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/controlc: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 
9
ephemient

Statを使用することもできます。

$ stat -c 'major: %t minor: %T' <file>
4
user1655874

特にブロックデバイスの場合:

$ 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 /
2
drgnfr

statに依存しない代替手段:

$ cat /sys/class/*/random/dev
1:8
1
domen