Linuxでデバイススペシャルファイルのメジャー番号とマイナー番号を知っている
質問
/ dev
内のすべてのファイルは特別なファイルです...それらはコンピューターのデバイスを表します。
それらは mknod
syscallで作成されました。私の質問は次のとおりです。
この特別なファイルの作成に使用されたメジャー番号?
解決
リストは 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
他のヒント
$ ls -l /dev/fd0 /dev/null brw-rw---- 1 root floppy 2, 0 Nov 22 19:48 /dev/fd0 crw-rw-rw- 1 root root 1, 3 Nov 22 19:48 /dev/null $ stat -c '%n: %F, major %t minor %T' /dev/fd0 /dev/null /dev/fd0: block special file, major 2 minor 0 /dev/null: character special file, major 1 minor 3
ほとんどのデバイス番号は固定されています(つまり、 / dev / null
は常にキャラクターデバイス 1:3
になります)が、Linuxでは一部が動的に割り当てられます。
$ cat /proc/devices Character devices: ... 10 misc ... Block devices: ... 253 mdp 254 device-mapper $ cat /proc/misc ... 57 device-mapper ...
たとえば、このシステムでは、 / 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