udev学习总结

udev规则文件的路径:

/etc/udev/rules.d/

/lib/udev//rules.d/

udev的规则获取顺序,/etc/udev/rules.d/ /lib/udev//rules.d/ 。并且按照数据依次读取。


比如:

[root@localhost rules.d]# ls
60-fprint-autosuspend.rules  70-persistent-net.rules    98-kexec.rules
60-pcmcia.rules              90-alsa.rules              99-fuse.rules
60-raw.rules                 90-hal.rules
70-persistent-cd.rules       97-bluetooth-serial.rules


有些规则文件是通过rpm包安装生成的,有些是由系统运行过程中生成的。

[root@localhost rules.d]# rpm -qf 60-raw.rules
util-linux-ng-2.17.2-12.9.el6.x86_64
[root@localhost rules.d]# rpm -qf 70-persistent-net.rules
file /etc/udev/rules.d/70-persistent-net.rules is not owned by any package


udev的规则文件处理:

规则文件中的每一行包括多个key value的组合,通过,分割。key value分为两种类型,match匹配类型和assign赋值类型。

如果所有的匹配类型都满足的话,则执行赋值类型。

对于匹配参数,可以获取父设备的参数进行匹配,但是如果是组合参数,只能匹配同一个父设备。

udev依次读取所有的udev规则文件,匹配进行处理。


介绍一些写udev规则需要使用的命令:

查看对应设备udev信息。

udevadm info --query=path --path=/sys/class/net/eth0/ --attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:04.0/0000:0b:00.0/0000:0c:04.0/net/eth0':
    KERNEL=="eth0"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{addr_assign_type}=="0"
    ATTR{addr_len}=="6"
    ATTR{dev_id}=="0x0"
    ATTR{ifalias}==""
    ATTR{iflink}=="2"
    ATTR{ifindex}=="2"
    ATTR{features}=="0x149a3"
    ATTR{type}=="1"
    ATTR{link_mode}=="0"
    ATTR{address}=="00:18:82:0a:f6:b6"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{operstate}=="down"
    ATTR{mtu}=="1500"
    ATTR{flags}=="0x1002"
    ATTR{tx_queue_len}=="1000"

  looking at parent device '/devices/pci0000:00/0000:00:04.0/0000:0b:00.0/0000:0c:04.0':
    KERNELS=="0000:0c:04.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="tg3"
    ATTRS{vendor}=="0x14e4"
    ATTRS{device}=="0x1678"
    ATTRS{subsystem_vendor}=="0x14e4"
    ATTRS{subsystem_device}=="0x1678"
    ATTRS{class}=="0x020000"
    ATTRS{irq}=="18"
    ATTRS{local_cpus}=="0f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{modalias}=="pci:v000014E4d00001678sv000014E4sd00001678bc02sc00i00"
    ATTRS{numa_node}=="-1"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00/0000:00:04.0/0000:0b:00.0':
    KERNELS=="0000:0b:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS==""
    ATTRS{vendor}=="0x1166"
    ATTRS{device}=="0x0103"
    ATTRS{subsystem_vendor}=="0x0000"
    ATTRS{subsystem_device}=="0x0000"
    ATTRS{class}=="0x060400"
    ATTRS{irq}=="0"
    ATTRS{local_cpus}=="0f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{modalias}=="pci:v00001166d00000103sv00000000sd00000000bc06sc04i00"
    ATTRS{numa_node}=="-1"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:04.0':
    KERNELS=="0000:00:04.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="pcieport"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x65e4"
    ATTRS{subsystem_vendor}=="0x0000"
    ATTRS{subsystem_device}=="0x0000"
    ATTRS{class}=="0x060400"
    ATTRS{irq}=="26"
    ATTRS{local_cpus}=="0f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{modalias}=="pci:v00008086d000065E4sv00000000sd00000000bc06sc04i00"
    ATTRS{numa_node}=="-1"
    ATTRS{enable}=="2"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""


查看udev事件:

udevadm monitor --env


查看pci设备树形结构

[root@localhost ~]# lspci -t -v
-[0000:00]-+-00.0  Intel Corporation 3rd Gen Core processor DRAM Controller
           +-02.0  Intel Corporation 3rd Gen Core processor Graphics Controller
           +-14.0  Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller
           +-16.0  Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1
           +-16.3  Intel Corporation 7 Series/C210 Series Chipset Family KT Controller
           +-19.0  Intel Corporation 82579LM Gigabit Network Connection
           +-1a.0  Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
           +-1b.0  Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller
           +-1c.0-[02]--
           +-1c.1-[03]----00.0  Intel Corporation Centrino Ultimate-N 6300
           +-1c.2-[04-0b]----00.0  Ricoh Co Ltd MMC/SD Host Controller
           +-1c.4-[0c-3f]--
           +-1d.0  Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
           +-1f.0  Intel Corporation QM77 Express Chipset LPC Controller
           +-1f.2  Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode]
           \-1f.3  Intel Corporation 7 Series/C210 Series Chipset Family SMBus Controller


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值