UDEV规则的匹配键及RAW是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
udevadm命令可以看到具体信息udevadm info –attribute-walk –name=/dev/sda
UDEV涉及的一些常见目录信息
ll /sys/class/block/
ll /dev/raw
ll /dev/mapper
ll /dev/block
ll /dev/disk/by-path
ll /dev/disk/by-id
ll /dev/disk/by-uuid
UDEV规则的匹配字段属性
ACTION 匹配事件的动作名,例如:add( 添加设备 )、remove( 删除设备 )。
DEVPATH 匹配事件的设备相对路径。例如:sda的devpath是/dev/sda,sda2的devpath是/dev/sda2。
KERNEL 匹配事件的设备名字,比如sdb,比如sd*表示任意SCSI磁盘设备
NAME 匹配网络接口或者设备节点的名字。NAME只有在前面的规则赋值之后才可以使用。
SYMLINK 匹配设备节点符号链的名字。SYMLINK 只有在前面的规则赋值之后才可以使用。可以有多个 symlinks,只需要匹配一个。
SUBSYSTEM 匹配设备子系统
DRIVER 匹配设备在devpath里的设备驱动名称,例如:ide-cdrom。
BUS 设备在devpath 里的总线名称,例如:usb。
ID 设备在 devpath 里的识别号
ENV{key} 环境变量。ENV{MAJOR}=="8"和ENV{MINOR}=="1"表示sda1
PROGRAM 执行一个程序。如果程序成功返回, key 为 true。设备的属性被放在被执行进程的环境变量中,该程序的输出为 stdout, 可以从 RESULT 这个 key 读取。
RESULT 匹配最近一次 PROGRAM 调用的返回字符串。它应该在 PROGRAM 之后使用。
OWNER 匹配设备文件的属组
GROUP 匹配设备文件所在的组。
MODE 匹配设备文件的权限,采用8进制
MAJOR 表示磁盘号
MINOR 表示磁盘下面的分区号
UDEV规则匹配字段属性和可调用的替换操作符
$kernel, %k:设备的内核设备名称,例如:sda、cdrom。
$number, %n:设备的内核号码,例如:sda3 的内核号码是 3。
$devpath, %p:设备的 devpath路径。
$id, %b:设备在 devpath里的 ID 号。
$sysfs{file}, %s{file}:设备的 sysfs里 file 的内容。其实就是设备的属性值。
$env{key}, %E{key}:一个环境变量的值。
$major, %M:设备的 major 号。
$minor %m:设备的 minor 号。
$result, %c:PROGRAM 返回的结果。
$parent, %P:父设备的设备文件名。
$root, %r:udev_root的值,默认是/dev/。
$tempnode, %N:临时设备名。
%%:符号 % 本身。
$$:符号 $ 本身。
ENV{key}的特别说明
linux内核中表示不同的设备是通过major 和minor number实现的,通过major和minor Number来加载相应的驱动程序。
sda和sdb的major number都是8,sda的minor number是0开始, sdb的minor number 是16开始。
ENV{major} major表示不同的设备类型
ENV{minor} minor表示同一个设备的的不同分区
ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
raw命令(以前RHEL4版本用的多,现在RHEL6用的少,不过RHEL6也是可以使用这样的方式)
可以直接通过raw命令绑定裸设备,不过重启后就丢失了,需要写在/etc/sysconfig/rawdevices文件中如/dev/raw/raw1 /dev/sdb1
[root@localhost ~]# ll /dev/raw
总用量 0
crw-rw—-. 1 root disk 162, 0 6月 23 16:58 rawctl
[root@localhost ~]# raw
Usage:
raw /dev/raw/rawN
raw /dev/raw/rawN /dev/
raw -q /dev/raw/rawN
raw -qa
[root@localhost ~]# raw /dev/raw/raw1 /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
[root@localhost ~]# ll /dev/|grep sdb
brw-rw—-. 1 root disk 8, 16 6月 23 16:59 sdb
brw-rw—-. 1 root disk 8, 17 6月 23 16:59 sdb1
[root@localhost ~]# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
[root@localhost ~]# raw -q /dev/raw/raw1
/dev/raw/raw1: bound to major 8, minor 17
[root@localhost ~]# ll /dev/raw
总用量 0
crw-rw—-. 1 root disk 162, 1 6月 23 17:25 raw1
crw-rw—-. 1 root disk 162, 0 6月 23 16:58 rawctl
[root@localhost ~]# cat /etc/issue
CentOS release 6.5 (Final)
Kernel /r on an /m
关于UDEV规则的匹配键及RAW是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/200113.html