Loading... 准备搞一个linux系统下的BPI-BIT(CH340)板子插入检测和自动烧录,开始接触udev,之前也算是接触过,当时板子的串口芯片介入系统,普通用户权限不够,然后自动检测插入后更改读写权限。 <!--more--> 关于udev的介绍,我看了一篇文章:[Linux┊详解udev](http://www.cnblogs.com/sopost/archive/2013/01/09/2853200.html) **udev 键/值对操作符** |操作符|匹配或赋值|解释| |:---:|:------:|:-----| | == |匹配 |相等比较| | != |匹配 |不等比较| | = |赋值 |分配一个特定的值给该键,他可以覆盖之前的赋值。 | | += |赋值 |追加特定的值给已经存在的键 | | := |赋值 |分配一个特定的值给该键,后面的规则不可能覆盖它。| 这有点类似我们常见的编程语言,比如C语言。只是这里的键一次可以处理多个值。有一些键在udev规则文件里经常出现,这些键的值可以使用通配符(*,?,甚至范围,比如[0-9]),这些常用键列举如下: **常用udev键** |键 |含义 | |:------------:|:-----------------------------| |ACTION |一个时间活动的名字,比如add,当设备增加的时候| |KERNEL |在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备| |DEVPATH |内核设备录进,比如/devices/*| |SUBSYSTEM |子系统名字,比如sound,net| |BUS |总线的名字,比如IDE,USB| |DRIVER |设备驱动的名字,比如ide-cdrom| |ID |独立于内核名字的设备名字| |SYSFS{value} |sysfs属性值,他可以表示任意| |ENV{key} |环境变量,可以表示任意| |PROGRAM |可执行的外部程序,如果程序返回0值,该键则认为为真(true) |RESULT |上一个PROGRAM调用返回的标准输出。| |NAME |根据这个规则创建的设备文件的文件名。注意:仅仅第一行的NAME描述是有效的,后面的均忽略。 如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。| |SYMLINK |根据规则创建的字符连接名| |OWNER |设备文件的属组| |GROUP |设备文件所在的组。| |MODE |设备文件的权限,采用8进制| |RUN |为设备而执行的程序列表| |LABEL |在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务)| |GOTO |跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTO| |IMPORT{ type} |导入一个文件或者一个程序执行后而生成的规则集到当前文件| |WAIT_FOR_SYSFS|等待一个特定的设备文件的创建。主要是用作时序和依赖问题。| |PTIONS |特定的选项: last_rule 对这类设备终端规则执行;ignore_device 忽略当前规则; ignore_remove 忽略接下来的并移走请求。all_partitions 为所有的磁盘分区创建设备文件。| 这里面比较详细的介绍了udev的由来,也介绍了几种基本用法,但是它里面提到了查看设备信息,以便后面为设备适配做准备。 ```shell udevinfo -a -p ... 但是经过尝试和查询,在debian系发行版下面这个命令改为如下形式 udevadm info -a -p ``` 并且`-p`参数用起来不是很方便,需要提供在`/sys/`路径下面的地址,所以可以选择使用`-n`但是,可以省略,直接使用`/dev/*`这样的设备节点或者软连接的名字。 关于`udevadm info`的详细信息,可以使用`-h`参数查看帮助文件,可以看[udevadm中文手册](http://www.jinbuguo.com/systemd/udevadm.html) Last modification:November 3, 2018 © Allow specification reprint Like 0 If you think my article is useful to you, please feel free to appreciate