Linux /sys/ 之sysfs

下面是一个系统化的学习指南,帮助你细致掌握 /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内核》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值