デバイスタイプ番号とはどういう意味ですか?

デバイスタイプ番号とはどういう意味ですか?

file /dev/*複数のファイルの説明を「Block Special(M / N)」および「Character Special(M / N)」として印刷します。ここで、MとNは数字です。たとえば、

$ file /dev/null
/dev/null: character special (1/3)

man fileこれは文書化されていないようですが、あいまいに参照されており、man statこれをプライマリデバイスタイプとセカンダリタイプと呼ぶようです。apropos 'device type'何も見つかりませんでした。それでは、この数字は何を意味しますか?

ベストアンサー1

Unixのデバイスには、タイプ(文字またはブロックなど)、メイン番号(通常はドライバ)、マイナー番号(通常はインスタンス)があります。

たとえば、次のようになります。

% ls -l /dev/vda
brw-rw---- 1 root disk 253, 0 Feb  3 09:09 /dev/vda

これはブロック装置、基本装置253、補助装置0である。

見てみると/proc/devices、次のように終わることがわかります。

Block devices:
  2 fd
259 blkext
  9 md
253 virtblk
254 mdp

したがって、253が「virtblk」であることがわかります。これは仮想ディスクがある仮想マシンなので意味があります!

このドライバの場合、マイナーデバイス番号は、デバイス内のブロックデバイスとパーティションを表します。

% ls -l /dev/vd*
brw-rw---- 1 root disk 253,  0 Feb  3 09:09 /dev/vda
brw-rw---- 1 root disk 253,  1 Feb  3 09:09 /dev/vda1
brw-rw---- 1 root disk 253,  2 Feb  3 09:09 /dev/vda2
brw-rw---- 1 root disk 253,  3 Feb  3 09:09 /dev/vda3
brw-rw---- 1 root disk 253, 16 Feb  3 09:09 /dev/vdb
brw-rw---- 1 root disk 253, 32 Feb  3 09:09 /dev/vdc
brw-rw---- 1 root disk 253, 33 Feb  3 09:09 /dev/vdc1

「実際の」ハードウェアに関連しない特別なドライバがあります。例えば

% ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Feb  3 09:09 /dev/null

キャラクターデバイス、メジャー 1、マイナー 3 です。 /proc/devicesドライバー1について教えてください。

  1 mem

この「mem」ドライバが他のデバイスも処理していることがわかります。

% ls -l /dev | grep ' 1, '
crw-rw-rw- 1 root root      1,   7 Feb  3 09:09 full
crw-r--r-- 1 root root      1,  11 Feb  3 09:09 kmsg
crw-r----- 1 root kmem      1,   1 Feb  3 09:09 mem
crw-rw-rw- 1 root root      1,   3 Feb  3 09:09 null
crw------- 1 root root      1,  12 Feb  3 09:09 oldmem
crw-r----- 1 root kmem      1,   4 Feb  3 09:09 port
crw-rw-rw- 1 root root      1,   8 Feb  3 09:09 random
crw-rw-rw- 1 root root      1,   9 Feb  3 09:09 urandom
crw-rw-rw- 1 root root      1,   5 Feb  3 09:09 zero

おすすめ記事