Linux下的sysfs与udev的关系是什么?
sysfs
sysfs 把连接在系统上的设备和总线组织成为一个分级的文件,它们可以被从用户
的空间存取到。
简单介绍sysfs文件系统,您可能想知道 sysfs 是怎么认出系统中存在的设备以及应
该使用什么设备号。对于已经编入内核的驱动程序,当被内核检测到的时候,会直接
在 sysfs 中注册其对象;对于编译成模块的驱动程序,当模块载入的时候才会这样做
。一旦挂载了 sysfs 文件系统(挂载到 /sys),内建的驱动程序在 sysfs 注册的数据就可以被用户空间的进程使用,并提供给 udev 以创建设备节点。
1. sysfs的挂载点是/sys目录, sysfs是一个虚拟的文件系统(还有其它的虚拟文件
系统,例如usbfs和procfs),sysfs导出了内核的数据结构。
2. /sys/dev/ 和/sys/devices是sysfs按面向对象管理的思想来组织,sysfs最主要是用来描绘Linux kernel 2.6中的设备驱动模型,用户态的后台程序(udev)会动态地周期性的扫描/sys目录中的属性项来自动管理设备文件(也称为设备节点),从而在/dev目录会建立或者删除对应的设备文件。
udev
udev是一种工具,它能够根据系统中的硬件设备的状况动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下,使用udev 后,在/dev下面只包含系统中真实存在的设备。它于硬件平台无关的,位于用户空间,需要内核sysfs和tmpfs的支持,sysfs为udev提供设 备入口和uevent通道,tmpfs为udev设备文件提供存放空间。
在unix和类unix系统中,硬件设备可以通过/dev目录下的特殊文件进行访问,这些文件又被称为设备文件或设备节点。通过操作普通文件一样读写这些文件可以利用内核设备驱动程序与硬件设备通信,而这个过程不是读写磁盘上的数据,网上有许多描述/dev目录下文件细节的资源。以前,这些特殊文件是在系统安装的时候通过mknod命令创建的,最近几年,linux系统开始使用udev来在运行时管理/dev下的设备文件。如udev将在设备被检测到时创建设备文件并在设备移除时删除这些文件,包括热插拔设备。因此,/dev目录下的大多数设备文件只在设备的存续期内存在于系统中。udev根据sysfs向用户空间导出的消息来建立设备文件。
参考链接:https://blog.csdn.net/u012590688/article/details/46485657