这是一个 Orange Pi 5 Plus(RK3588)开发板的 Linux 7.0.3 内核的 debugfs 目录。/sys/kernel/debug 是 Linux 内核的 debugfs 虚拟文件系统挂载点,用于提供内核调试信息,没有功能性用途,仅用于调试。
下面按类别详细解释你目录下各个文件/目录的含义、应用场景,并给出实际 Demo。
一、核心基础设施类
| 目录/文件 |
说明 |
典型应用场景 |
debug_enabled |
显示当前 debugfs 是否启用 |
确认调试功能可用性 |
devices_deferred |
记录设备 probe 被延迟(deferred probe)的原因 |
排查设备驱动加载顺序问题 |
device_component |
component 框架的绑定状态 |
排查显示/DRM 子系统组件绑定失败 |
clear_warn_once |
清除 WARN_ONCE/printk_once 的一次性标记 |
重新触发已被抑制的警告 |
Demo:查看延迟 probe 的设备
# 查看哪些设备因为依赖未满足而被延迟加载
cat /sys/kernel/debug/devices_deferred
二、时钟与电源管理类
| 目录/文件 |
说明 |
典型应用场景 |
clk |
时钟树(clock tree)的完整信息 |
排查时钟配置错误、频率异常 |
opp |
Operating Performance Points(CPU/GPU 频率-电压表) |
调频调压策略分析 |
energy_model |
能效模型数据 |
调度器能耗优化调试 |
pm_genpd |
Generic Power Domain 状态 |
电源域开关状态排查 |
suspend_stats |
系统休眠/唤醒统计 |
休眠唤醒故障分析 |
wakeup_sources |
唤醒源统计 |
排查异常唤醒 |
Demo:查看时钟树
# 查看所有时钟的状态、使用率、父时钟
cat /sys/kernel/debug/clk/clk_summary
# 查看某个具体时钟
cat /sys/kernel/debug/clk/clk_core_rate
Demo:查看 OPP 表
# 查看 CPU 可用的频率-电压组合
cat /sys/kernel/debug/opp/opp_summary
三、GPIO / PinCtrl / I2C 类(嵌入式调试核心)
| 目录/文件 |
说明 |
典型应用场景 |
gpio |
GPIO 使用状态、标签、方向 |
排查 GPIO 冲突、确认引脚占用 |
pinctrl |
引脚复用(mux)配置状态 |
确认引脚功能配置是否正确 |
i2c |
I2C 总线调试信息 |
I2C 通信故障排查 |
Demo:GPIO 调试(最常用)
# 查看所有 GPIO 的状态
cat /sys/kernel/debug/gpio
# 输出示例:
# GPIOs 0-31, platform/gpiochip0:
# gpio-0 ( |led_green ) out hi
# gpio-5 ( |reset_button ) in hi IRQ
应用场景:确认某个 GPIO 是否被占用、方向是否正确、电平状态。
Demo:查看 PinCtrl 配置
# 查看每个 pin 的复用功能
cat /sys/kernel/debug/pinctrl/pinctrl-rockchip/pinmux-pins
# 查看 pin 配置(上下拉、驱动强度等)
cat /sys/kernel/debug/pinctrl/pinctrl-rockchip/pinconf-pins
四、DMA / 内存类
| 目录/文件 |
说明 |
典型应用场景 |
dma_buf |
DMA-BUF 缓冲区信息 |
GPU/显示缓冲区调试 |
dma_pools |
DMA 内存池状态 |
DMA 内存泄漏排查 |
dmaengine |
DMA 引擎通道状态 |
DMA 传输故障 |
fea10000.dma-controller 等 |
具体 DMA 控制器实例 |
查看 RK3588 各 DMA 通道使用情况 |
memblock |
启动时内存分配记录 |
早期内存问题 |
slab |
Slab 分配器统计 |
内核内存使用分析 |
stackdepot |
堆栈追踪存储 |
KASAN 等检测工具配套 |
swiotlb |
SWIOTLB 状态 |
DMA 映射回退机制调试 |
Demo:查看 DMA 通道状态
# 查看所有 DMA 通道的使用情况
cat /sys/kernel/debug/dmaengine/summary
# 查看特定 DMA 控制器
ls /sys/kernel/debug/fea10000.dma-controller/
cat /sys/kernel/debug/fea10000.dma-controller/status
五、块设备 / 存储类
| 目录/文件 |
说明 |
典型应用场景 |
block |
块设备 I/O 统计 |
磁盘性能分析 |
bdi |
Backing Device Info(写回策略) |
脏页回写调试 |
mmc0, mmc1 |
eMMC/SD 卡控制器调试 |
存储卡读写故障 |
spi-nor |
SPI NOR Flash 信息 |
Flash 读写调试 |
mtd |
MTD 设备信息 |
裸 Flash 设备调试 |
ufshcd |
UFS 控制器调试 |
UFS 存储故障 |
Demo:查看 MMC 状态
# 查看 eMMC/SD 卡寄存器状态
cat /sys/kernel/debug/mmc0/ios # 当前 I/O 设置
cat /sys/kernel/debug/mmc0/regs # 寄存器值
cat /sys/kernel/debug/mmc0/stat # 统计信息
六、网络类
| 目录/文件 |
说明 |
典型应用场景 |
bluetooth |
蓝牙子系统调试 |
蓝牙连接问题 |
ieee80211 |
WiFi (mac80211) 调试 |
WiFi 驱动问题 |
hns3 |
海思 hns3 网卡调试 |
以太网故障 |
Demo:蓝牙调试
# 查看蓝牙 HCI 层信息
cat /sys/kernel/debug/bluetooth/hci0/conn_info
cat /sys/kernel/debug/bluetooth/hci0/keys
七、多媒体 / 显示类(RK3588 重点)
| 目录/文件 |
说明 |
典型应用场景 |
dri |
Direct Rendering Infrastructure (DRM/KMS) |
显示管道调试 |
v4l2 |
Video4Linux2 调试 |
摄像头视频流调试 |
media |
Media 子系统拓扑 |
视频数据流链路分析 |
Demo:DRM 显示调试
# 查看所有显示管道状态
cat /sys/kernel/debug/dri/0/state
# 查看连接器(HDMI/DP/MIPI)状态
cat /sys/kernel/debug/dri/0/connector_status
# 查看显存分配
cat /sys/kernel/debug/dri/0/framebuffer
Demo:V4L2 摄像头调试
# 查看 V4L2 设备拓扑
cat /sys/kernel/debug/v4l2/topology
# 查看具体视频节点信息
ls /sys/kernel/debug/v4l2/video0/
八、Tracing / 性能分析类(最强大的调试工具)
| 目录/文件 |
说明 |
典型应用场景 |
tracing |
ftrace 完整功能入口 |
内核函数追踪、性能分析 |
sched |
调度器调试 |
CPU 调度问题 |
Demo:使用 ftrace 追踪函数调用(最实用的 Demo)
# 1. 进入 tracing 目录
cd /sys/kernel/debug/tracing
# 2. 查看可用的追踪器
cat available_tracers
# 输出:function function_graph nop ...
# 3. 启用函数追踪(追踪所有内核函数,开销较大)
echo function > current_tracer
echo 1 > tracing_on
# 4. 运行你要测试的程序...
sleep 5
# 5. 查看追踪结果
cat trace | head -100
# 6. 关闭追踪
echo 0 > tracing_on
echo nop > current_tracer
Demo:追踪特定函数
# 只追踪 gpio 相关函数
cd /sys/kernel/debug/tracing
echo nop > current_tracer
echo gpio* > set_ftrace_filter # 过滤 gpio 开头的函数
echo function > current_tracer
echo 1 > tracing_on
# 执行 GPIO 操作后查看
cat trace
# 清理
echo 0 > tracing_on
echo > set_ftrace_filter
Demo:函数图追踪(带调用关系和时间)
cd /sys/kernel/debug/tracing
echo function_graph > current_tracer
echo 1 > tracing_on
# ... 执行操作 ...
echo 0 > tracing_on
cat trace | head -50
九、中断 / 定时器 / 杂项
| 目录/文件 |
说明 |
典型应用场景 |
hte |
Hardware Timestamping Engine |
硬件时间戳调试 |
irq (隐含在 gpio 等中) |
中断信息 |
中断风暴排查 |
rseq |
Restartable Sequences |
用户态并发优化调试 |
remoteproc |
远程处理器(MCU/R5)管理 |
RK3588 MCU 核心调试 |
virtio-ports |
VirtIO 串口状态 |
虚拟化调试 |
十、安全建议
⚠️ 重要提示 :debugfs 包含大量内核内部信息,某些文件可写,可能被利用提权:
- 生产环境建议限制 debugfs 访问权限:
mount -o remount,mode=700 /sys/kernel/debug
- 容器环境不要挂载
/sys/kernel/debug,这是常见的容器逃逸向量
- 多个 CVE(如 CVE-2026-31546、CVE-2026-43380)都与 debugfs 接口处理不当有关
总结:Orange Pi 5 Plus 常用调试组合
| 调试目标 |
使用的 debugfs 路径 |
| GPIO 引脚冲突 |
/sys/kernel/debug/gpio + /sys/kernel/debug/pinctrl |
| 显示/HDMI 问题 |
/sys/kernel/debug/dri/0/state |
| 摄像头不工作 |
/sys/kernel/debug/v4l2/ + /sys/kernel/debug/media |
| 系统卡顿/性能 |
/sys/kernel/debug/tracing/ |
| eMMC/SD 故障 |
/sys/kernel/debug/mmc0/ |
| 设备不识别 |
/sys/kernel/debug/devices_deferred |
| 休眠唤醒问题 |
/sys/kernel/debug/suspend_stats + /sys/kernel/debug/wakeup_sources |
这些工具在 RK3588 平台的嵌入式 Linux 开发中非常实用,建议配合 dmesg 和 sysfs 一起使用。