LV06-12-ConfigFS-01-虚拟文件系统ConfigFS简介
前面学习设备树插件的时候有提到ConfigFS文件系统,它是什么?若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
PC端开发环境 | Windows | Windows11 |
Ubuntu | Ubuntu20.04.2的64位版本 | |
VMware® Workstation 17 Pro | 17.6.0 build-24238078 | |
终端软件 | MobaXterm(Professional Edition v23.0 Build 5042 (license)) | |
Win32DiskImager | Win32DiskImager v1.0 | |
Linux开发板环境 | Linux开发板 | 正点原子 i.MX6ULL Linux 阿尔法开发板 |
uboot | NXP官方提供的uboot,使用的uboot版本为U-Boot 2019.04 | |
linux内核 | linux-4.19.71(NXP官方提供) |
点击查看本文参考资料
分类 | 网址 | 说明 |
官方网站 | https://www.arm.com/ | ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档 |
https://www.nxp.com.cn/ | NXP官方网站 | |
https://www.nxpic.org.cn/ | NXP 官方社区 | |
https://u-boot.readthedocs.io/en/latest/ | u-boot官网 | |
https://www.kernel.org/ | linux内核官网 |
点击查看相关文件下载
分类 | 网址 | 说明 |
NXP | https://github.com/nxp-imx | NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库 |
nxp-imx/linux-imx/releases/tag/v4.19.71 | NXP linux内核仓库tags中的v4.19.71 | |
nxp-imx/uboot-imx/releases/tag/rel_imx_4.19.35_1.1.0 | NXP u-boot仓库tags中的rel_imx_4.19.35_1.1.0 | |
I.MX6ULL | i.MX 6ULL Applications Processors for Industrial Products | I.MX6ULL 芯片手册(datasheet,可以在线查看) |
i.MX 6ULL Applications ProcessorReference Manual | I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网) | |
Source Code | https://elixir.bootlin.com/linux/latest/source | linux kernel源码 |
kernel/git/stable/linux.git - Linux kernel stable tree | linux kernel源码(官网,tag 4.19.71) | |
https://elixir.bootlin.com/u-boot/latest/source | uboot源码 |
虚拟文件系统 ConfigFS 是一个特殊的文件系统, 旨在提供一种动态配置 Linux 内核和设备的机制。
一、常用的文件系统
在 Linux 内核中, 有几个常用的虚拟文件系统, 虚拟文件系统提供了一个内核抽象层, 使得应用程序可以通过统一的文件访问接口操作不同类型的文件和设备。 它简化了应用程序的开发和维护, 提供了更高的可移植性和灵活性, 并提供了管理文件系统和访问底层硬件的功能。
1. procfs
procfs 是一个虚拟文件系统, 提供了对系统内核运行时状态的访问接口。 它以文件和目录的形式表示内核中的进程, 设备, 驱动程序和其他系统信息。 通过读取和写入 procfs 中的文件,可以获取和修改有关系统状态的信息。
2. sysfs
sysfs 是一个虚拟文件系统, 用于表示系统中的设备, 驱动程序和其他内核对象。 它提供一种统一的接口, 通过文件和目录来访问和配置这些对象的属性和状态。 Sysfs 常用于设备驱动程序和系统管理工具, 用于查看和控制系统的硬件和内核对象。
3. configfs
configfs 是一个虚拟文件系统, 用于动态配置和管理内核对象。 它提供了一种以文件和目录的形式访问内核对象的接口, 允许用户在运行时添加, 修改和删除内核对象, 而无需重新编译内核或重新启动系统。 ConfigFS 常用于配置和管理设备, 驱动程序和子系统。
4. 总结
procfs 主要用于访问和管理进程信息, 提供了有关进程, 内核参数和系统状态的信息。
sysfs 主要用于表示和配置系统中的设备, 驱动程序和其他内核对象, 提供了一种统一的接口来访问和控制这些对象的属性和状态。
configfs 主要用于动态配置和管理内核对象, 提供了一种以文件和目录的形式访问内核对象的接口, 允许在运行时添加, 修改和删除内核对象。
二、设备树为什么使用configfs?
通过前面设备树插件的使用我们可以理出设备树的插件的实现方式, 如下图:

要实现上述的功能, 用户空间需要和内核进行交互, 也就是将 dtbo 加载到内存里面去。
sysfs 虚拟文件系统的作用是将内核中的数据、 属性以文件的方式导出到用户空间。 导出到用户空间以后, 读这些文件表示读取设备的文件, 写这些文件就表示控制设备。 configfs 作用的英文解释为 Userspace-driven kernel object configuration, 翻译过来就是用户空间配置内核对象
所以 configfs 与 sysfs 恰恰相反, sysfs 导出内核对象给用户空间, configfs 是从用户空间去配置内核对象, 并且不需要重新编译内核或者修改内核代码。 所以 configfs 更适合设备树插件这个技术。
选择 configfs 虚拟文件系统作为设备树插件的实现方式, 可以满足设备树插件对动态性、灵活性的需求, 使得设备树的配置和管理更加方便和高效。