认识 linux sysfs文件系统
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识 linux sysfs文件系统相关的知识,希望对你有一定的参考价值。
先看一下相关资料的描述;
自2.6版本开始,linux内核开始使用sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持修改和调整。
与ext系列和fat等文件系统不同的是,sysfs是一个系统在启动时构建在内存中虚拟文件系统,一般被挂载在/sys目录下,既然是存储在内存中,自然掉电不保存,不能存储用户数据。
事实上,在之前也有同样的虚拟文件系统建立了内核与用户系统信息的交互,它就是procfs,但是procfs并非针对设备和驱动程序,而是针对整个内核信息的抽象接口。
sysfs和procfs都是虚拟文件系统;
sysfs,它可以产生一个包含所有系统硬件层次视图,与提供进程和状态信息的proc文件系统十分类似;
sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核的数据结构以及它们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系,其顶级目录包括block,bus,drivers,class,power和firmware等.
sysfs提供一种机制,使得可以显式的描述内核对象、对象属性及对象间关系。sysfs有两组接口,一组针对内核,用于将设备映射到文件系统中,另一组针对用户程序,用于读取或操作这些设备。
sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的 sysfs 挂载位置不固定或没有标准被挂载,
sysfs的根目录下包含了七个目录:block,bus,class,devices,firmware,module和power。
(1)block目录下的每个子目录都对应着系统中的一个块设备。反过来,每个目录下又都包含了该块设备的所有分区。
(2)bus目录提供了一个系统总线视图。
(3)class目录包含了以高层功能逻辑组织起来的系统设备视图。
(4)devices目录是系统中设备拓扑结构视图,它直接映射出了内核中设备结构体的组织层次。
(5)firmware目录包含了一些诸如ACPI,EDD,EFI等低层子系统的特殊树。
(6)power目录包含了系统范围的电源管理数据。
(7)module目录包含了内核模块。模块是一种向Linux内核添加设备驱动程序、文件系统及其他组件的有效方法。
下面来查看一下;
包含多个目录,块设备、总线、类、设备、电源等;
进到各个子目录看一下;我还不了解为什么有这么多块设备;bus目录下是按总线类别列出;
类,应该是设备类或设备驱动程序类,类别;
电源和固件;
查看一下 bus/pci/devices下,按资料说是设备描述符,我还不了解;
usb设备的描述符;
以上是关于认识 linux sysfs文件系统的主要内容,如果未能解决你的问题,请参考以下文章