0%

Linux 文件系统 procfs、sysfs 和 debugfs

内核中有三个常用的伪文件系统: procfsdebugfssysfs

  • procfs — The proc filesystem is a pseudo-filesystem which provides an interface to kernel data structures.
  • sysfs — The filesystem for exporting kernel objects.
  • debugfs — Debugfs exists as a simple way for kernel developers to make information available to user space.

Introduction

都用于 Linux 内核用户空间 的数据交换,但是适用的场景有所差异:

  • procfs 历史最早,最初就是用来跟内核交互的唯一方式,用来获取处理器、内存、设备驱动、进程等各种信息
  • sysfskobject 框架紧密联系,而 kobject 是为设备驱动模型而存在的,所以 sysfs 是为设备驱动服务的
  • debugfs 从名字来看就是为 debug 而生,所以更加灵活

挂载方式

$ sudo mount -t proc nondev /proc/
$ sudo mount -t sys nondev /sys/
$ sudo mount -t debugfs nondev /sys/kernel/debug/

内核文档路径

  • procfs — Documentation/filesystems/proc.txt
  • sysfs — Documentation/filesystems/sysfs.txt
  • debugfs — Documentation/filesystems/debugfs.txt

debugfs

procfs 其目的是反映进程的状态信息,而 sysfs 主要用于 Linux 设备模型,使用 debugfs 来调试内核,把我们需要关心的数据映射到用户空间

挂载命令

mount -t debugfs none /sys/kernel/debug

内核选项

Kernelhacking --->
    [*]Debug Filesystem

Ref

  1. Linux 文件系统:procfs, sysfs, debugfs 用法简介
  2. linux 内核 DebugFS
  3. Linux 驱动调试中的 Debugfs 的使用简介