イーサネットアダプタに特定のドライバを使用するように指示する方法はありますか?または、どのように動作するかに応じて、ドライバに特定のアダプタをサポートするように指示する方法がありますか?
私のシステムは、e1000eドライバがオンボードI219-LMイーサネットアダプタに接続されていない最近インストールされたRHEL Server 7.3オペレーティングシステム(カーネル3.10.0-514.el7.x86_64)を実行しています。この状況は、アダプターが正しく機能しない理由を調査している間に発見されました。正しく機能するもう1つのイーサネットアダプタは、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
同じOSとオンボード(および動作する)のI219-LMアダプタタイプを使用する他のシステムを使用できます。ここでは、ドライバが実際にデバイスに接続する必要があることを確認しました。
地域を探索した/sys/bus/pci/drivers/e1000e
後、/sys/devices/pci0000:00/0000:00:1f.6
欠落しているコンテンツが見つかりました。
.../drivers/e1000e
このフォルダには、82572EIアダプタのPCIアドレスを使用するこの領域へのソフトリンクがありますが、I219-LMアダプタのPCIアドレスへのソフトリンクはありません。/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でも、このような状況が発生したようです。結論はRed Hatが新しいNICドライバを彼らのバージョンドライバーの。そのため、最新のハードウェアがその時点でサポートしているよりも前になる可能性があります。あなたのNICバージョンがRHEL7でサポートされていることを知っています。そのNICを使用するワークステーションがあり、すべてがうまく機能するためです。私の場合、新しいDell Precision Towerに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ブート操作を実行する方法を喜んで作成します。