为什么我的第二张 PCIe 网卡无法被 Linux 识别?

为什么我的第二张 PCIe 网卡无法被 Linux 识别?

该机器是 IBM ThinkCentre(型号 8115LUA),带有两个 PCI 插槽 - 如果我没记错的话,是 x1 和 x16。

这些 PCIe 插槽中有两个相同的网卡。最初,系统无法启动 - 似乎它试图将其中一个网卡用作视频卡(结果符合预期) - 可能是 x16 插槽。视频来自 Intel 82945G 芯片组。

我移除了超大 PCIe 插槽中的网卡,将 BIOS 设置为仅使用板载显卡,然后重新启动。启动正常。将网卡放回去后,启动仍然正常。

但是,只有一张网卡被识别(作为 eth1) - 然后被“实现”为 eth2(!)。

[    5.148758] eth1: Tigon3 [partno(BCM95761) rev 5761100] (PCI Express) MAC address 00:10:18:80:de:36
[    5.148765] eth1: attached PHY is 5761 (10/100/1000Base-T Ethernet) (WireSpeed[1])
[    5.148771] eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1]
[    5.148776] eth1: dma_rwctrl[76180000] dma_mask[64-bit]

lspci:

00:00.0 Host bridge: Intel Corporation 82945G/GZ/P/PL Memory Controller Hub (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02)
00:02.1 Display controller: Intel Corporation 82945G/GZ Integrated Graphics Controller (rev 02)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 01)
00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.2 IDE interface: Intel Corporation N10/ICH7 Family SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)
02:00.0 Ethernet controller: Intel Corporation 82573E Gigabit Ethernet Controller (Copper) (rev 03)
04:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5761 Gigabit Ethernet PCIe (rev 10)

所讨论的两张卡是相同的;一张如上图所示04:00.0。 的网络设备02:00.0是内部网络设备。

我在所有三个设备(PCIe 千兆卡和内部网络设备)上都看到链路指示灯,流量指示灯也与之匹配。Linux 识别出 eth0 和 eth2(已识别设备)上的链路丢失,但在 PCIe 16x 插槽中使用未识别设备时不记录任何内容。

在 BIOS 中,我将活动视频设置为 IGD(我假设是集成图形设备)。

如何让第二张网卡工作?此系统中没有其他可用的 PCIe 插槽;只有这两个。

答案1

我知道这是一个老问题,但无论如何我都会尝试一下。

ThinkCentres 中的这个 PCIe x16 插槽具有双重用途。它可以用作 PCIe x16 插槽,也可以作为板载显卡的扩展(为板载 IGP 添加 DVI-D 端口)。

通常,BIOS 无法正确识别该插槽中的任何 PCIe 卡。(我曾见过视频卡、NIC、电视调谐卡出现这种情况。)

对我来说解决方案始终如下:

  1. 首先将 BIOS 升级到最新版本。(出厂 BIOS 通常是一个相当早的版本。)重置为出厂默认设置升級。
  2. 如果这不能解决问题,请取出 CMOS 电池 10 分钟。再放回去。启动并运行立即地进入 BIOS 并重置为出厂默认设置。不要让它在未重置的情况下启动!8xxxx 系列的 ThinkCentres 有一个令人讨厌的习惯,即尝试使用 CMOS 中的垃圾而不是合理的默认值进行启动。

答案2

首先,通过单独测试或在另一台计算机上测试,确保您知道两个网卡都可以正常工作...我假设您已经这样做了:)

我猜是 BIOS 问题。我在一些旧的/便宜的网络硬件上也遇到过类似的问题。我希望我能记得确切地我做了什么,但我认为它涉及将 BIOS 重新设置为“出厂默认值”,这改变了一些 PCI 资源分配特性。

您的 Linux 内核版本不应影响 lspci 的输出——它应该显示所有已连接和启用的 PCI 设备。

我的建议:

  1. 将 BIOS 重置为出厂默认值,以确保清除所有非标准 PCI 资源设置。

  2. 禁用任何您不使用的板载设备(如板载英特尔卡)、板载视频卡等。

  3. 再次启动 Linux,看看你的 NIC 是否都出现了。

  4. 如果它们没有同时显示,请调整您的 BIOS 设置(特别是与 PCI 设备相关的设置),然后从步骤 3 开始重复。

一旦两张卡再次出现,您可能需要清除 udev 的网卡概念,具体取决于您的 Linux 发行版(在 Debian 中,简单来说rm /etc/udev/rules.d/70-persistent-net.rules)。

相关内容