下面是一个系统化的学习指南,帮助你细致掌握 /sys/ 目录的结构和用途:
🧠 基础概念:什么是 /sys/
-
/sys/是一个由内核挂载的虚拟文件系统(sysfs)。 -
它提供了对内核设备树、驱动、模块、功耗管理等的访问接口。
-
所有内容都是动态生成的,反映当前系统状态。
🗂️ /sys/ 目录结构总览
以下是 /sys/ 下常见的子目录及其作用:
| 目录路径 | 说明 |
|---|---|
/sys/class/ | 以“类”的方式组织设备,如网卡、LED、输入设备等 |
/sys/block/ | 块设备,如 SD 卡、USB 存储等 |
/sys/bus/ | 总线信息,如 USB、I2C、SPI 等 |
/sys/devices/ | 所有设备的物理拓扑结构 |
/sys/kernel/ | 内核参数、调度器、debug 等信息 |
/sys/module/ | 当前加载的内核模块及其参数 |
/sys/firmware/ | 固件相关信息,如设备树(device tree) |
/sys/power/ | 电源管理接口,如 suspend/resume |
/sys/fs/ | 文件系统相关信息,如 cgroup、fuse 等 |
🔍 学习建议:逐步探索每个目录
1. /sys/class/:按功能分类的设备接口
-
示例:
/sys/class/net/eth0→ 网卡 eth0 的状态、MAC 地址等 -
可查看 LED、GPIO、输入设备等状态
2. /sys/block/:块设备
-
示例:
/sys/block/mmcblk0→ SD 卡设备 -
可查看分区信息、I/O 调度器等
3. /sys/bus/ 与 /sys/devices/:硬件拓扑
-
/sys/bus/usb/devices/→ 所有 USB 设备 -
/sys/devices/platform/soc/→ 树莓派 SoC 上的设备,如 UART、SPI、I2C
4. /sys/module/:内核模块
-
示例:
/sys/module/i2c_bcm2835/parameters/→ 树莓派 I2C 驱动参数
5. /sys/kernel/:内核状态
-
包含调度器、debug、安全模块(如 SELinux)等信息
🧪 实验建议(树莓派 3B+)
你可以在树莓派上进行以下实验:
✅ 查看 GPIO 状态
bash
ls /sys/class/gpio/
✅ 控制 LED(如果有连接)
bash
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
✅ 查看 CPU 频率
bash
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
✅ 查看 USB 设备
bash
ls /sys/bus/usb/devices/
📚 深度学习资源推荐
-
树莓派官方文档(尤其是 GPIO、I2C、SPI 部分)
-
Linux 内核文档:
Documentation/filesystems/sysfs.txt -
书籍推荐:《Linux设备驱动开发详解》《深入理解Linux内核》
4008

被折叠的 条评论
为什么被折叠?



