![Ubuntu 20.04 Intel 网络连接问题,igc 中有错误吗?](https://linux22.com/image/925664/Ubuntu%2020.04%20Intel%20%E7%BD%91%E7%BB%9C%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98%EF%BC%8Cigc%20%E4%B8%AD%E6%9C%89%E9%94%99%E8%AF%AF%E5%90%97%EF%BC%9F.png)
在技嘉 z490 Vision G 主板上新构建。网络链路灯亮起,电缆直接连接到交换机。我安装了另一张网卡,连接到同一个交换机,这是我用来连接的,因为它工作得很好(英特尔 igb 驱动程序)。板载网络端口偶尔会在重启后出现,但通常显示无链接和速度/双工“未知!”
您认为发生了什么?您还需要什么其他信息?
我不认为这是 cat6 电缆的问题,我尝试了多个交换机端口,以及在其他端口上成功使用的电缆。这是一个 2.5Gbps NIC 连接到 1Gbps 交换机,我可以尝试使用 cat7 看看是否有帮助。
请求的数据附加在末尾,没有 /etc/network/interfaces 目录,并且 /etc/network 下的所有内容看起来都是正常的。
Ubuntu 20.04 服务器安装。
$ ethtool enp5s0
Settings for enp5s0:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
Current message level: 0x00000007 (7)
drv probe link
Link detected: no
$ lspci -knn
5:00.0 Ethernet controller [0200]: Intel Corporation Device [8086:15f3] (rev 02)
Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
Kernel driver in use: igc
Kernel modules: igc
$ dmesg | grep igc
[ 3.181094] igc 0000:05:00.0: 4.000 Gb/s available PCIe bandwidth (5 GT/s x1 link)
[ 3.181096] igc 0000:05:00.0 eth0: MAC: 18:c0:4d:00:00:00
[ 3.181657] igc 0000:05:00.0 enp5s0: renamed from eth0
*-network
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:05:00.0
logical name: enp5s0
version: 02
serial: 18:c0:4d:00:00:00
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: bus_master cap_list rom ethernet physical 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igc driverversion=0.0.1-k latency=0 link=no multicast=yes port=twisted pair slave=yes
resources: irq:17 memory:51a00000-51afffff memory:51b00000-51b03fff memory:51900000-519fffff
请求的数据:
$ cat /etc/netplan/*.yaml
network:
ethernets:
enp6s0f0:
dhcp4: no
enp6s0f1:
dhcp4: no
enp5s0:
dhcp4: no
optional: true
bonds:
bond0:
interfaces: [enp6s0f0, enp6s0f1, enp5s0]
addresses: [192.168.37.10/24]
gateway4: 192.168.37.1
nameservers:
addresses: [192.168.37.1]
search: [home.lan]
parameters:
mode: balance-alb
version: 2
$ sudo lshw -C network
*-network
description: Ethernet interface
product: Intel Corporation
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:05:00.0
logical name: enp5s0
version: 02
serial: 18:c0:4d:00:00:00
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list rom ethernet physical 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igc driverversion=0.0.1-k latency=0 link=no multicast=yes port=twisted pair slave=yes
resources: irq:17 memory:51a00000-51afffff memory:51b00000-51b03fff memory:51900000-519fffff
*-network:0
description: Ethernet interface
product: 82576 Gigabit Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:06:00.0
logical name: enp6s0f0
version: 01
serial: 00:1b:21:00:00:00
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.5.1 latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
resources: irq:16 memory:51820000-5183ffff memory:51400000-517fffff ioport:3020(size=32) memory:51844000-51847fff memory:51848000-51867fff memory:51868000-51887fff
*-network:1
description: Ethernet interface
product: 82576 Gigabit Network Connection
vendor: Intel Corporation
physical id: 0.1
bus info: pci@0000:06:00.1
logical name: enp6s0f1
version: 01
serial: f6:3b:fc:00:00:00
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.5.1 latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
resources: irq:17 memory:51800000-5181ffff memory:51000000-513fffff ioport:3000(size=32) memory:51840000-51843fff memory:51888000-518a7fff memory:518a8000-518c7fff
答案1
我会回答我自己的问题,这是一个英特尔固件问题。希望这对其他人有所帮助。
技嘉在其网站上发布了一款仅适用于 Windows 的 NIC 固件,https://download.gigabyte.com/FileList/Driver/mb_driver_intel-i225-firmware-tool.zip。据我所知,英特尔在其网站上提供了 Linux NVMUpdate 实用程序,但未与此固件一起打包。可从https://downloadcenter.intel.com/download/22283/Intel-Ethernet-Adapter-Complete-Driver-Pack
因此,下载两者,将 FXVL_15F3_V_2MB_1.45.bin 从 Windows 更新程序复制到 Linux 位置,就我而言:
cp ~/Nvmupdate145/i225/FXVL_15F3_V_2MB_1.45.bin ~/NVMUpdatePackage/700_Series/700Series/Linux_x64
将其添加到 nvmupdate.cfg:
BEGIN DEVICE
DEVICENAME: NNT
VENDOR: 8086
DEVICE: 15F3
SUBVENDOR: 1458
SUBDEVICE: E000
NVM IMAGE: FXVL_15F3_V_2MB_1.45.bin
IMAGE DOWNGRADE: TRUE
END DEVICE
然后运行该实用程序。您应该看到:
$ sudo ./nvmupdate64e
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.35.23.3
Copyright (C) 2013 - 2020 Intel Corporation.
WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [*****.....]
Num Description Ver.(hex) DevId S:B Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Gigabit ET Dual Port 1.5(1.5) 10C9 00:002 Update not
Server Adapter available
02) Intel(R) Ethernet Controller (2) 1.69(1.45) 15F3 00:006 Update
I225-V available
Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: a
Would you like to back up the NVM images? [Y]es/[N]o: n
Update in progress. This operation may take several minutes.
[********+.]
Num Description Ver.(hex) DevId S:B Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Gigabit ET Dual Port 1.5(1.5) 10C9 00:002 Update not
Server Adapter available
02) Intel(R) Ethernet Controller (2) 1.69(1.45) 15F3 00:006 Update
I225-V successful
Tool execution completed with the following status: All operations completed successfully.
Press any key to exit.
并且甚至不需要重新启动:
$ ethtool enp6s0
Settings for enp6s0:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
答案2
根据上述答案的启发,对于在配备英特尔 I225-LM 芯片组的华硕 WS X299 SAGE II 主板上运行的 Ubuntu 20.04.1 系统,我使用内核 PPA 版本切换到了 5.8.7 主线通用内核(撰写本文时最新的 5.8 版)。(步骤灵感来自文章这里)。
您需要从以下位置下载以下文件这里:
linux-headers-*all.deb
linux-headers-*generic*.deb
linux-image-unsigned-*generic*.deb
linux-modules-*generic*.deb
下载完成后,运行
sudo dpkg -i deb linux*.deb
重启!(例如
sudo reboot
)系统恢复运行后,你可以通过运行以下命令来验证你使用的是内核 5.8.7:
uname -sr
这样做解决了我在使用内置 NIC 时遇到的问题,并且整个系统在连续几天的高内存和 CPU 压力下都保持稳定,没有出现问题。
我最初尝试使用固件更新方法,但由于我使用的是 I225-LM 而不是 I225-V,因此遇到了麻烦。后者似乎已更新固件,可以将其带入 Linux 环境,而前者则没有找到类似的结果。
答案3
约翰,非常感谢你在自己搞清楚之后发帖。我刚刚用技嘉 Z490i 完成了新机的组装,当板载 LAN 工作时,我完全不知所措,然后又不工作了,然后又工作了,然后又不工作了。
当我写这篇文章时,我正准备尝试您的方法,但首先我要验证事情是否看起来相似:
% ethtool enp4s0
Settings for enp4s0:
Supported ports: [ ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
2500baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Cannot get wake-on-lan settings: Operation not permitted
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
% lspci -knn | grep -i -C3 ethernet
04:00.0 Ethernet controller [0200]: Intel Corporation Device [8086:15f3] (rev 01)
Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
Kernel driver in use: igc
Kernel modules: igc
[ 3.572001] igc 0000:04:00.0: 4.000 Gb/s available PCIe bandwidth (5 GT/s x1 link)
[ 3.572005] igc 0000:04:00.0 eth0: MAC: [redacted]
[ 3.581425] igc 0000:04:00.0 enp4s0: renamed from eth0
[ 14.359088] igc 0000:04:00.0 enp4s0: igc: enp4s0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
第一个障碍是https://download.gigabyte.com/FileList/Driver/mb_driver_intel-i225-firmware-tool.zip是某种奇怪的 zip 格式,我无法使用除 Windows 计算机之外的任何工具来提取它。所以我这样做了,将文件复制FXVL_15F3_V_2MB_1.45.bin
到服务器,然后按照您的说明进行操作。
% sudo ./nvmupdate64e
Intel(R) Ethernet NVM Update Tool
NVMUpdate version 1.35.33.4
Copyright (C) 2013 - 2020 Intel Corporation.
WARNING: To avoid damage to your device, do not stop the update or reboot or power off the system during this update.
Inventory in progress. Please wait [**|.......]
Num Description Ver.(hex) DevId S:B Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Controller 1.56(1.38) 15F3 00:004 Update
I225-V available
Options: Adapter Index List (comma-separated), [A]ll, e[X]it
Enter selection: 1
Would you like to back up the NVM images? [Y]es/[N]o: y
之后:
Num Description Ver.(hex) DevId S:B Status
=== ================================== ============ ===== ====== ==============
01) Intel(R) Ethernet Controller 1.69(1.45) 15F3 00:004 Update not
I225-V available
不幸的是,这似乎没有解决我的问题。
重启后,链接仍然断开,就像没有插入电缆一样。目前我发现让它工作的唯一方法是启动 Ubuntu 实时安装程序,到达可以配置网络的点,通过 DHCP 获取 IP,然后重新启动到我的磁盘安装,然后它可以工作到下次重启。显然这不是理想的。
答案4
选项 1:切换到 Pop!_OS 内核
我在华硕 B550 主板 (ROG-STRIX-B550-I) 上安装了同样的 NIC (I225-V)。我 (意外地) 切换到最新的 Pop!_OS 5.4 内核,让 NIC 正常工作。
- 添加 Pop 存储库:
sudo add-apt-repository ppa:system76/pop
做一个
apt update
。当您执行时
apt upgrade
,它应该建议将内核升级到 Pop 版本,例如 5.4.0-76XX-generic。
这76表示这是 Pop 的定制内核,接下来的两个数字提供内核的 Debian 版本。
目前,我在 Xubuntu 上运行内核 5.4.0-7634-generic。NIC 启动并记录为 1Gbit/s。
选项 2:使用 Pop!_OS 源进行树外模块编译
如果您不想切换内核,那么您可以使用 Ubuntu 内核构建作为基础库从 Pop 源编译 igc 驱动程序。
- 从 Pop 的 github 存储库下载最新源代码:
wget https://github.com/pop-os/linux/archive/master_focal.zip
- 解压档案:
unzip master_focal.zip
- 更改到驱动程序源目录:
cd linux-master_focal/drivers/net/ethernet/intel/igc
- 使用当前的 5.4 内核构建目录编译驱动程序:
make -C /lib/modules/`uname -r`/build M=$PWD
例如,我使用 5.4.0-42-generic 内核源文件编译了驱动程序:
make -C /lib/modules/5.4.0-42-generic/build M=$PWD
用 5.4.0-42-generic 替代uname -r
。
您可以使用 modinfo 检查一切是否正常:
modinfo igc.ko
输出中的 vermagic 应该与您当前的内核相匹配,如下所示:
vermagic: 5.4.0-42-generic SMP mod_unload
- 现在安装驱动程序目标文件。我选择手动执行此操作,以便我可以备份 Ubuntu 驱动程序,以防 Pop 驱动程序出现问题。
sudo cp -vp igc.ko /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/igc.ko-latest-pop
cd /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/
sudo cp -pv igc.ko igc.ko-5.4.0-42-generic-original
sudo cp -pv igc.ko-latest-pop igc.ko
- 重新启动并享受使用 Pop 的最新驱动程序工作的 NIC!
使用更新的驱动程序启动内核后,您可以使用以下命令检查您正在使用的是否是已编译的驱动程序modinfo
:
modinfo igc
文件名应与您安装的驱动程序的位置相匹配,例如:
filename: /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/igc/igc.ko
警告 YMMV。如果您选择编译 Pop 驱动程序,请确保您有一个可用的备份内核,并且您可以轻松地在 grub 中切换内核,以防在安装驱动程序时内核崩溃。我编辑了我的 grub 默认值(在 中/etc/default/grub
),以便能够轻松切换内核。
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=9
注意:最新的驱动程序仍然存在问题。
我注意到,即使是这个版本的 igc 驱动程序在内核 5.4 中仍然有错误。例如,/proc/net/dev 统计信息为空白,并且在 NIC 的 igc 驱动程序下不会更新。来自的统计信息ethtool -S
正在更新。我不确定它们是否准确。
实验
我已经编译并安装了 igc 驱动程序linux-5.6.19内核源码。它似乎也可以在 Pop 5.4 内核下运行,但 5.6 驱动程序版本仍然存在 /proc/net/dev 统计问题。
我还尝试在 5.7 和 5.8 内核中编译 igc 驱动程序的最新源代码。如果您使用的是 5.4 源代码,则无法进行编译。5.7 和 5.8 下存在依赖性问题。
看起来 5.8 内核添加了一些 5.4 中缺少的电源管理依赖项。我收到以下错误:
error: ‘DPM_FLAG_NO_DIRECT_COMPLETE’ undeclared
当我跑步时:
make -C /lib/modules/5.4.0-7634-generic/build M=$PWD
使用截至 2020 年 8 月 19 日的最新来源:
svn export https://github.com/torvalds/linux.git/trunk/drivers/net/ethernet/intel/igc