GNU/Linux >> Linux の 問題 >  >> Linux

ASUS ラップトップのインテル イーサネット コントローラー I219-V の不揮発性メモリ (NVM) のチェックサムを修復する方法は?

私の解決策を試す前に、まず 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 を再ロードする) だけです ドライバーを手動で)


Linux
  1. インストールを修復する方法は?

  2. md5 チェックサムでファイルの整合性を検証する方法

  3. アプリケーションまたはプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?

  1. クラッシュしたアプリケーションからヒュージページを解放する方法

  2. 「ps -ef」を実行した場合、各プロセスのメモリ使用量を表示するにはどうすればよいですか?

  3. Ubuntu ラップトップで SATA コントローラーのバージョンを確認する方法。 SATA 1、2、または 3 を使用していますか? I、II、またはIII?

  1. カーネル専用のメモリの使用状況を監視するには?

  2. ARM ベースのシステムで RAM のデータ破損をテストするにはどうすればよいですか?

  3. カーネルはどれくらいの RAM を使用しますか?