Ubuntu 20.04 Intel 网络连接问题,igc 中有错误吗?

Ubuntu 20.04 Intel 网络连接问题,igc 中有错误吗?

在技​​嘉 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 版)。(步骤灵感来自文章这里)。

  1. 您需要从以下位置下载以下文件这里

    • linux-headers-*all.deb
    • linux-headers-*generic*.deb
    • linux-image-unsigned-*generic*.deb
    • linux-modules-*generic*.deb
  2. 下载完成后,运行sudo dpkg -i deb linux*.deb

  3. 重启!(例如sudo reboot

  4. 系统恢复运行后,你可以通过运行以下命令来验证你使用的是内核 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 正常工作。

  1. 添加 Pop 存储库:
sudo add-apt-repository ppa:system76/pop
  1. 做一个apt update

  2. 当您执行时apt upgrade,它应该建议将内核升级到 Pop 版本,例如 5.4.0-76XX-generic。

76表示这是 Pop 的定制内核,接下来的两个数字提供内核的 D​​ebian 版本。

目前,我在 Xubuntu 上运行内核 5.4.0-7634-generic。NIC 启动并记录为 1Gbit/s。

选项 2:使用 Pop!_OS 源进行树外模块编译

如果您不想切换内核,那么您可以使用 Ubuntu 内核构建作为基础库从 Pop 源编译 igc 驱动程序。

  1. 从 Pop 的 github 存储库下载最新源代码:
wget https://github.com/pop-os/linux/archive/master_focal.zip
  1. 解压档案:
unzip master_focal.zip
  1. 更改到驱动程序源目录:
cd linux-master_focal/drivers/net/ethernet/intel/igc
  1. 使用当前的 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
  1. 现在安装驱动程序目标文件。我选择手动执行此操作,以便我可以备份 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
  1. 重新启动并享受使用 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

相关内容