ASUSPRO B8430UAラップトップ で問題があります。Ubuntu16.04(またはNixOS 16.03)で起動すると、イーサネットポートが機能しません。使用されるドライバーは e1000e で、次のように報告されます。
$ dmesg | grep e1000e
[ 5.643760] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 5.643761] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 5.644308] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[ 5.877838] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid
[ 5.907340] e1000e: probe of 0000:00:1f.6 failed with error -5
Windows 7では、イーサネットポートは正常に機能します。インターネットに接続できます。 Windowsによると、私は Intel(R)Ethernet Connection I219-V を使用しています。
「公式」 Linuxドライバー を検索しましたが、I219-Vをサポートするものとしてリストされていません。ただし、e1000eはI218-Vをサポートするものとしてリストされており、e1000eがI219-Vをサポートする必要があることを e1000-devel メーリングリストから確認しています。 e1000eの最新バージョン3.3.4を使用してみたが、エラーは同じだった場合:「NVMチェックサムが無効です。」
確かに、I219-Vの不揮発性メモリのチェックサムが一致していないようです。
同じモデルの別のASUSラップトップを試しましたが、エラーは同じでしたので、これは偶発的な破損のようには見えません。
ASUSもIntelのカスタマーサポートもソリューションを提案できませんでした。
私は Intel Ethernet Connections Boot Utility を発見しましたが、 documentation (バージョン1.6.13.0の場合)によると、これはPCIのみを対象としており、OEMオンボードのイーサネットカードを対象としていません。ただし、Intelネットワークポートのリストを出力するためだけに、パラメーターなしで実行することにしました。これは私が取得したものです。
$ Sudo ./bootutil64e
Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.6.13.0
Copyright (C) 2003-2016 Intel Corporation
Type BootUtil -? for help
Port Network Address Location Series WOL Flash Firmware Version
==== =============== ======== ======= === ============================= =======
1 D017C2201F59 0:31.6 Gigabit N/A FLASH Not Present
「FLASH Not Present」の意味がよくわかりません。
NVMチェックサムの修正について question をSuperUser.SEに提示しました。ここで、ASUSPRO B8430UAラップトップ、または「NVMチェックサムが無効です」というエラーが発生したIntelイーサネットコントローラーを搭載したその他のラップトップに、イーサネットを使用してLinuxを正常にインストールできたかどうか、またどのようにしてインストールしたかを尋ねます。
私はなんとかチェックサムを修正しました。 Linuxでイーサネットが正常に動作するようになりました。 SuperUser.SEの質問に answer で詳細を説明しました。
基本的に、私は最初にパッチを適用しましたe1000e
NVMチェックサム検証をスキップします
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;
}
}
src/netdev.c
、そしてイーサネットチップにアクセスした後、チェックサムを自動的に修正するethtool
を使用してNVMに書き込みました。
e1000e
ドライバーは、I2xx
インテルイーサネットコントローラーを実行できるドライバーです。そして この記事の執筆時点での最新のe1000eドライバー はI219
チップを実行できます。
ブート中のThe NVM Checksum Is Not Valid
メッセージは、古いドライバーのロードを妨げていたものです。他のOS(特にMSウィンドウ)では、そのエラーは無視されます。しかし、Linuxはより厳しいようです。
NVMは、チェックサムを受けるチップ内のROM(読み取り専用メモリ)であり、古いバージョンのe1000
ドライバは、新しいチップのNVMの内容を認識していませんでしたこのカードはエラーを無視する他のOSで機能するため、別の可能性として、ドライバーにエラーを無視させることが考えられます。
チェックサムはnvm.c
内で実行されますが、他のいくつかのモデルは、fix_checksum
の前に実行される独自のe1000e_validate_nvm_checksum_generic
関数を提示します。
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
s32 ret_val;
u16 checksum = 0;
u16 i, nvm_data;
for (i = 0; i < (NVM_CHECKSUM_REG + 1); i++) {
ret_val = e1000_read_nvm(hw, i, 1, &nvm_data);
if (ret_val) {
e_dbg("NVM Read Error\n");
return ret_val;
}
checksum += nvm_data;
}
if (checksum != (u16)NVM_SUM) {
e_dbg("NVM Checksum Invalid\n");
return -E1000_ERR_NVM;
}
return 0;
}
NVM_SUM
はdefine.h
内で定義されています
#define NVM_SUM 0xBABA
カードが実行されていると確信している(そしてNVMチェックサムのために失敗するだけの)場合は、チェックサム関数を編集して次のことを試みることができます。
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
return 0;
}
そして、チェックサムが常に成功するように強制します。
追加の(多かれ少なかれ)信頼できる参照:
詳細なガイドは、Ubuntu 18.04.1 LTS- Intel I219-Vのサポートです。
からドライバーをダウンロード
https://downloadcenter.intel.com/download/15817/Intel-Network-Adapter-Driver-for-PCI-E-Gigabit-Network-Connections-under-Linux-?product= 71307 (バージョン3.4.0.2のTestet)
選択したフォルダーにZipを解凍します
ドライバのsrcディレクトリに移動します。
例えば。 _cd e1000e-3.4.2.1/src/
_
新しいモジュールをロードする前に、古いe1000eドライバーがカーネルから削除されていることを確認してください_Sudo rmmod e1000e
_
ドライバモジュールをコンパイルします:_Sudo make install
_
Modprobeコマンドを使用してモジュールをロードします。_Sudo modprobe e1000e
_バイナリは次のようにインストールされます:/lib/modules//updates/drivers/net/ethernet/intel/e1000e/e1000e.ko
インターフェイスが機能することを確認します。次のように入力します。IP_addressは、テスト対象のインターフェースと同じサブネット上の別のマシンのIPアドレスです。ping
ドライバーを永続的にするSudo dpkg-reconfigure linux-image-$(uname -r)
これはpkt 8が行うことだと思います:: ....注:RedHat Enterprise Linux 7やUbuntuなどの特定のディストリビューションでは、ドライバーがインストールされたら、initrd/initramfsファイルを更新して、 OSが古いバージョンのe1000eドライバーをロードしている。 Ubuntuの場合:#update-initramfs -u