sysfs
100%

设备 · 第 4 课

sysfs

学习 sysfs 如何在 `/sys` 下公开 Linux 内核的实时设备、驱动程序、总线和类别模型。

sysfs 是通常挂载在 /sys 的虚拟文件系统。它通过目录、符号链接和小型属性文件表示内核对象及其关系。设备发现工具和管理器通过它了解内核当前的设备模型。

浏览设备模型

重要的顶层视图包括:

  • /sys/devices/:物理和逻辑设备层次结构
  • /sys/class/:按功能类别分组的设备,例如块设备或网络设备
  • /sys/bus/:总线及其设备和驱动程序
  • /sys/block/:便于查看块设备的视图
  • /sys/dev/:按字符或块设备主次设备号索引的链接

/sys/devices 以外的许多条目都是指向规范层次结构的符号链接。需要实际父路径时,可用 readlink -f 解析链接:

$ readlink -f /sys/class/block/sda

使用其他存储接口的系统上可能没有示例中的名称。

哪个 sysfs 子树包含内核的主要设备层次结构?

读取属性

属性文件公开单个值或控制项。块设备的示例可能包括:

$ cat /sys/class/block/sda/dev
8:0
$ cat /sys/class/block/sda/ro
0
$ cat /sys/class/block/sda/size
1953525168

dev 报告主设备号和次设备号。ro 报告块设备的只读标志。对于 Linux 块设备,size 通常以 512 字节扇区为单位,而不考虑设备的物理扇区大小。必须查阅内核 ABI 文档,确认具体属性的单位和含义。

块设备的 sysfs dev 属性通常包含什么?

关联 `/sys` 与 `/dev`

/dev 包含应用程序为设备 I/O 打开的节点。/sys 则公开对象关系、属性、状态和部分控制项。/dev/sda 这样的块设备节点可以与 /sys/dev/block/8:0 匹配,后者会解析到相关 sysfs 对象。

两个接口相互补充。任何一个都不能单独提供完整的硬件事实清单,而且设备可能在检查过程中消失。

哪项说法正确区分了 /sys/dev

安全写入属性

有些 sysfs 属性可写,能够改变电源状态、驱动程序绑定、队列行为、设备授权、LED 或其他实时控制。一次成功的文本写入可能立即影响硬件或服务;它并不等同于编辑持久配置文件。

应阅读相关 ABI 文档和当前值,确定如何持久保存设置,并且只在获得授权的系统上测试。绝不要在 /sys 中递归修改权限或写入猜测的值。

为什么写入 sysfs 属性可能对运行产生重大影响?

课程已完成

你已完成 sysfs

现在,你可以使用 sysfs 作为实时内核对象的结构化视图。

  • 浏览设备、类别、总线、块设备和设备号视图。

  • 以正确单位逐个读取有文档说明的属性。

  • 将 sysfs 对象与 /dev 节点关联。

  • 将可写属性视为实时控制接口。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 设备