Linux-笔记 udev机制介绍

目录

前言

概念

规则文件

规则文件的命名

规则文件的语法 

匹配条件

赋值指令

例子


前言

        由于之前利用udev机制实现了一个自动配置某功能的项目,所以这里做一下笔记总结,什么是udev?怎么用?

概念

        udev其实是linux系统中一个设备管理机制,负责在设备连接与断开的时候动态去创建与删除设备节点,并管理设备的命名和权限。当有设备插入或移除的时候,内核会产生“uevent”消息,这些消息会通过 “netlink”套接字发送给用户空间的udev,具体会有一个udevd来监听,它是udev的守护进程。

规则文件

        udev使用一组规则文件来匹配设备信息,并决定如何处理这些设备,规则文件一般位于/etc/udev/rules.d与/lib/udev/rules.d/内,具体为:                     

  • /etc/udev/rules.d:用户自定义规则文件。
  • /lib/udev/rules.d:系统默认的规则文件。
规则文件的命名

规则文件通常以数字开头,数字越小优先级越高。命名格式一般为:

数字-xxx.rules
如:
20-usb0.rules //优先级高
100-usb1.rules //优先级低
规则文件的语法 

规则文件有专门的语法,通常由匹配条件和赋值指令组成,基本格式如下:

匹配条件... , 赋值指令...
·匹配条件:用于筛选符合条件的设备属性。
·赋值指令:用于指定对匹配设备进行的操作
匹配条件

        常用的匹配条件,特别说明的是,编写规则文件只需要提供足够具体的匹配条件来唯一标识目标设备。udev会根据这些条件在文件系统中查找相应设备,并应用匹配的规则。

// ACTION:匹配事件类型(add、remove、change)
ACTION=="add"

// DEVNAME:匹配设备节点名称
DEVNAME=="/dev/sda"


// KERNEL:匹配内核设备名称
KERNEL=="sda*"


// SUBSYSTEM:匹配设备子系统名称
SUBSYSTEM=="usb"


// ATTR{key}:匹配设备属性
ATTR{idVendor}=="1234"   //vid厂商id
ATTR{idProduct}=="5678"  //pid产品id


// ENV{key}:匹配环境变量
ENV{ID_USB_DRIVER}=="usb-storage"
赋值指令

        常见的赋值指令,run指令是一个很好用的指令,我们可以利用run指令,当我们插上一些设备后让系统自动跑一些脚本去配置功能。

//NAME:设置设备节点名称
NAME="mydevice"

//SYMLINK:创建符号链接
SYMLINK+="mydevice"

//MODE:设置设备节点权限
MODE="0666"

//OWNER:设置设备节点所有者
OWNER="username"

//GROUP:设置设备节点所属组
GROUP="groupname"

//RUN: 指定设备事件触发的程序或脚本
RUN+="/path/to/script.sh"
例子
ACTION=="add", ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0901", RUN+="/usr/bin/inserted.sh 2c7c 0904 %k"
  • ACTION=="add":表示当有设备添加时触发该规则。
  • ATTRS{idVendor}=="2c7c":匹配设备的厂商 ID(Vendor ID),即 2c7c
  • ATTRS{idProduct}=="0904":匹配设备的产品 ID(Product ID),即 0904
  • RUN+="/usr/bin/usb-EC200G-inserted.sh 2c7c 0904 %k":当上述条件匹配时,运行指定的脚本 /usr/bin/inserted.sh,并传递厂商 ID、产品 ID 及设备名称(使用 %k 变量)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值