当前位置: 代码迷 >> 综合 >> linux下 /proc /sys目录的区别(sysfs、procfs都是虚拟文件系统)、rootfs
  详细解决方案

linux下 /proc /sys目录的区别(sysfs、procfs都是虚拟文件系统)、rootfs

热度:37   发布时间:2023-10-27 10:55:19.0

/sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备.可以看到真正运行了哪些设备,
从而可以推断出用到哪些驱动文件,
例如:/sys/devices/1000000.pinctrl/gpio 该设备下创建的真实可用的GPIO,没有创建的不会显示
/sys/class/gpio中也是真实可用的GPIO
调试GPIO的时候可以进入到/sys/class/gpio路径,单独操作单个GPIO拉高拉低,然后外部量

/proc/device-tree 下对应的是设备树文件,设备树中有的,不一定真实存在,可能仅仅是有个名字而已没有对应的驱动
/dev 下是用户APP层可以操作的设备对象

cat /sys/kernel/debug/regmap/5-001b/registers 查看I2C设备寄存器(有使用regmap)的值
.
.
.

一、rootfs

rootfs根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。

二、内核中有三个常用的虚拟文件系统:procfs,debugfs和sysfs。

1、procfs

proc 文件系统是一个虚拟文件系统, 它以文件系统的方式为应用层访问系统内核数据提供了接口, 用户和应用程序可以通过 proc 文件系统得到系统信息和进程相关信息,对 proc 文件系统的读写作为与内核进行通信的一种手段。 但是与普通文件不同的是, proc 文件系统是动态创建的,文件本身并不存在于磁盘当中、 只存在于内存当中,与 devfs 一样,都被称为虚拟文件系统。

  • /proc目录下很多以数字命名的文件夹实际上是进程的PID号

2、debugfs

debugfs是一个用于调试目的,简单的,基于内存的文件系统。kernel的信息可以输出到debugfs中,这样方便user space程序查看和使用。

为了使用debugfs功能,编译kernel时需要把CONFIG_DEBUG_FS置成yes。

典型的挂载debugfs文件系统命令:

mount -t debugfs none /sys/kernel/debug

3、sysfs

sysfs 是一个基于内存的文件系统, 同 devfs、 proc 文件系统一样,称为虚拟文件系统; 它的作用是将内核中设备的一些属性、数据以文件的方式导出到应用空间,这些文件称为属性文件,读这些属性文件就表示读取设备的属性信息,相反写属性文件就表示对设备的属性进行设置、以控制设备的状态。

sysfs 文件系统把连接在系统上的设备和总线组织成为一个分级的文件、 展示设备驱动模型中各组件的层次关系。 sysfs 提供了一种机制,可以显式的描述内核对象, 用来导出内核对象(例如一个硬件设备)的数据、属性到用户空间,以文件目录结构的形式为用户空间提供对这些数据、属性的访问支持。 表 16.1.1 描述了内核对象、对象属性及对象间关系在用户空间 sysfs 中的的表现:
在这里插入图片描述
/sys/