刚刚在一个盒子上安装了 22.04 服务器,该盒子带有一个 Intel I225-V 以太网控制器和四个外部 RJ454 连接器,从左到右标记为 ETH3、ETH2、ETH1、ETH0。lshw -class network
生成以下内容,从中我省略了每个接口相同的所有行:
*-network
bus info: pci@0000:01:00.0
logical name: enp1s0
serial: 60:be:b4:00:7d:e5
resources: irq:22 memory:a1700000-a17fffff memory:a1800000-a1803fff
*-network
bus info: pci@0000:02:00.0
logical name: enp2s0
serial: 60:be:b4:00:7d:e6
resources: irq:23 memory:a1500000-a15fffff memory:a1600000-a1603fff
*-network
bus info: pci@0000:03:00.0
logical name: eno1
serial: 60:be:b4:00:7d:e7
resources: irq:20 memory:a1300000-a13fffff memory:a1400000-a1403fff
*-network
bus info: pci@0000:04:00.0
logical name: enp4s0
serial: 60:be:b4:00:7d:e8
resources: irq:21 memory:a1100000-a11fffff memory:a1200000-a1203fff
我知道第一个接口 enp1s0 是最右边的 RJ45 连接器,因为这是我为 ssh 插入的接口,并且ip a
显示它是唯一具有 IP 地址的接口。
为什么第三个接口会有不同“种类”的逻辑名称?我认为这不会带来任何功能差异,但好奇心驱使我问了这个问题。
编辑以添加:刚刚在 lshw 输出中注意到 eno1 具有最低的 irq 编号。我不知道这是否是对我的问题的提示。
答案1
有可能,芯片组中内置了三个以太网,其中一个是用 pci 到以太网桥创建的。
答案2
我认为这回答了我的问题:
~$ sudo dmesg | grep -i eno1
[ 3.324759] igc 0000:03:00.0 eno1: renamed from eth2
~$ sudo dmesg | grep -i enp1s0
[ 3.139736] igc 0000:01:00.0 enp1s0: renamed from eth0
感谢@Pilot6 在评论我的问题时引导我找到 dmesg。
我想每次启动时都会发生这种情况。内核驱动程序 igc 不喜欢旧的传统“eth”名称。
@Pilot6 还提到,“eno”用于机载设备。lspci
输出表示
DeviceName: Onboard - RTK Ethernet
第三个以太网接口,并且仅有的对于该接口。其他接口的输出中没有该行。所以也许那个接口——在我看来很奇怪——在硬件方面确实不同。奇怪的是,我认为不同的接口应该是四个中的第一个或最后一个。
答案3
根据手册页“eno1”设备可能从固件中获取该编号。也许有人使用某些管理工具/通过 BIOS 或类似工具将其设置为“1”?
ID_NET_NAME_ONBOARD=prefixonumber
This name is set based on the numeric ordering information given by the firmware for
on-board devices. The name consists of the prefix, letter o, and a number specified by
the firmware. This is only available for PCI devices.
但非常有趣,一旦你确定了,我也想知道:D