当ブログではアフィリエイト広告を掲載しています。

【解決方法】Intel LANドライバの"The NVM Checksum Is Not Valid" (Intel BootUtil編)

最終更新日

2020/12/13
タイトル変更。第1章・第5-3章に加筆。
2021/12/12
Intel社のファイル情報とダウンロードページのURLを更新。

"The NVM Checksum Is Not Valid"により、LinuxでIntel LANドライバが動作しない原因

過去記事 → 【Linux】対処法: 有線LANのドライバe1000eが動作しない。では、"The NVM Checksum Is Not Valid"の対処法として、Linux用 LANドライバを改変して動作させていました。

ただし、根本的な原因はNICのNVM Checksumが適切ではないことです。NICのNVM Checksumを修正しない限り、Linuxで未改変のLANドライバが使えません。

Intel BootUtilを使ってNICのNVM Checksumを修正する方法があったので、紹介します。NVM Checksumを修正すれば、Linux用LANドライバの改変は不要です。

NIC = Network Interface Card (ネットワークカード、LANカード)
NVM = Non-Volatile Memory (不揮発性メモリ)

Intel BootUtilでNICのPXE設定をリセットします。そのついでにNVM Checksumが修復されます。

NVM Checksumの修正だけをご希望の場合は、Intel FPTでNVM Checksumを修正する方法へ。[Intel ME(CSME)対応チップセット搭載マシン限定、DOS・EFI・Win(32bit/64bit)]

Intel NICのMAC Addressの確認

NICを複数搭載している場合は、NICのMAC Address(物理アドレス、Hex 12桁)を調べておくことをお勧めします。

調べ方は下記リンク先(過去記事)の「Primary card MAC」の所を参照してください。(Primaryや有線に限定せずに、調べてください)

Intel BootUtilのダウンロード

Intel(R) Ethernet Connections Boot Utility, Preboot Images, and EFI Drivers

https://www.intel.com/content/www/us/en/download/15755/intel-ethernet-connections-boot-utility-preboot-images-and-efi-drivers.html

ダウンロード前に、自分のPCのNICがサポートされているか確認してください。

Windows用・Linux用・EFI用・DOS用があります。

  • PREBOOT.zip: Windows(32bit、64bit)用、EFI2 64bit用
  • Preboot.tar.gz: Linux(32bit、64bit)用
DOS用 Intel BootUtil

DOS用を使う場合は、v25.2のPREBOOT.EXEをダウンロードしてください。(ただし、最新の製品には対応していない可能性があります)

v25.4以降はDOS用が提供されません。また、v25.3のダウンロードページは消されました。

v25.2

https://www.intel.com/content/www/us/en/download/15755/29944/intel-ethernet-connections-boot-utility-preboot-images-and-efi-drivers.html

[Archive]
https://web.archive.org/web/20201021105747/https://downloadcenter.intel.com/download/29944/Ethernet-Intel-Ethernet-Connections-Boot-Utility-Preboot-Images-and-EFI-Drivers

PREBOOT.zip、Preboot.tar.gz、PREBOOT.EXE(自己解凍形式)はいずれも圧縮されているため、展開する必要があります。BootUtilは、APPS/BootUtil/ (APPS\BootUtil\)配下にあります。

Intel BootUtilを使う準備

DOS

必要なもの

  • 空のUSBメモリ
  • DOS起動ディスク作成ソフトウェア(USBメモリ対応)
  • BootUtil.exe

手順

  1. USBメモリをDOS起動ディスクとしてフォーマット。(FAT32、FreeDOS or MS-DOS)
  2. DOS起動ディスクにBootUtil.exeを追加する。
  3. DOS起動ディスクからブート。

    参照
    各メーカーのブートデバイス選択画面(Boot Menu)表示キー
    https://kb.wisc.edu/helpdesk/page.php?id=58779
  4. NVM Checksumの修正作業へ。

EFI — DOS起動ディスクでEFI Shellを起動する場合

必要なもの

  • 空のUSBメモリ
  • DOS起動ディスク作成ソフトウェア(USBメモリ対応)
  • BOOTUTIL64E.EFI
  • bootx64.efi (efi shell binary)

    efi shell binary ファイルは次のURLからダウンロードできます。

    https://github.com/tianocore/edk2/releases/download/edk2-stable202002/ShellBinPkg.zip

    shell.efi → bootx64.efi にリネーム。

