Sysfs 是Linux 2.6所提供的一种虚拟文件系统。这个文件系统不仅可以把设备(devices)和驱动程序(drivers)的信息从内核输出到用户空间,也可以用来对设备和驱动程序做设置。

历史

编辑

Linux内核开发团队在Linux 2.5的开发过程中引入了‘Linux驱动程序模型’(Linux driver model),以解决2.4核心遭遇的以下问题:

  • 没有统一的机制表达驱动程序和设备的关系。
  • 不存在一般的热插拔(hotplug)机制。
  • procfs文件系统过度混乱,包含了许多不是进程(process)的信息。

sysfs的目的是把一些原本在procfs中的,关于设备的部分,独立出来,以‘设备层次结构架构’(device tree)的形式呈现。这个文件系统由Patrick Mochel所写,之后Maneesh Soni撰写“sysfs backing store path”,以降低在大型系统中对存储器的需求量。

sysfs一开始ramfs为基础,也是一个只存在于存储器中的文件系统。ramfs是在2.4核心处于稳定阶段时加入的。ramfs是一个优雅的实做,证明了要在当时仍很新的虚拟文件系统下写一个简单的文件系统是多么容易的一件事。由于ramfs的简洁以及使用了VFS,稍后的一些存储器形式的文件系统都以它作为开发基础。

sysfs刚开始被命名成ddfs(Device Driver Filesystem),当初只是为了要对新的驱动程序模型调试而开发出来的。它在调试时,会把设备架构(device tree)的信息输出到procfs文件系统中。但在Linus Torvalds的急切督促下,ddfs被转型成一个以ramfs为基础的文件系统。在新的驱动程序模型被集成进2.5.1核心时,ddfs被改名成driverfs,以更确切描述它的用途。

在2.5核心开发的次年,新的“驱动程序模型”和"driverfs"证明了对核心中的其他子系统也有用处。kobjects被开发出来,作为核心对象的中央管理机制,而此时driverfs也被改名成sysfs。

技术概观

编辑

每个被加入driver model tree内的对象,包括驱动程序、设备以及class设备,都会在sysfs文件系统中以一个目录呈现。对象的属性作为文件出现。符号链接代表对象间的关系。通常安装在/sys目录下:

mount -t sysfs sysfs /sys

外部链接

编辑