udev学习总结

来源:互联网 发布:palemoon mac os 编辑:程序博客网 时间:2024/06/10 11:35

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


0 0
原创粉丝点击