Linux で Intel の 有線 LANが認識しない問題の解決方法 (The NVM Checksum Is Not Valid
の解決方法)
Intel の 有線 LAN を搭載した PC で Linux を使用しようとした場合以下のように The NVM Checksum Is Not Valid
のエラーが出て、認識しない場合の解消方法を説明します。
ubuntu@ubuntu:~$ dmesg | grep e1000
[ 0.770292] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 0.770292] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[ 0.770448] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[ 1.052205] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid
[ 1.139563] e1000e: probe of 0000:00:1f.6 failed with error -5
関連リンク
https://superuser.com/questions/1104537/how-to-repair-the-checksum-of-the-non-volatile-memory-nvm-of-intel-ethernet-co
http://faq3.dospara.co.jp/faq/show/6289?site_domain=default
https://downloadcenter.intel.com/ja/download/29137/
解決方法
https://downloadcenter.intel.com/ja/download/29137 の Preboot.tar.gz
に入っている bootutil64e
を使用して Ethernet Controller の NVM を初期化する。
必要なもの
-
Preboot.tar.gz
をダウンロードできる環境 - USB メモリ 2つ(Linux の Live USB と
Preboot.tar.gz
を入れるための USB メモリ)
処理の流れ
- BIOS で
Secure Boot
を OFF にする。(step 4 の実行に必要) - Linux の Live USB のメディアから起動する
-
Preboot.tar.gz
を解凍する - 専用のドライバをインストールする
-
bootutil64e
を実行して NVM をデフォルト設定に戻す ← すべてはこれを実行するための準備と後処理 - PC の電源を切る
- Live USB のメディアを抜き差しする
-
Secure Boot
を ON に戻す - Linux の Live USB のメディアから起動する
- Ethernet を認識していることを確認する
備考
- NIC のドライバに patch を充てるのではなく、有線 LAN の NVM を再設定するので、一度実行すると OS に関係なく有効です。
- Linux の Live USB のメディアから起動して作業するのは、一時的に署名なしドライバを使用後に署名なしドライバが残らないようにするためです。
1. BIOS で Secure Boot を OFF にする
手順はマザーボードに依存します。
ASRock の場合
- 電源投入直後に F2 キーをポンポンと押す。
-
Advanced
を押す。 -
Security
を押す。 -
Secure Boot
を押す。 -
Disabled
に変更する。 -
Exit
を押す。 -
Save Change and Exit
を押す。
参考:
https://www.asrock.com/support/index.jp.asp?cat=FindBIOS
2. Linux の Live USB のメディアから起動する
手順はマザーボードに依存する。
ASRock の場合
- 電源投入直後に F11 キーをポンポンと押す。
- Live USB のメディアを選択します。
-
Try Ubuntu without installing
を選んで ENTER を押す
3. Preboot.tar.gz を解凍する
USBメモリ に入れた Preboot.tar.gz をコピーして解凍する。
ubuntu@ubuntu:~$ tar xvfz Preboot.tar.gz
APPS/
APPS/BootUtil/
APPS/BootUtil/BootIMG.FLB
APPS/BootUtil/Docs/
APPS/BootUtil/Docs/bootutil.txt
APPS/BootUtil/iv.txt
APPS/BootUtil/Linux32/
APPS/BootUtil/Linux32/bootutil32
APPS/BootUtil/Linux32/DRIVER/
APPS/BootUtil/Linux32/DRIVER/install
APPS/BootUtil/Linux32/DRIVER/iqvlinux-1.2.0.13-0.noarch.rpm
APPS/BootUtil/Linux32/DRIVER/iqvlinux.tar.gz
APPS/BootUtil/Linux32/DRIVER/license_gpl.txt
APPS/BootUtil/Linux_x64/
APPS/BootUtil/Linux_x64/bootutil64e
APPS/BootUtil/Linux_x64/DRIVER/
APPS/BootUtil/Linux_x64/DRIVER/install
APPS/BootUtil/Linux_x64/DRIVER/iqvlinux-1.2.0.13-0.noarch.rpm
APPS/BootUtil/Linux_x64/DRIVER/iqvlinux.tar.gz
APPS/BootUtil/Linux_x64/DRIVER/license_gpl.txt
以降略
4. 専用のドライバをインストールする
ubuntu@ubuntu:~$ cd APPS/BootUtil/Linux_x64/DRIVER
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64/DRIVER$ sudo ./install
Extracting archive..OK!
Compiling the driver...OK!
Skipping removing QV driver - it does not exist...
Copying iqvlinux.ko driver file to /lib/modules directory...OK!
Driver installation verification...Installed!
Secure Boot
を OFF にしていない場合
Secure Boot
を OFF にしていない場合以下のエラーになる。
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64/DRIVER$ sudo ./install
Extracting archive..OK!
Compiling the driver...OK!
Skipping removing QV driver - it does not exist...
Copying iqvlinux.ko driver file to /lib/modules directory...OK!
Driver installation verification...modprobe: ERROR: could not insert 'iqvlinux': Operation not permitted
rmmod: ERROR: Module iqvlinux is not currently loaded
Installed!
5. bootutil64e を実行して NVM をデフォルト設定に戻す
bootutil64e に実行権限をつける
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64$ ls -l
total 3460
drwxr-xr-x 3 ubuntu ubuntu 140 Apr 18 13:05 DRIVER
-rw-r--r-- 1 ubuntu ubuntu 3541720 Nov 22 14:42 bootutil64e
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64$ chmod +x bootutil64e
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64$ ls -l
total 3460
drwxr-xr-x 3 ubuntu ubuntu 140 Apr 18 13:05 DRIVER
-rwxr-xr-x 1 ubuntu ubuntu 3541720 Nov 22 14:42 bootutil64e
bootutil64e を引数なしで実行して状態を確認
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64$ sudo ./bootutil64e
Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.7.10.10
Copyright (C) 2003-2019 Intel Corporation
Type BootUtil -? for help
Port Network Address Location Series WOL Flash Firmware Version
==== =============== ======== ======= === ============================= =======
1 xxxxxxxxxxxx 0:31.6 Gigabit N/A FLASH Not Present
bootutil64e を実行して NVM をデフォルト状態に設定 (これが核心)
ubuntu@ubuntu:~/APPS/BootUtil/Linux_x64$ sudo ./bootutil64e -NIC=1 -DEFAULTCONFIG
Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.7.10.10
Copyright (C) 2003-2019 Intel Corporation
Setting PXE EEPROM words back to defaults on NIC 1...done
Port Network Address Location Series WOL Flash Firmware Version
==== =============== ======== ======= === ============================= =======
1 xxxxxxxxxxxx 0:31.6 Gigabit N/A FLASH Not Present
6. PC の電源を切る
いったん PC の電源を切る
7. Live USB のメディアを抜き差しする
抜き差ししないと、次に起動したときに認識しないみたいので、抜き差しする。
8. Secure Boot を ON に戻す
1. BIOS で Secure Boot を OFF にする
の手順と同様にして Secure Boot
を ON
に戻す
9. Linux の Live USB のメディアから起動する
2. Linux の Live USB のメディアから起動する
と同様にして、Live USB のメディアから起動する
10. Ethernet を認識していることを確認する
ubuntu@ubuntu:~$ dmesg | grep e1000
[ 0.809135] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[ 0.809135] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
中略
[ 21.479526] e1000e: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
ip a
コマンドでも認識できるのを確認できる。ネットワークにも接続できる。