引自https://www.kernel.org/doc/Documentation/sysfs-rules.txt:
[...] 计划将所有三个分类目录合并到 /sys/subsystem 的一个位置,遵循总线目录的布局。所有总线和类别,包括转换后的块子系统,都将显示在那里。
属于子系统的设备将在 /sys/subsystem/<name>/devices 的“devices”目录中创建符号链接。
如果 /sys/subsystem 存在,则可以忽略 /sys/bus、/sys/class 和 /sys/block。如果不存在,则必须始终扫描所有三个位置,因为内核可以自由地将子系统从一个位置移动到另一个位置,只要设备仍可通过相同的子系统名称访问即可。
好吧,当我尝试了解 Linux 内核的 /sys 文件系统的布局时,我在我的 Ubuntu 操作系统中看不到 /sys/subsystem 目录(我使用 Ubuntu 14.04)。
我快速地在谷歌上搜索了一下,只找到了LKML 讨论关于目录统一,但除了 Kay Sievers 的注释之外,我没有看到任何其他内容。(Agit 日志在 Documentation/sysfs-rules.txt 上也显示这也是他写的。)
我的问题是,我是否遗漏了什么?为什么目录不可用?或者目录合并在内核开发中从未真正发生过,文档有误吗?
答案1
我认为你引用的文件的关键部分在这里:
如果 /sys/subsystem 存在,则可以忽略 /sys/bus、/sys/class 和 /sys/block。如果不存在,则必须始终扫描所有三个位置,因为内核可以自由地将子系统从一个位置移动到另一个位置,只要设备仍可通过相同的子系统名称访问即可。
在寻找 /sys/subsystem 目录的其他引用时,我在文件中发现了以下注释99-systemd.rules.in
我们需要一种独立于硬件的方式来识别网络设备。我们使用 /sys/subsystem 路径来实现这一点。当前的 vanilla 内核目前实际上不支持该层次结构,但即将推出的内核将支持该层次结构....
因此我想象它将被包含在后续的内核中。