我一直在阅读udev。在“概述”部分,维基百科指出“与传统的 Unix 系统不同,/dev 目录中的设备节点是一组静态文件,Linux udev 设备管理器动态地仅提供实际存在于设备上的设备的节点。系统”。
当它说“静态文件集”时是什么意思?这是否意味着总是有/dev
文件但它们并不总是指向真实设备?
slm*_*slm 11
我假设你指的是这一段:
与传统的 Unix 系统不同,/dev 目录中的设备节点是一组静态文件,Linux udev 设备管理器动态地仅为系统上实际存在的设备提供节点。尽管 devfs 曾经提供类似的功能,但 Greg Kroah-Hartman 列举了许多原因3,认为其实现优于 devfs:
从第一句开始,他们指的是其他 Unix 系统,其中的设备/dev
是静态创建的,并且从重新启动到重新启动都保持不变。以前版本的 Linux(想想 2.4 版本的内核)也曾经以这种方式工作,较新的版本不再以这种方式工作。其他 Unix 系统通常在您安装它们时包含一组通用的设备文件,并且很少需要手动创建其他设备文件。
在 2.4 中,您可以使用该mknod
命令手动创建任何必要的设备文件。例如:
$ mknod ./dev/random b 12 5
Run Code Online (Sandbox Code Playgroud)
注意:这表示创建/dev/random
文件描述符,作为主设备编号为 12 和次要设备编号为 5 的块设备。
OP 询问了以下有关/dev
目录整体功能的后续问题。这是他的问题:
您能否添加有关用于在重新启动时保留设备文件的技术方法的详细信息?它们如何物理存储在磁盘上?他们需要特殊的文件系统支持吗?
在研究这一点时,我想我会从Linux From Scratch 项目开始,以了解如何/dev
在较新版本的 Linux 内核中进行管理的基本概念。我知道,在过去的(想想内核版本2.4及以前)的/dev
目录是一组静态字面上拿起空间在硬盘上的文件,但随着的到来udev
而sysfs
这已不再是如此。
传统上,这些特殊文件是在安装时由发行版使用mknod
命令创建的。近年来,Linux 系统开始使用在运行时udev
管理这些/dev
文件。例如,udev
将在检测到设备时创建节点并在移除设备时删除它们(包括运行时的热插拔设备)。这样,/dev
目录(在大多数情况下)仅包含当前系统上实际存在的设备的条目,而不是可能存在的设备。
不必担心/dev
. 该目录现在完全由重新启动udev
和sysfs
重新启动管理。
udev
和sysfs
资源