mdev 与 udev:嵌入式与桌面 Linux 设备管理对比
核心概念速览
| 特征 | mdev (Mini-udev) | udev (Userspace Device) |
|---|---|---|
| 定位 | 嵌入式系统的轻量级解决方案 | 桌面/服务器系统的标准设备管理器 |
| 大小 | ~10KB (极简) | ~1MB+ (功能完整) |
| 依赖 | Busybox (内置) | systemd (现代系统) 或独立运行 |
| 配置 | /etc/mdev.conf (简单规则) | /etc/udev/rules.d/ (复杂规则系统) |
设计哲学对比
mdev:嵌入式世界的"简约工匠"
内核发现设备 → 发送 uevent → mdev
mdev 读取/etc/mdev.conf → 执行动作
创建/dev 节点、加载固件、执行脚本
特点:事件驱动、同步执行、配置简单
udev:桌面系统的"自动化管家"
内核 uevent → udevd 守护进程 → 规则匹配引擎
并行处理 → 持久化命名 → 动态权限管理
高级功能:设备快照、硬件数据库、热插拔管理
特点:守护进程、异步处理、功能丰富
详细对比表格
| 对比维度 | mdev | udev |
|---|---|---|
| 架构模式 | 直接执行(无守护进程) | 守护进程(udevd) |
| 事件处理 | 同步(阻塞式) | 异步(非阻塞) |
| 规则语法 | 简单正则匹配 | 复杂键值匹配系统 |
| 设备命名 | 固定名称(内核提供) | 持久化命名(by-id, by-path 等) |
| 固件加载 | 支持(手动配置) | 自动固件加载 |
| 热插拔 | 基础支持 | 完整热插拔管理 |
| 权限管理 | 静态(配置文件指定) | 动态(规则可编程) |
| 网络设备 | 不支持 | 支持(与 NetworkManager 集成) |
| 依赖关系 | 几乎无依赖 | systemd/libudev 等 |


