インテルネットワークアダプタE810-CQDA1のロードに失敗しましたice.pkg
。最初はパスが間違っていると疑ってice.pkg
別に保管しておきましたが、ice.ko
あまり役に立たないようです。次のエラーが引き続き発生しますDirect firmware load for intel/ice/ddp/ice.pkg failed with error -2
。
私ができることは何もありませんでした。ドライバのロードの問題をデバッグする方法に関する提案はありますか?とても感謝しています。
システム情報と接続:
> uname -r
5.4.0-90-generic
> ethtool -i p1p1
driver: ice
version: 0.8.1-k
firmware-version: 2.30 0x80005d1e 0.0.0
expansion-rom-version:
bus-info: 0000:10:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
> lspci -vvv -s 0000:10:00.0
10:00.0 Ethernet controller: Intel Corporation Device 1592 (rev 02)
Subsystem: Intel Corporation Device 0001
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 68
Region 0: Memory at e2000000 (64-bit, prefetchable) [size=32M]
Region 3: Memory at e1000000 (64-bit, prefetchable) [size=64K]
Expansion ROM at fcf00000 [disabled] [size=1M]
Capabilities: <access denied>
Kernel driver in use: ice
Kernel modules: ice
カーネルエラーログ:
> dmesg | grep "\<ice\>"
[ 1.202918] ice: Intel(R) Ethernet Connection E800 Series Linux Driver - version 0.8.1-k
[ 1.202919] ice: Copyright (c) 2018, Intel Corporation.
[ 1.215600] ice 0000:10:00.0: The driver for the device detected a newer version of the NVM image than expected. Please install the most recent version of the network driver.
[ 1.225732] ice 0000:10:00.0: firmware 5.3.7 api 1.7.4 nvm 2.30 0x80005d1e 0.0.0 build 0xa54f09ca
[ 1.225770] ice 0000:10:00.0: Direct firmware load for intel/ice/ddp/ice.pkg failed with error -2
[ 1.225771] ice 0000:10:00.0: The DDP package file was not found or could not be read. Entering Safe Mode
[ 1.225773] ice 0000:10:00.0: Package download failed. Advanced features disabled - Device now in Safe Mode
[ 1.252931] ice 0000:10:00.0 p1p1: renamed from eth0
ドライブパス:
tree /lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/
/lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/
├── ddp
│ ├── ice_comms-1.3.30.0.pkg
│ ├── ice_comms-1.3.30.0.zip
│ ├── ice.pkg -> ice_comms-1.3.30.0.pkg
│ ├── Intel_800_series_market_segment_DDP_license.txt
│ └── readme.txt
└── ice.ko
これが問題だと思う理由は、そのインターフェイスに入って来るパケットが見えないことですethtool p1p1
。
......
Speed: Unknown!
Duplex: Unknown! (255)
......
他の作業インスタンスに比べて速度と二重性が正しく見えず、そもそも運転者の行動が正しくないと考えることになります。もちろん、もう一つの理由は、dmesg
上記のカーネルエラーログに表示されたエラーが原因です。
引用:
1私はDDPを得ました(ice.pkg
)ここ、バージョンは1.3.30です。
2運転手を見つけました( ice.ko
)ここ、モジュールをビルドしてロードします。 modinfo ice
パスとバージョンを表示します。
サムdmesg
追跡して印刷されたものを見ることができます。これワイヤー。私は次に何が起こったのかについてあまり知りません。
答え1
Readmeによると、最も簡単な方法は/lib/firmwareおよび/または/lib/firmware/updatesディレクトリにDDPへのシンボリックリンクを置くことです。
ln -s /lib/modules/5.4.0-90-generic/kernel/drivers/net/ethernet/intel/ice/ice_comms-1.3.30.0.pkg /lib/firmware/ice.pkg
DDPとドライバ自体に関する追加情報ファイルを見ました。一歩を逃したようです。いずれかの文書で必須とは見なされません。、もう一つは不明です。基本的な手順と同じです。
ice_comms-xxxpkg ファイルの名前を ice-xxxxxxxxxxxxxxx.pkg に変更します。ここで、「xxxxxxxxxxxxxxxx」は、パッケージをダウンロードするデバイスの一意の64ビットPCI Expressデバイスのシリアル番号(16進数)です。ファイル名には完全なシーケンス番号(先行ゼロを含む)を含める必要があり、すべて小文字でなければなりません。たとえば、64ビットのシリアル番号がb887a3ffffca0568の場合、ファイル名はice-b887a3ffffca0568.pkgになります。
PCIバスアドレスからシリアル番号を見つけるには、次のコマンドを使用できます。
# lspci -vv -s af:00.0 | grep -i Serial Capabilities: [150 v1] Device Serial Number b8-87-a3-ff-ff-ca-05-68
次のコマンドを使用して、ダッシュなしでシリアル番号の形式を指定できます。
lspci -vv -s af:00.0 | grep -i Serial | awk '{print $7}' | sed s/-//g b887a3ffffca0568
名前が変更されたDDPパッケージファイルを/lib/firmware/updates/intel/ice/ddp/にコピーします。ディレクトリがまだ存在しない場合は、ファイルをコピーする前にディレクトリを作成してください。
デバイスからすべてのPFを削除します。
新しいパッケージにドライバを再ロードします。
メインドライバのReadmeはすでに明らかな内容を指摘しています。
ドライバがDDPパッケージをロードできない場合、デバイスはセーフモードになります。セーフモードは高度な機能とパフォーマンス機能を無効にし、基本トラフィックとNVMアップデート、新しいドライバ、DDPパッケージのダウンロードなど、最小限の機能のみをサポートします。
答え2
Alexが言ったように、ドライバがロードしたComms DDPパッケージが見つからないようです(これは通常ice.pkgの無効なファイル形式によるものです)。ただし、Alexのソリューションは、一意のNIC(シリアル番号ベース)にDDPパッケージをロードしたい場合にのみ機能します。次の例は、シリアル番号を取得せずにホスト上のすべてのNICのデフォルトインストールを実行する方法を示しています。 。
最新のComms DDPパッケージ(1.3.37.0)を例にしてみましょう。
- 以下から通信DDPパッケージをダウンロードしてください。ここLinuxホストへ
- Linux ホストでパッケージを解凍します。
$ unzip 800\ Series\ DDP\ Comms\ Package\ 1.3.37.0.zip
- 入れ子になったパッケージファイルを
ice_comms
ディレクトリにさらに抽出します。$ unzip ice_comms-1.3.37.0.zip -d ice-comms/
- 解凍されたすべてのコンテンツを次の場所にコピーします
/lib/firmware/updates/intel/ice/ddp/
。$ sudo cp ice-comms/* /lib/firmware/updates/intel/ice/ddp/
- 新しいパッケージを入手するには、iceドライバを再ロードしてください。
$ sudo modprobe -r ice; sudo modprobe ice
dmesg
ドライバが新しいDDPパッケージを挿入したことを確認してください。