飞行日志
常用链接
韭菜搞钱
三省吾身
知行合一
✨使用指北-020-udev规则
type
status
date
slug
summary
tags
category
icon
password
简介
udev是kernel 2.6系列的设备管理器,可以通过cat /proc/version或者uname -a来查看内核版本。主要是为了代替devils和Linux早期版本的hotplug功能。在添加或者删除硬件时,处理/dev目录以及所有用户空间的行为。它不能在内核2.6.13以下版本运行,于2012年4月份被合并至systemd。
优点
相比于devfs,对于使用udev有以下特点。
- 支持设备的固定命名。
- udev完全作用在用户空间执行,不像devfs在内核空间命名。
这样做的好处是:udev将命名策略从内核中移除,在节点创建之前,可以通过任意程序在设备属性中,为设备命名。
运行方式
udev以守护进程的方式运行于Linux,并在监听新设备初始化或者从系统中移除时,内核(通过netlink socket)发出uevent。系统提供了一套规则用于匹配可发现的设备和属性的导出值。匹配规则可能命名并创建设备节点,并运行配置程序来对设备进行设置。
架构
libdev:用来获取设备信息。
udevd:守护进程,用于用户空间,管理虚拟/dev
udevadm: 管理命令,用来诊断出错。
udev工作流程图
配置文件
目前配置文件并不是 /etc/udev/udev.conf文件,而是/etc/init/udev.conf。
默认的规则如下:
以上默认规则完全满足日常使用,如有更进一步的需求,可以选择性的加入如下配置:
常用命令
这里介绍几个常用命令:
- udevinfo
udevinfo可以查询udev数据库里的设备信息。例如,使用udev查看sda的model和size信息。
- udevtest
udevtest 会针对一个设备,在不需要uevent触发的情况下,模拟运行udev一次,并输出查询规则的文件过程、所执行的行为、规则文件的执行结果。一般使用该命令对规则进行测试。
- start_udev
重启udev的守护进程,一般是修改过规则之后希望理解生效。注意,该命令没有标注输出,相关信息都会按照udev.conf设置,并由syslog记录。