/dev 目录是 Linux 中唯一可以存储设备文件的地方吗?

/dev 目录是 Linux 中唯一可以存储设备文件的地方吗?

我知道/dev目录存储设备文件,但是/dev目录是唯一可以存储设备文件的地方,还是只是约定将设备文件存储在目录中/dev

答案1

这只是惯例。事实上,在chroot环境或容器(例如docker)中,设备条目可能存在于其他地方。

使设备条目成为设备条目的因素是类型条目,而不是名称

因此,例如:

% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda

第一个“b”表示这是一个块设备。 “253”是主设备号,“0”是次设备号。在这种情况下

% grep virt /proc/devices
253 virtblk

因此主设备253与虚拟块层相关。

您会注意到名称“vda”在这里并不重要!

我确实可以

sudo mknod /tmp/foo b 253 0

现在/tmp/foo将访问完全相同的数据:

% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545   128

% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545   128

通用名称对于人类和配置文件很重要(例如,/dev/tty1是 Linux 计算机上第一个虚拟控制台的通用名称;/dev/ttyS0是第一个串行端口的通用名称),但它是类型(块/字符)和主/次编号这使它起作用。

相关内容