eno16777736
在一致的网络设备命名方案下, CentOS 7 或 RHEL 7 的网络接口名称中的“eno”代表什么?
答案1
答案2
嗯。比起“en”和“o”,我更关心“16777736”。
除非你不小心走进了 Google,发现自己坐在一台具有自定义 PCI 架构的服务器上,否则我真的不明白 16777736 是一个可能的值。这可能暗示着一个更严重的问题。
在当前架构下,系统将无法寻址超过 256 个 PCI 总线(每个总线下有 32 个设备,每个设备下最多有 8 个功能)。这也称为 Bus:Device.Function 寻址。现代系统使用 Domain:Bus:Device.Function 来克服 256 条总线的限制。但无论如何,回到你的问题......
你能做一个:
ls -la /sys/class/net | grep eno16777736
如果您看到与以下内容非常相似的内容:
eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1000208:01.0/net/eno16777736
那么我建议你在谷歌发现你在玩弄他们的服务器之前快点跑。
上面的/(0000:1000208:01.0)/是Domain:Bus:Device.Function地址,总线值为“1000208”,是16777736的十六进制表示。但是,“0x100”(256)应该是最大值您可以在“巴士”中使用它。
另一方面,如果“总线”的值低于 0x100,例如:
eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1c:01.0/net/eno16777736
然后,我认为问题与您的 Bios/固件在启动时如何向 udev(systemd) 发送信息有关。要找出潜在的原因,首先检查 udev 返回的值。
通常有三个地方 udev 查询来创建 PIN(可预测接口名称)
- ACPI_DSM
- SMBIOS 表[具体记录类型“插槽”[9],以及类型 41]
- PCI IRQ 路由表
[以该顺序]
我们可以通过以下方式测试(1):
udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi
如果这给你 16777736 那么很可能你的系统不支持支持 ACPI_DSM 所需的 PCI 固件规范 3.1
所以我们现在必须测试(2)。因此,让我们首先检查 SMBIOS 表中的记录类型 41(类型 41 是最相关的):
dmidecode -t 41 | more
如果没有任何显示,或者 SMBIOS 版本低于“2.62”,则意味着 udev 将依赖 PCI IRQ 路由表来创建 PIN。
所以我们应该检查(3)
biosdecode
请密切注意您的最大插槽条目...它应该采用以下形式:
Slot Entry X: ID 00:00, (slot number X| status)
如果 X 是 25,为了论证,您的 NIC 应该位于小于或等于 25 的插槽上。如果不是,udev 将继续引用占位符值 16777736。
在大多数情况下,您可以通过以下方式检查网卡的插槽号:
lspci -bv | grep -i -A10 ether
同样,在大多数情况下,在 BDF (Bus:Device.Function) 中,设备应等于物理端口号(将其从十六进制转换为十进制后)。在其他情况下(如果没有),lspci 将在执行上述 lspci 命令的输出中在单独的行上列出物理插槽。
因此,如果列出的物理插槽编号大于 X(我们在 PCI IRQ 路由表中找到的最大编号),我们很可能已经隔离了该问题。
在这种情况下我能想到5种可能的解决方案......
- 内核黑客攻击...使用新的 PCI IRQ 路由表重建内核。看看/arch/x86/pci/irq.c
[这是我需要找到更好地利用我的时间的解决方案]
- 通过创建新规则将设备映射到不同的名称
经过:
vi /etc/udev/rules.d/70-my-net-names.rules
然后添加以下内容:
ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci",
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}"
[我称之为让我们忽略问题并让事情看起来漂亮的解决方案]
- 您可以将 net.ifnames=0 添加到内核启动选项以完全禁用该功能
[这当然是“如果它坏了,就关掉它,然后在孤独中哭泣”的解决方案](不是真正的解决方案)...
- 如果您碰巧正在运行 VM...VMWare/VirtualBox 等...打开配置文件并将“pciSlotNumber”修改为低于 X 的值。
[但这是一个临时黑客,直到我的软件得到更新的解决方案]
- 买一台新电脑。 [最后是“如果你不能打败他们,加入他们”的解决方案]
答案3
只是为了向以前的答案添加详细信息:
基于接口类型的两个字符前缀:
* en -- ethernet * sl -- serial line IP (slip) * wl -- wlan * ww -- wwan * ib -- Infiniband
名称类型:
* 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>][..]1[i<interface>] -- USB port number chain
来源:http://ask.xmodulo.com/change-network-interface-name-centos7.html