1.11 udev规则介绍
udev规则是Linux系统中用于管理设备节点的一套规则集,它们定义了udev守护进程如何处理特定的硬件设备。udev规则文件通常以.rules
为扩展名,并存放在/etc/udev/rules.d/
目录下。这些规则文件按文件名的ASCII字母顺序进行处理,一旦找到匹配的规则,udev就会根据规则定义的措施对设备进行配置。
udev规则文件的语法相对简单,每条规则由一系列的键值对组成,键值对之间用逗号分隔。规则中的键值对可以分为两类:匹配键(Match)和赋值键(Assign)。
匹配键(Match)
匹配键用于确定规则是否适用于当前处理的设备。它们基于设备的属性来定义,例如设备的内核名称、子系统、总线类型等。只有当所有匹配键都与设备属性匹配时,相应的赋值键才会被应用。
例如:
KERNEL=="sda"
:匹配内核设备名称为sda
的设备。SUBSYSTEM=="block"
:匹配属于block
子系统的设备。DRIVER=="sd"
:匹配由sd
驱动程序控制的设备。
赋值键(Assign)
赋值键用于定义udev如何处理匹配的设备。它们可以设置设备节点的名称、权限、所有者等。
例如:
NAME="mydevice"
:为设备创建一个名为mydevice
的节点。SYMLINK+="special%n"
:为设备创建一个符号链接,名称基于设备的内核编号。OWNER="root"
:将设备节点的所有者设置为root
。GROUP="disk"
:将设备节点的所属组设置为disk
。MODE="0660"
:设置设备节点的权限为0660
。
示例规则文件
以下是一个udev规则的示例:
# 规则文件示例
SUBSYSTEM=="block", KERNEL=="sda", MODE="0660", OWNER="root", GROUP="disk"
这条规则表示,对于内核名称为sda
的块设备,设置其权限为0660
,所有者为root
,所属组为disk
。
规则文件的执行顺序
udev规则文件按照文件名的字母顺序执行。如果有多个规则匹配同一个设备,那么文件名字母顺序靠前的规则将先被应用。如果需要,可以通过在文件名前添加数字前缀来调整规则的执行顺序,例如10-my-custom-rule.rules
。
注意事项
- 规则文件中的注释以
#
开始。 - 规则文件不应该包含空行。
- 一旦规则匹配并应用,udev不会继续读取后续的规则文件。
- 规则文件中的路径和文件名应该使用
%
进行转义,例如SYMLINK+="special%n"
。
通过自定义udev规则,用户可以精细地控制设备节点的创建和管理,从而更好地适应特定的系统需求和使用场景。