手順

  1. USBメモリをDOS起動ディスクとしてフォーマット。(FAT32、FreeDOS or MS-DOS)
  2. DOS起動ディスクのルートディレクトリにBOOTUTIL64E.EFIとEFI/BOOT/bootx64.efi (EFI\BOOT\Bootx64.efi)を追加する。

    ├ BOOTUTIL64E.EFI
    └ EFI
        └ BOOT
            └ bootx64.efi

    注意点: bootx64.efiは、ルートディレクトリに置くと動作しない。

  3. UEFI BIOS設定画面でセキュアブートを無効(or 非UEFI モード)にする → Save Changes & Reset
  4. DOS起動ディスクからブート。

    参照
    各メーカーのブートデバイス選択画面(Boot Menu)表示キー
    https://kb.wisc.edu/helpdesk/page.php?id=58779
  5. Mapping tableが表示されたら、USBメモリのFS(数字):を確認する。

    Mapping tableはコマンド map -b で表示可能
  6. FS(数字):と入力 → Enter

    FS0:

    通常、英語キーボード配列で認識される。

    : = 日本語キーボードのShift + ;(れ)

  7. プロンプトがFS(数字):\>となる。
    (カレントディレクトリがUSBメモリに変更された)

    lsコマンド or dirコマンドで、USBメモリの内容を確認可能。
  8. NVM Checksumの修正作業へ。

EFI — UEFI BIOS内蔵のEFI Shellを起動する場合

※ EFI Shellが内蔵されている機種限定

必要なもの

  • 空のUSBメモリ
  • BOOTUTIL64E.EFI
  • shellx64.efi (efi shell binary)

    efi shell binary ファイルは次のURLからダウンロードできます。

    https://github.com/tianocore/edk2/releases/download/edk2-stable202002/ShellBinPkg.zip

    shell.efi → shellx64.efi にリネーム。

手順

  1. USBメモリをフォーマット。(FAT32)
  2. USBメモリのルートディレクトリに、BOOTUTIL64E.EFIとshellx64.efiを追加

    ├ BOOTUTIL64E.EFI
    └ shellx64.efi

    ※ shellx64.efiが不要な機種もある。

  3. PCを起動し、UEFI BIOS設定画面でセキュアブートを無効(or 非UEFI モード)にする。 → セキュアブートキーを削除 → Save Changes & Reset
  4. 再びUEFI BIOS設定画面に入り、EFI Shellを起動させる。

    セキュアブート無効 & セキュアブートキー(プラットフォームキー)が未読み込みの状態になっている必要がある。そうでない場合は、EFI Shellを起動できない。
  5. Mapping tableが表示されたら、USBメモリのFS(数字):を確認する。

    Mapping tableはコマンド map -b で表示可能
  6. FS(数字):と入力 → Enter

    FS0:

    通常、英語キーボード配列で認識される。

    : = 日本語キーボードのShift + ;(れ)

  7. プロンプトがFS(数字):\>となる。
    (カレントディレクトリがUSBメモリに変更された)

    lsコマンド or dirコマンドで、USBメモリの内容を確認可能。
  8. NVM Checksumの修正作業へ。

Windows

ドライバをインストールする必要があります。

Intel PROSetがインストールされている場合

Intel BootUtilのドライバをインストールする前に、Intel PROSetのアンインストールが必要です。

Readmefirst.txtに書かれていますが、Intel BootUtilのドライバをインストールすると、Intel PROSetのドライバを上書きしてしまいます。

Intel BootUtilが不要になったら、Intel PROSetを再インストールすることができます。

Windows用のBootUtilにはバッチファイル(install.bat、uninstall.bat)が付いてきます。このバッチファイルを実行すればドライバのインストール・アンインストールが可能なはず……。

しかし、私の環境(Windows 10 1809 64bit)ではインストールできませんでした。install.bat実行時、ドライバのコピーをC:\Windows\System32\driversフォルダー入れる際に拒否されています。

仕方がないので、手動でインストールしました。(Windowsのpnputilコマンドを使用)

Windows用 Intel BootUtil ドライバの手動インストール

64bit Windowsの場合

PREBOOT\APPS\BootUtil\Winx64フォルダー内のファイルを使用します。

  1. iqvsw64e.sysのコピーを、%systemroot%\system32\driversフォルダー内にペースト。
    (WindowsパーティションがCドライブの場合は、C:\Windows\System32\driversフォルダー)
  2. コマンドプロンプト(cmd.exe)を管理者として起動する。
  3. カレントディレクトリをiqvsw64e.infの親フォルダーのパスへ移動させる。

    cd /d (.infの親フォルダーのフルパス)

  4. pnputil -a iqvsw64e.inf

ドライバのインストールが完了したら、コマンドプロンプト画面を開いたまま、NVM Checksumの修正作業へ進みます。

32bit Windowsの場合

PREBOOT\APPS\BootUtil\Win32フォルダー内のファイルを使用します。

  1. iqvsw32.sysをコピーを、%systemroot%\system32\driversフォルダー内にペースト。
    (WindowsパーティションがCドライブの場合は、C:\Windows\System32\driversフォルダー)
  2. コマンドプロンプト(cmd.exe)を管理者として起動する。
  3. カレントディレクトリをiqvsw32.infの親フォルダーのパスへ移動させる。

    cd /d (.infの親フォルダーのフルパス)

  4. pnputil -a iqvsw32.inf

ドライバのインストールが完了したら、コマンドプロンプト画面を開いたまま、NVM Checksumの修正作業へ進みます。

Windows用 Intel BootUtil ドライバの手動アンインストール

