为什么我的eth0称为eno16777736?


27

我看过http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/,它描述了一致/可预测的设备命名的原理,然后描述了生成设备名称的规则

 * Two character prefixes based on the type of interface:
 *   en -- ethernet
 *   sl -- serial line IP (slip)
 *   wl -- wlan
 *   ww -- wwan
 *
 * Type of names:
 *   b<number>                             -- BCMA bus core number
 *   ccw<name>                             -- CCW bus group name
 *   o<index>                              -- on-board device index number
 *   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
 *   x<MAC>                                -- MAC address
 *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
 *                                         -- PCI geographical location
 *   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
 *                                         -- USB port number chain

假设我有设备eno16777736:为什么叫它?这是一张以太网卡,我知道了。但是我如何才能自己回到该接口的其余名称?

我检查了一下/sys/class/net/eno16777736,发现:

eno16777736 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/eno16777736

不知道该如何解释,或者不知道我是否可以使用此信息到达eno16777736

更新资料

因此,16777736是设备的acpi_index。根据https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci

What:       /sys/bus/pci/devices/.../acpi_index
Date:       July 2010
Contact:    Narendra K <narendra_k@dell.com>, linux-bugs@dell.com
Description:
        Reading this attribute will provide the firmware
        given instance (ACPI _DSM instance number) of the PCI device.
        The attribute will be created only if the firmware has given
        an instance number to the PCI device. ACPI _DSM instance number
        will be given priority if the system firmware provides SMBIOS
        type 41 device type instance also.

而且,的确:

core@localhost /sys/devices/pci0000:00/0000:00:11.0/0000:02:01.0 $ find . -type f | xargs grep 1677 2> /dev/null
./net/eno16777736/uevent:INTERFACE=eno16777736
./acpi_index:16777736

此外,为了协调来自ifconfigip link与您的设备的输出lspci

$ ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.37  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:fe70:c039  prefixlen 64  scopeid 0x20<link>
        inet6 2601:a:7c0:66:20c:29ff:fe70:c039  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:29:70:c0:39  txqueuelen 1000  (Ethernet)
        RX packets 326  bytes 37358 (36.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 172  bytes 45999 (44.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000 

注意“设备中断19”。从lspci -v,其具有“ IRQ 19”:

02:01.0 Ethernet controller: Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)
        Subsystem: Advanced Micro Devices, Inc. [AMD] PCnet - Fast 79C971
        Physical Slot: 33
        Flags: bus master, medium devsel, latency 64, IRQ 19
        I/O ports at 2000 [size=128]
        [virtual] Expansion ROM at fd500000 [disabled] [size=64K]
        Kernel driver in use: pcnet32

在这里,您还会看到“ Phyiscal插槽33”,的确,有时VMWare会引导ens33作为接口名称获得的VM 。因此,不清楚为什么其他时候选择eno16777736。但是16777736来自acpi_index,而33来自PCI插槽。


像红帽长相固定其RHEL7.3的一面:redhat.com/en/about/blog/...
斯特凡Lasiewski

Answers:


30

en 用于以太网

o 用于机上

16777736是由固件(BIOS / EFI)提供的设备的索引。在处开始索引是合乎逻辑的1。要么,要么您拥有明智的固件和超过1600万个板载设备!但是更有可能的是,您看到该问题在VMware Community上提出了(但没有得到解决)-似乎该数字来自上可能的负溢出acpi_index

您可以使用以下方法查看系统的类似信息udev

udevadm info --name=/dev/eno16777736 --attribute-walk

哈哈有趣。所以我的BIOS是VMWare。奇怪的是,有时VMWare会执行eno16777736,有时会执行ens33。因此,有时是“板载”,有时是“热插拔”?奇怪的。16777736非常接近4096 ^ 2
Dmitry

还是2 ^ 24。所以也许从那里开始...
Dmitry Minkovsky 2014年

2
AHH,所以它是“ acpi_index”。非常感谢你。我真的很想在某些输出中看到该数字!该帖子上的OP没有显示他发出的命令真是可惜,但是我敢肯定我可以为此使用Google。谢谢
德米特里·明科夫斯基2014年

9

使用VMware?

Unix的Stackexchange网站有一问一答这个问题。看来BIOS正在提供有关NIC的信息。

如果要将其更改为eth0(或其他名称),可以使用udev进行更改。 这是一个方便的指南


是的,VMWare。谢谢,我将检查您的链接!我不需要将其更改为eth0,因为我希望该系统对我而言实际上是可预测的:D。我也曾经ens33使用过VMWare。真的很想知道它是如何选择这些价值观的,以及我自己如何能够将其转化为价值观的。
德米特里·明科夫斯基2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.