使用指北-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记录。
中年码农的困境log-001-我与计算机