udev解释

UDEV规则详解

什么样的情况下会使用到udev

一般来说x86的架构是最需要使udev规则的,因为x86架构对于驱动设备的管理上面会有一定的随机性,这个随机性的意思就是,假设在x86架构中有很多个物理的i2c通道,但是呢,这个物理的i2c通道最后映射成软件os上面的i2c通道的bus号是会变化的,并不是一层不变的,这个就是因为x86架构的驱动加载的方式和架构的问题,假设是arm上面,那么这些东西都是可以在设备树上面固定下来,这样在加载驱动的时候,其i2c的bus号就会固定,(当然arm上也有需要使用的情况),但是x86架构在加载同一种驱动的时候,就会有一个先来先服务的原则,也就是说那个先加载成功,那个物理通道就会将这个i2c的号码先占用了,这样就会有一定的不确定性,所以主要有以下的情况会用到:
1.不确定的设备映射。特别是那些动态设备
2.没有足够的主/辅设备号
3. /dev目录下文件太多
4. 命名不够灵活
5. 内核内存使用: devfs特有的另外一个问题是,作为内核驱动模块,devfs需要消耗大量的内存

说白了就是想用就用

udev配置文件

udev是一种工具,它能够根据系统中的硬件设备的状况动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下,使用udev后,在/dev下面只包含系统中真实存在的设备。它于硬件平台无关的,位于用户空间,需要内核sysfs和tmpfs的支持,sysfs为 udev提供设备入口和uevent通道,tmpfs为udev设备文件提供存放空间。
主要的udev配置文件是/etc/udev/udev.conf
[root@localhost ~]# cat /etc/udev/udev.conf
# see udev.conf(5) for details
#
# udevd is also started in the initrd. When this file is modified you might
# also want to rebuild the initrd, so that it will include the modified configuration.

#udev_log=info
#children_max=
#exec_delay=
#event_timeout=180
#timeout_signal=SIGKILL
#resolve_names=early

udev的语法

udev的值

$kernel, %k
设备的内核名称
$number, %n
设备在内核中的序号。例如,对于 “sda3” 来说,此值为 “3”
$devpath, %p
设备路径(devpath)。也就是该设备在sysfs文件系统下的相对路径。例如,/dev/sda1 对应的设备路径是 /block/sda/sda1 (一般对应着 /sys/block/sda/sda1 目录)。
$id, %b
被 SUBSYSTEMS, KERNELS, DRIVERS, ATTRS 成功匹配到的设备的设备名称
$driver
被 SUBSYSTEMS, KERNELS, DRIVERS, ATTRS 成功匹配到的设备的驱动名称
$attr{文件}, %s{文件}
在规则匹配成功时, 设备路径(devpath)下"文件"的内容(用于表示设备的属性)。 如果该设备路径下没有此文件,则从先前 KERNELS, SUBSYSTEMS, DRIVERS, ATTRS 匹配的父设备中提取。
如果"文件"是一个软连接, 则一直追踪软连接到最终的实际文件。
$env{属性}, %E{属性}
设备的属性值。例如 “DEVTYPE”, “ID_PATH”, “SYSTEMD_WANTS” 等等。[提示]可以通过 udevadm info --query=property /dev/sda 命令查看 /dev/sda 的所有属性。
$major, %M
设备的主设备号
$minor, %m
设备的次设备号
$result, %c
外部程序 PROGRAM 的输出字符串。 可以使用 “%c{N}” 提取第N个子字符串(以空格为分隔符,从"1"开始计数)。 也可以通过 “%c{N+}”(也就是在数字后附加一个 “+”)提取 从第N个子字符串开始一直到结尾的部分。
$parent, %P
父设备的节点名称
$name
设备的当前名称。如果没有被任何udev规则修改, 那么等于该设备的内核名称。
$links
一个空格分隔的软链接名称列表,这些软链接都指向该设备的节点。 该值仅在两种情况下存在:(1)发生"remove"事件;(2)先前的规则已对 SYMLINK 赋值。
$root, %r
udev_root 的值
$sys, %S
sysfs 文件系统的挂载点
$devnode, %N
设备节点的名称(也就是设备文件的名称)
%%
百分号 “%” 自身
$$
美元符号 “$” 自身

udev的匹配

“==”
(匹配)“等于”
“!=”
(匹配)“不等于”
“=”
(赋值)为键赋予指定的值。 此键之前的值(可能是个列表)将被丢弃。
“+&#

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值