Linux kernel udevadm用于检索设备属性

Linux kernel udevadm用于检索设备属性,linux-kernel,driver,udev,Linux Kernel,Driver,Udev,操作系统:Ubuntu 16.04 以太网芯片:英特尔I210 以太网驱动程序:igb 我已经查看了我的Ethernet设备属性。 通过键入命令 udevadm info -p -a /sys/class/net/eth0 我得到了以下信息: looking at device '/devices/pci0000:00/0000:00:1c.2/0000:02:00.0/net/eth0': KERNEL=="eth0" SUBSYSTEM=="net" DRIVER=

操作系统:Ubuntu 16.04

以太网芯片:英特尔I210

以太网驱动程序:igb

我已经查看了我的Ethernet设备属性。 通过键入命令

udevadm info -p -a /sys/class/net/eth0
我得到了以下信息:

looking at device '/devices/pci0000:00/0000:00:1c.2/0000:02:00.0/net/eth0':
    KERNEL=="eth0"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{mtu}=="1500"
    ATTR{type}=="1"
    ATTR{netdev_group}=="0"
    ATTR{flags}=="0x1003"
    ATTR{speed}=="1000"
    ATTR{dormant}=="0"
    ATTR{addr_assign_type}=="0"
    ATTR{dev_id}=="0x0"
    ATTR{duplex}=="full"
    ATTR{gro_flush_timeout}=="0"
    ATTR{iflink}=="2"
    ATTR{addr_len}=="6"
    ATTR{address}=="0c:c4:7a:12:b4:e4"
    ATTR{operstate}=="up"
    ATTR{carrier_changes}=="2"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{tx_queue_len}=="1000"
    ATTR{dev_port}=="0"
    ATTR{ifalias}==""
    ATTR{ifindex}=="2"
    ATTR{link_mode}=="0"
    ATTR{carrier}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1c.2/0000:02:00.0':
    KERNELS=="0000:02:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="igb"
    ATTRS{irq}=="18"
    ATTRS{subsystem_vendor}=="0x15d9"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x020000"
    ATTRS{index}=="1"
    ATTRS{label}==" Intel Ethernet controller#1 i210"
    ATTRS{driver_override}=="(null)"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
    ATTRS{device}=="0x1533"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}=="1"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0x1533"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="1"
以下是一些问题:

  • “设备”和“父设备”之间的关系是什么
  • 这些属性是否从固件(设备上)或BIOS或驱动程序中检索
  • 是否可以修改属性值
  • 我这样问是因为你可能知道,Ubuntu 15.10和更新版本采用了可预测网络接口名称的规则。对于车载设备,它将被识别为“
    enox
    ”,
    x
    表示其索引

    不幸的是,在我的主机上,我的两个以太网具有相同的索引,这导致了竞争条件。如果我没有恢复到原来的网络接口命名规则,引导将需要大约4分钟


    我怀疑是固件问题。

    1。在本例中,eth0只是实际PCI设备的子设备。2.大多数情况下,属性既不是来自BIOS,也不是来自卡固件,尽管可能是其中的一些。3.取决于驱动程序和网络框架。4.您的问题是特定于udev的,驱动程序命名是在udev中完成的,这几乎是与分布无关的行为。你找错地方了。@0andriy是第二点,那么这些属性是从哪里来的呢?关于第四点,我同意你的看法。但是,对于udev处理接口名称的情况,我发现了以下信息:/**可预测的网络接口设备名称基于:*-固件/bios提供了板载设备的索引号,这就是为什么我怀疑索引会导致系统启动缓慢。@0是否有进一步的讨论?否,我想你可能会在谷歌上搜索一些答案。我只是没有看到任何真正的问题。