前言
udev
是Linux系统中的一个设备管理器,它可以根据设备的属性动态地创建设备文件,并执行特定的命令,通常用来处理热插拔。
udev引入
Linux 传统上使用 mknod
静态设备创建的方法,在 /dev/
下创建了大量的节点。比如我想创建一个 /dev/sda3
块设备节点,主设备号是8,此设备号是0,如下操作
这样静态创建设备节点需要知道主设备号和次设备号,于是 Linux 2.6 内核是开始引入可在用户空间执行的 udev
,允许用户不必再关心主、次设备号, 在系统检测到设备的热插拔(hotplug)
事件才动态的在/dev
下建立和删除相应的设备节点文件。简言之,udev
的主要功能是实时动态的创建和删除设备节点。
udev规则介绍
udev
使用一组规则来定义设备的特性和行为。这些规则存放在/etc/udev/rules.d/
目录下的规则文件中,这些文件命名"XX-名称 .rules
",其中"XX"是文件的优先级,按顺序执行。名字可以是任何有描述性的名称。
下面是 udev
的一套规则
ACTION=="action", KERNEL=="kernel", ATTR{attribute}=="value", ... , RUN{command}
以下是 udev
规则中各个部分的详细说明:
-
ACTION:触发规则的事件类型,例如
add
、remove
、change
等。 -
KERNEL:设备的内核名称,通常是
/dev
下设备文件的名称,不包括/dev/
前缀。 -
ATTR{attribute}:设备的属性,通常与
sysfs
文件系统中的属性相对应。 -
VALUE: