Linux
树莓派3B 采用Samba + Cockpit搭建NAS
Linux 修改开机启动 boot splash logos
Linux 下将 .po 文件编译成 .mo 文件
Python 使用 gettext 模块实现国际化
XFCE 桌面优化配置
香橙派3B 使用 WiringOP 读取 MPU6050
香橙派4 LTS 安装 WiringPi
Linux 图形界面切换到 FB 界面
校表仪 tg-timer 算法笔记
Linux 安装 EtherCat Igh
EetherCat Igh 常用指令
树莓派镜像 DIY 制作
树莓派5B 安装64位实时系统 preempt RT 补丁
linux 的 lightdm 桌面管理器下隐藏光标(鼠标)
Linux 上使用 MPD (Music Player Daemon)
Linux 自动化交互式命令行工具 —— expect
Linux GTK 界面开发
Debian系统中修改主机名
使用Python + GTK3.0 开发嵌入式GUI
Raspberry Pi 5修改系统内存分页大小解决安装esp-matter 出现的<jemalloc>: Unsupported systeom page size 错误
树莓派 linux 安装和使用clash 做VPN
树莓派自动挂载硬盘
非控制台或ssh登录用户尝试启动Xorg图形服务器
XFCE4 电源管理器配置管理
Linux PulseAudio 声卡配置和检测
IBUS修改输入法和设置切换快捷键
在 Moode Audio 中实现开机自动启动 `startx`
crontab 任务
树莓派外设耗电检测
linux 终端自动登录
linux创建新用户
linux service通过xinit启动GTK应用程序
Linux 非桌面的图形环境安装和配置
香橙派3b板载音频输出没有声音调试
使用 udev 规则修改权限实现屏幕亮度调节
Linux udev 介绍
鲁班猫4 ubuntu22.04 屏幕背光 udev 自动配置化
ubuntu22.04 动态壁纸配置
使用 udisksctl 的可靠 USB 自动挂载方案(基于 systemd-run)
通过udev规则U盘自动挂载
OpenWRT 磊科N60pro路由器刷机
本文档使用 MrDoc 发布
-
+
首页
Linux udev 介绍
以下是关于 Linux udev 的详细介绍及学习资料推荐,结合核心概念、工作原理、配置方法与应用场景,并附权威参考资料: 🔧 一、udev 的核心概念 定义与角色 udev(Userspace Device Manager)是 Linux 内核 2.6+ 版本的动态设备管理器,负责在用户空间管理 /dev 目录下的设备节点。它取代了早期的 devfs 和 hotplug,实现以下功能: 动态创建设备文件:仅在设备连接时生成节点,避免 /dev 目录冗余。 自定义设备命名:通过规则为设备提供固定名称(如 /dev/my_disk),不依赖内核分配顺序。 权限与所有权控制:按需设置设备文件的访问权限、所有者和用户组。 事件触发脚本:在设备插入/移除时执行自定义操作(如挂载存储设备)。 与内核的协作 udev 通过监听内核的 uevent 事件(通过 netlink 套接字)获取设备热插拔信息,并依据规则响应操作。 ⚙️ 二、工作原理与流程 事件处理流程: graph LR A[内核检测设备变化] --> B(发送 uevent 到用户空间) --> C[udev 守护进程 udevd] --> D{匹配 /etc/udev/rules.d/*.rules} --> E[执行规则:创建设备节点/设置权限/触发脚本] 关键环节:规则匹配基于设备属性(如 SUBSYSTEM、ACTION、ATTRS 等)。 规则文件机制: 位置:/etc/udev/rules.d/ 或 /lib/udev/rules.d/。 优先级:文件名以数字开头,数字越小优先级越高(如 10-myrule.rules 优先于 99-default.rules)。 语法结构: ACTION"add", SUBSYSTEM"block", KERNEL"sd[a-z]", ATTRS{idVendor}"1234", NAME="my_disk", MODE="0660" 匹配键(条件):ACTION, KERNEL, ATTRS{...} 等。 赋值键(操作):NAME(设备名)、SYMLINK(符号链接)、RUN(执行脚本)等。 <center> 常用键 作用 KERNEL 匹配内核设备名(如 sda*) SUBSYSTEM 设备子系统(如 usb/block) ENV{key} 环境变量匹配 RUN+="/path/cmd" 执行命令(需短时完成,否则被终止) TAG+="systemd" 与 systemd 集成时触发服务 </center> 🛠️ 三、核心应用场景 固定设备名称 为 USB 设备指定持久名称,避免因插入顺序变化导致名称变动(如 /dev/backup_drive): ACTION"add", SUBSYSTEM"block", ATTRS{serial}=="ABC123", NAME="backup_drive" 自动化挂载存储设备 插入 U 盘时自动挂载到指定目录: ACTION"add", SUBSYSTEM"block", ENV{ID_FS_TYPE}=="vfat", RUN+="/bin/mount /dev/%k /mnt/usb" 权限精细化控制 限制摄像头仅允许 video 组访问: SUBSYSTEM=="video4linux", GROUP="video", MODE="0660" 触发后台服务 设备插入时启动自定义服务(需结合 systemd): ACTION"add", SUBSYSTEM"usb", TAG+="systemd", ENV{SYSTEMD_WANTS}="my-service.service" ⚠️ 四、常见问题与解决 问题 原因 解决方案 规则未生效 语法错误/优先级冲突 使用 udevadm test /sys/path/to/device 调试规则 设备节点权限不足 规则中 MODE 或 GROUP 设置错误 检查规则并确保用户属于目标组(如 sudo usermod -aG video $USER) 长时间命令被终止 RUN 指令超时 改用 systemd-run 创建临时服务:<br>RUN+="/bin/systemd-run --unit=my-task /path/long-script.sh" 📚 五、学习资料推荐 官方文档与权威指南: https://www.kernel.org/doc/html/latest/admin-guide/udev/index.html:内核官方文档,涵盖原理与API。 man udev 与 man udevadm:命令行工具手册(系统内置)。 规则编写教程: https://www.reactivated.net/writing_udev_rules.html :规则语法详解与案例。 https://www.linuxjournal.com/article/6735 :Linux Journal 经典文章。 集成与进阶: https://www.freedesktop.org/wiki/Software/systemd/integrated-udev/:systemd 与 udev 协作机制。 https://lwn.net/Articles/15776/:深入内核设备管理逻辑。 中文资源: https://www.jinbuguo.com/systemd/udev.html :金步国翻译的权威手册。 https://blog.csdn.net/weixin_33860528/article/details/94553965 :CSDN 实践总结。 💎 总结 udev 是 Linux 设备管理的核心组件,通过动态响应硬件事件、灵活规则配置和深度系统集成,实现了设备节点的自动化管理。掌握 udev 规则编写与调试技巧,可大幅提升设备管理效率(如固定设备名、权限控制、热插拔脚本)。建议从官方文档入手,结合实践案例逐步深入。
qingkai
2025年5月30日 10:56
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码