Skip to content

LV005-ConfigFS简介 ​

前面学习设备树插件的时候有提到 ConfigFS 文件系统,它是什么?若笔记中有错误或者不合适的地方,欢迎批评指正 😃。

虚拟文件系统 ConfigFS 是一个特殊的文件系统, 旨在提供一种动态配置 Linux 内核和设备的机制。

一、常用的文件系统 ​

在 Linux 内核中, 有几个常用的虚拟文件系统, 虚拟文件系统提供了一个内核抽象层, 使得应用程序可以通过统一的文件访问接口操作不同类型的文件和设备。 它简化了应用程序的开发和维护, 提供了更高的可移植性和灵活性, 并提供了管理文件系统和访问底层硬件的功能。

1. procfs ​

procfs 是一个虚拟文件系统, 提供了对系统内核运行时状态的访问接口。 它以文件和目录的形式表示内核中的进程, 设备, 驱动程序和其他系统信息。 通过读取和写入 procfs 中的文件,可以获取和修改有关系统状态的信息。

2. sysfs ​

sysfs 是一个虚拟文件系统, 用于表示系统中的设备, 驱动程序和其他内核对象。 它提供一种统一的接口, 通过文件和目录来访问和配置这些对象的属性和状态。 Sysfs 常用于设备驱动程序和系统管理工具, 用于查看和控制系统的硬件和内核对象。

3. configfs ​

configfs 是一个虚拟文件系统, 用于动态配置和管理内核对象。 它提供了一种以文件和目录的形式访问内核对象的接口, 允许用户在运行时添加, 修改和删除内核对象, 而无需重新编译内核或重新启动系统。 ConfigFS 常用于配置和管理设备, 驱动程序和子系统。

4. 总结 ​

procfs 主要用于访问和管理进程信息, 提供了有关进程, 内核参数和系统状态的信息。

sysfs 主要用于表示和配置系统中的设备, 驱动程序和其他内核对象, 提供了一种统一的接口来访问和控制这些对象的属性和状态。

configfs 主要用于动态配置和管理内核对象, 提供了一种以文件和目录的形式访问内核对象的接口, 允许在运行时添加, 修改和删除内核对象。

二、设备树为什么使用 configfs? ​

通过前面设备树插件的使用我们可以理出设备树的插件的实现方式, 如下图:

image-20260120145627337

要实现上述的功能, 用户空间需要和内核进行交互, 也就是将 dtbo 加载到内存里面去。

sysfs 虚拟文件系统的作用是将内核中的数据、 属性以文件的方式导出到用户空间。 导出到用户空间以后, 读这些文件表示读取设备的文件, 写这些文件就表示控制设备。 configfs 作用的英文解释为 Userspace-driven kernel object configuration, 翻译过来就是用户空间配置内核对象

所以 configfs 与 sysfs 恰恰相反, sysfs 导出内核对象给用户空间, configfs 是从用户空间去配置内核对象, 并且不需要重新编译内核或者修改内核代码。 所以 configfs 更适合设备树插件这个技术。

选择 configfs 虚拟文件系统作为设备树插件的实现方式, 可以满足设备树插件对动态性、灵活性的需求, 使得设备树的配置和管理更加方便和高效。