
devtmpfs in Linuxsysfs 和 /devlinux kernel 在启动阶段后期分析设备树匹配相应的driver在用sysfs构建系统的设备和驱动的连接和分类信息。在sysfs devices下会有设备major 和minor信息。/dev目录下是系统中所有的设备节点设备节点就是设备文件操作设备文件就是操作具体的设备。设备文件分为字符设备和块设备文件。创建这些文件的方式在古早时期就是mknod 命令它参数就是设备文件名称和major minor号。简单来说sysfs是系统驱动和设备信息管理和展示的虚拟文件系统。/dev 是所有设备文件存放的目录。他们之间的关系是设备文件的major minor 号可以从sysfs中找到。/dev 下设备文件是何时创建的在没有devtmpfs时系统的启动必须的设备文件在制作文件系统时用mknod 或者makedevs创建设备的major 和minor 信息只有通过以下方式获得获取方式查 内核官方文档 Documentation/admin-guide/devices.txt查 现有 /dev 节点 (ls -l /dev)查 驱动源码或使用老系统的 MAKEDEV 脚本其他设备节点在系统启动后由udev/mdev 这个用户程序扫描sysfs 挂载目录自动在/dev下创建。系统支持的热插拔设备如SDCARD, usb 设备也是由udev支持设备文件节点自动创建。devtmpfsdevtmpfs 的出现解决了在系统启动前必须手动创建设备节点的问题。系统启动必须的设备和其他设备只要设备和驱动匹配成功在启动阶段就在devtmpfs中创建好了相应的节点。在启动之后也不需要udev这样的用户程序去自动创建节点。下边是devtmpfs 和sysfs的对比sysfs设备和内核对象的“信息树”挂载点通常挂载在 /sys本质虚拟文件系统VFS由内核提供用来暴露内核内部数据结构给用户空间。作用展示 设备、驱动、总线、模块 等内核对象的层次结构。提供 只读或可写属性文件用户空间程序可以读取设备状态或写入配置。特点只提供信息不直接提供设备节点。例如ls/sys/class/net/ls/sys/block/cat/sys/class/net/eth0/address这些都是 内核对象属性而不是 /dev 下的设备文件。devtmpfs自动生成设备节点的文件系统挂载点通常挂载在 /dev本质虚拟文件系统由内核自动创建 设备节点character/block devices。作用在内核探测到硬件设备时自动创建对应的 /dev 节点。解决了以前用户空间工具如 mdev 或 udev手动创建设备节点的需求。特点设备节点的 主次设备号 和 类型 从内核获取。可以配合 udev 动态设置权限、符号链接等。两者的关系特性sysfsdevtmpfs类型虚拟文件系统信息树虚拟文件系统设备节点树挂载点/sys/dev内容内核对象信息只读或可写属性真实设备节点字符/块设备自动生成内核创建对象信息内核创建节点用户空间依赖用户可以读取/写入配置用户空间通常用 udev 进一步管理关键点devtmpfs 的生成依赖 内核已经探测到的设备对象。这些设备对象信息本身就是在 sysfs 中体现的例如内核探测到的 tty 设备/sys/class/tty/tty0 → 内核对象信息/dev/tty0 → devtmpfs 创建的字符设备节点可以理解为sysfs 提供“设备对象信息”devtmpfs 基于这些信息自动生成“对应的 /dev 节点”devtmpfs 的内核支持需要开启CONFIG_DEVTMPFSyCONFIG_DEVTMPFS_MOUNTy这两个选项。