怎样动态识别热插拔的udev机制

  Linux早期,设备文件仅仅是一些带有适当属性集的普通文件。它由mknod命令创建。文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,它首次出现在2.3.46内核中。devfs创建的设备文件是动态的。但是又有很多局限性。于是udev取代了它。

    udev是一个用户空间程序。(它的优势是那些对设备有极端需求的站点如要控制上千个硬盘,和热插拔设备上解决了几个问题,如下文)。

   修改udev配置可以访问外来设备。

   主要的udev配置文件:vi /etc/udev/udev.conf

    udev_root="/dev"

    udev_rules="/etc/udev/rules.d"  //表示udev规则存储的目录。里面的每个文件处理一系列规则来帮助                                                                  //udev分配名字给设备文件以保证被内核识别。

    udev_log="err"

rules.d里面文件各个字符代表的含义:

操作符                                           匹配或赋值                                         解释

==                                                 匹配                                                  相等比较

!=                                                   匹配                                                  不等比较

=                                                    赋值                                                   分配一个特定的值给该键

上面的规则可以覆盖之前的赋值。

+=                                                  赋值                                                   追加特定的值给已经存在的键

:=                                                   赋值                                                   分配一个特定的值给该键

下面的规则不能覆盖

有一些键在udev规则文件经常出现。这些值可以使用通配符(*,?,甚至范围【0-9】),举例如下:

键                                                             含义

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 

具体见https://blog.csdn.net/zhyjunfov/article/details/30252059

猜你喜欢

转载自blog.csdn.net/weixin_39176695/article/details/80078517