有没有办法指示以太网适配器使用某个驱动程序?或者也许它的工作方式是有一种方法来指示驱动程序支持特定的适配器?
我的系统运行最近安装的 RHEL Server 7.3 操作系统(内核 3.10.0-514.el7.x86_64),其中 e1000e 驱动程序未链接到板载 I219-LM 以太网适配器。这种情况是在调查适配器无法正常工作的原因时发现的。另一个工作正常的以太网适配器是连接到 MB 的 PCI 卡。
简单的lspci
说:
# lspci | grep net
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
06:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)
I219-LM 设备的详细信息lspci
不会报告正在使用的驱动程序:
# lspci -v -s 00:1f.6
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
Subsystem: Intel Corporation Device 0000
Flags: fast devsel, IRQ 16
Memory at a1700000 (32-bit, non-prefetchable) [size=128K]
Capabilities: [c8] Power Management version 3
Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [e0] PCI Advanced Features
Kernel modules: e1000e
相反,对于其他适配器的相同命令表明设备正在使用 e1000e:
# lspci -v -s 06:00.0
06:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)
Subsystem: Intel Corporation PRO/1000 PT Server Adapter
Flags: bus master, fast devsel, latency 0, IRQ 130
Memory at a1320000 (32-bit, non-prefetchable) [size=128K]
Memory at a1300000 (32-bit, non-prefetchable) [size=128K]
I/O ports at 4000 [disabled] [size=32]
Expansion ROM at a1340000 [disabled] [size=128K]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [e0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Device Serial Number [edited]
Kernel driver in use: e1000e
Kernel modules: e1000e
我有另一个可用的系统,使用相同的操作系统和类型的板载(且正常运行)I219-LM 适配器,我在其中验证了驱动程序确实应该链接到设备。
浏览/sys/bus/pci/drivers/e1000e
和/sys/devices/pci0000:00/0000:00:1f.6
区域后发现一些缺失的内容:
- 在该文件夹中,有一个使用 82572EI 适配器的 PCI 地址指向该区域的软链接,但没有一个与 I219-LM 适配器的PCI 地址的
.../drivers/e1000e
软链接。/sys/devices/
相比之下,在提到的“控制”系统中,有其拥有的所有适配器的链接。 - 该区域内
/sys/devices/pci0000:00/0000:00:1f.6
没有driver
软链接。但是,该软链接存在于另一个适配器 (../pci0000:00/0000:06:00.0
) 的相应文件夹中,指向/sys/bus/pci/drivers/e1000e
应有的路径。
如果需要更多信息来帮助我解决此问题,请告诉我。
谢谢。
答案1
我想我在使用较新硬件的 RHEL7.9 中遇到了与此类似的情况。归根结底,红帽将新的 NIC 驱动程序向后移植到他们的版本司机的。因此,较新的硬件有时可能会领先于他们当时所支持的硬件。我知道您的 NIC 版本现在受 RHEL7 支持,因为我有一个使用该 NIC 的工作站并且一切正常。就我而言,新的戴尔精密塔式机具有 I219-LM NIC,需要 Red Hat 不会向后移植以支持 RHEL7 的驱动程序版本(现在在 RHEL8 中受支持)。我是 PXE 启动的,因此需要做一些额外的工作才能使该部分正常工作。
为了使 PXE 启动正常工作,我必须更新用于启动启动和安装我的映像的 initrd 映像,但由于这实际上并不在这个问题的范围内,所以我将跳过它。
您可以从英特尔网站获取驱动程序e1000e下载页面或者您可以使用 kmod 存储库(kmod e1000e 链接)。就我而言,我是从 Spacewalk 服务器通过 PXE 引导并安装软件包,因此我只是将 kmod-e1000e 软件包添加到我的存储库中,并在构建过程中安装了它。 kmod-e1000e 软件包是更简单的选择,因为它不应在未来的内核升级中被覆盖。
TL;DR Red Hat 在驱动程序支持方面可能很糟糕,因此单独安装较新的驱动程序可以解决这个问题。
PS 如果需要的话,我很乐意写下如何使 PXE 启动工作。