質問があります。ASUS B8430UAノートパソコン:Ubuntu 16.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)イーサネット接続I219-V。
「公式」を検索しました。Linuxドライバただし、I219-Vをサポートしているとマークされていません。ただし、e1000eはI218-Vをサポートしていると記載されていますe1000-開発メーリングリストは、e1000eがI219-Vをサポートする必要があることを示しています。私は知らなかったので、e1000eの最新バージョンである3.3.4を試してみましたが、「間違ったNVMチェックサム」というエラーは同じです。
I219-Vの不揮発性メモリのチェックサムが一致しないようです。
私は同じモデルの別のASUSノートブックを試してみましたが、エラーは同じで、偶発的な損傷ではないようです。
ASUSまたはIntelカスタマーサポートチームはどちらも解決策を提示できませんでした。
見つけました。インテルイーサネット接続起動ユーティリティしかし、それによると文書(バージョン1.6.13.0の場合)OEMオンボードイーサネットカードではなくPCIでのみ機能します。しかし、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チェックサムの修正に関するSuperUser.SE。ここでは、ASUSPRO B8430UAノートブックまたはIntelイーサネットコントローラを搭載した他のノートブックにイーサネットが動作するLinuxを正常にインストールし、「間違ったNVMチェックサム」エラーが表示されるかどうかを管理したかどうかを尋ねたいと思います。
ベストアンサー1
このe1000e
ドライバは、Intel Ethernetコントローラを実行できるドライバですI2xx
。しかも最新のe1000eドライバ(この記事を書く時点)I219
チップを実行できます。
起動中のメッセージは、The NVM Checksum Is Not Valid
古いドライバがロードされないようにすることです。他のオペレーティングシステム(特にMS Windows)ではエラーは無視されます。しかし、Linuxはより厳しいようです。
NVMはチェックサムを必要とするチップのROM(読み取り専用メモリ)であり、以前のバージョンのドライバはe1000
最新のチップのNVMの内容を知りません。カードはエラーを無視する他のオペレーティングシステムで動作するため、ドライバがエラーを無視するように強制することもできます。
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;
}
そしてチェックサムが常に成功するように強制します。
(多少)信頼できる追加の参考資料: