在linux中了解设备专用文件的主要和次要编号

时间:2009-12-01 03:08:07

标签: linux file device

/dev中的所有文件都是特殊文件......它们代表计算机的设备。 它们是使用mknod系统调用创建的。我的问题是:我怎么知道未成年人和 用于创建此特殊文件的主要数字?

5 个答案:

答案 0 :(得分:27)

该列表称为 LANANA Linux设备列表,由Alan Cox管理。

您可以在线找到latest copydirect link),也可以在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是三个设备的主要号码,01632是未成年人。左侧的b表示该节点是块设备。替代方案是c,一个字符设备:

crw-rw-rw- 1 root tty       5,   0 Nov 22 00:29 /dev/tty

答案 1 :(得分:9)

$ 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,这可能与引导周期到另一个 - 或者甚至在加载/卸载模块并添加/移除设备时。

您可以在{{1}}进一步探索这些设备注册。

$ 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

答案 2 :(得分:4)

您也可以使用stat。

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

答案 3 :(得分:2)

特别是对于块设备:

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

答案 4 :(得分:1)

不依赖于stat的替代方案:

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