64bit Windowsの場合
  1. コマンドプロンプト(cmd.exe)を管理者として起動する。
  2. pnputil -e
  3. コマンド結果から、「元の名前: iqvsw64e.inf、プロバイダー名: Intel、クラス名: NALDevice」を探し、その公開名「oemXX.inf」を確認する。
    (XX部分は数字)
  4. pnputil -d oemXX.inf
  5. %systemroot%\system32\drivers\iqvsw64e.sysがあれば削除します。
    (WindowsパーティションがCドライブの場合は、C:\Windows\System32\drivers\iqvsw64e.sys)
32bit Windowsの場合
  1. コマンドプロンプト(cmd.exe)を管理者として起動する。
  2. pnputil -e
  3. コマンド結果から、「元の名前: iqvsw32.inf、プロバイダー名: Intel、クラス名: NALDevice」を探し、その公開名「oemXX.inf」を確認する。
    (XX部分は数字)
  4. pnputil -d oemXX.inf
  5. %systemroot%\system32\drivers\iqvsw32.sysがあれば削除します。
    (WindowsパーティションがCドライブの場合は、C:\Windows\System32\drivers\iqvsw32.sys)

Linux

ドライバをインストールする必要があります。

Linux用については、次のサイトで詳しく丁寧に説明されています。そちらをご覧ください。

Linux で Intel の 有線 LANが認識しない問題の解決方法(The NVM Checksum Is Not Valid) - Qiita
https://qiita.com/m-tmatma/items/9620f674f0c01dd2d07b

NVM Checksumの修正作業

Intel BootUtilを使って、Intel NICのPXE設定をデフォルトに戻します。それにより、NVM Checksumも修正されます。

BootUtilコマンドをオプション無しで実行

PCに搭載されているIntel NICのリストを表示させます。

DOS
BootUtil.exe

上記コマンドはDOSの場合です。使用するBootUtil実行ファイル名に合わせて、コマンドを変更してください。

Intel BootUtilの実行ファイル名

  • DOS: BootUtil.exe
  • EFI2_x64: BOOTUTIL64E.EFI
  • Win32: BOOTUTILW32.EXE
  • Win64: BOOTUTILW64E.EXE
  • Linux32: bootutil32
  • Linux_x64: bootutil64e

コマンド結果を見て、Port番号を確認する。

RESULT
>BootUtil.exe

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.7.21.0
Copyright (C) 2003-2020 Intel Corporation

Type BootUtil -? for help

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   ************     0:31.6 Gigabit N/A FLASH Not Present

NVM Checksumの修正が必要なIntel NICを探し、そのPort番号を確認します。複数のNICが表示されている場合は、Network Address(= NICのMAC Address)やSeriesで判別します。

NICのPXE設定をデフォルトに戻す。

DOS
BootUtil.exe -NIC=XX -DEFAULTCONFIG

コマンドライン オプションの説明

-NIC=XX
NICを指定します。XXにNICのPort番号を入れます。

-DEFAULTCONFIG or -DEFCFG
指定したNICのPXE設定をデフォルトに戻します。

RESULT
>BootUtil.exe -NIC=1 -defaultconfig

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.7.21.0
Copyright (C) 2003-2020 Intel Corporation

Setting PXE EEPROM words back to defaults on NIC 1...done

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   ************     0:31.6 Gigabit N/A FLASH Not Present

doneと表示されたら成功です。

Windows用 Intel Bootutil ドライバはアンインストールして構いません。(→ ドライバの手動アンインストール)

-DEFAULTCONFIG (-DEFCFG) オプションを使用するとエラーになる場合

http://mynixworld.info/2012/12/05/e1000e-the-nvm-checksum-is-not-valid/
のコメント欄を参照

Intel BootUtilでNICのWake On LAN (WOL)機能の有効/無効を切り替えるだけでも、NVM Checksumが修正(リセット)されるそうです。

ただし、現在のWOL設定が有効/無効のどちらなのかについては、各自確認しなければならないでしょう。

以上で修正作業は終わりです。

"The NVM Checksum Is Not Valid"問題 LinuxとWindowsの挙動の違い

LinuxではLANドライバが動作せず、Windowsでは動作していました。

これについては、次のサイトで言及されています。

http://mynixworld.info/2012/12/05/e1000e-the-nvm-checksum-is-not-valid/

Linuxの場合
NVM Checksumを確認し、Checksumがvalid(有効)でない場合はNICのドライバをロードしません。
Windowsの場合
NVM Checksumの問題を無視してドライバをロードします。

Intel 有線 NICのNVMはどこにある?

マザーボード上のBIOS Chip内のGbe Regionです。[Intel CPU、UEFI BIOS、Intel (CS)ME 対応のマザーボード場合] つまり、BIOS内。

通常、Gbe Regionの内容は変化しません。しかし例外はあります。

オンボードIntel NICのNVMとNVM Checksumについての記事を書きました。

NVMとNVM Checksumの具体的な場所、BootUtil -DefaultConfig コマンドがGbe Regionに与える影響、NICのNVM Checksumが適切でなくなった原因を説明しています。

関連記事