私の解決策を試す前に、まず ppparadox による解決策を試すことを検討してください。
e1000-devel のご厚意により メーリング リスト、これが NVM Checksum word の修正方法です ethtool
を使用 .
tl;dr: 基本的に、最初に e1000e にパッチを適用して Linux のイーサネット チップにアクセスできるようにし、次に ethtool
を使用しました。 私のI219-VのNVMの「チェックサム」領域から値を読み取り、それを書き戻します。書き込み操作によりチェックサムが修正されました。
Linux からイーサネット チップにアクセスするには、e1000e にパッチを当てる必要がありました NVM チェックサムの検証をスキップします。ファイル内 src/netdev.c
、
for (i = 0;; i++) {
if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
break;
if (i == 2) {
dev_err(pci_dev_to_dev(pdev),
"The NVM Checksum Is Not Valid\n");
err = -EIO;
goto err_eeprom;
}
}
に
for (i = 0; false; i++) {
(ブロック全体を削除またはコメントアウトすることもできます。)
次に、パッチを適用したモジュールをインストールしました。 /src
から 私が行ったディレクトリ:
sudo make install
sudo modprobe -r e1000e
sudo modprobe e1000e
sudo update-initramfs -u
reboot
チェックサムの検証がスキップされ、イーサネットが機能し始めました。
チェックサム ワードを修正する前に、Intel のデータシートのセクション 10 に示されている I219 の NVM の概要を調べました。チェックサム ワードの使用については、セクション 10.3.2.2 で説明されています。
NVM に書き込む前に、チェックサム ワードに注意しました:
$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset Values
------ ------
0x007e: 60 13
(enp0s31f6
は私のイーサネット インターフェイスの名前です。) したがって、誤ったチェックサム ワードの値は 0x1360
でした。 .
sudo ethtool -e enp0s31f6
で NVM のダンプを見てみました 次に、オフセット 0x10 のバイトをもう一度調べます:
$ sudo ethtool -e enp0s31f6 offset 0x10 length 1
Offset Values
------ ------
0x0010: ff
(どうやらどの場所でも構いませんが、私の場合、オフセット 0x10 の値はまったく使用されていないと言われたため、「より安全」に思えました。)
ethtool
で NVM (EEPROM) に書き込む場合 、 「魔法の鍵」が必要でした。 インテル Pro/1000 (e1000) ネットワーク インターフェイスのアンブリック を読みました 私の魔法の鍵は 0x15708086
であることがわかりました lspci -nn
を使用 :
$ lspci -nn | grep Ethernet
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection I219-V [8086:1570] (rev 21)
それから 0xff
と書きました NVM のオフセット 0x10 に戻る:
$ sudo ethtool -E enp0s31f6 magic 0x15708086 offset 0x10 value 0xff
書き込み前後の NVM のダンプを比較したところ、予想通り、変更されたのはチェックサム ワードだけであることがわかりました。
$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset Values
------ ------
0x007e: 60 93
したがって、新しい値は 0x9360
でした .
パッチを適用していない e1000e でカーネルを起動しました 、イーサネット ポートは正常に機能しました。
追記チェックサム ワードの最上位ビットだけが間違っていたことが少し心配です。
bootutil
を使用しました Intel の Linux 用 (2011 年の投稿で提案されているように) を Asus Z270-A の統合 Intel NIC にインストールして、賛成の回答で説明した再コンパイルとマジック キーを使用せずにこのエラーを修正します。それはうまくいきました。インテルのダウンロード サイトからツールをダウンロードしました
chmod +x ./bootutil64e
sudo ./bootutil64e -NIC 1 -defcfg
e1000e
から Fedora 24 でも同じエラーが発生しました Intel I219-V NIC アダプターを搭載した ASUS ROG MAXIMUS IX HERO マザーボードのドライバー。
NVM にパッチを適用する必要があるという受け入れられた解決策は、リスクが高すぎると思います。ハードウェアが役に立たなくなる可能性があります。
安全な解決策の 1 つは、Intel Ethernet Connections Boot Utility を使用して NIC にデフォルト設定を適用することです。箱から出してすぐに Linux で動作し、起動ディスクを作成する必要はありません:
$ chmod +x bootutil64e
$ sudo ./bootutil64e -NIC=1 -DEFAULTCONFIG
それだ。再起動する (または e1000e
を再ロードする) だけです ドライバーを手動で)