お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2019-03-12 13:43:04

jcomeme
新しいメンバ
登録日: 2019-03-12

NICドライバを更新しても、古いドライバが読み込まれてしまいネットワークに接続できない

Ubuntu18.0.4を新しいPCにインストールしたところ、NICを認識しませんでした。

lspciによると、
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-V (rev 10)
このNICが使われていたため、e1000eというドライバをダウンロードしてきて、ビルドしてインストールしました。

ところがそれでも認識しないため、カーネルログを見たところ、
e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid
この様な行がありました。

仕方ないのでドライバのソースコードを書き換えて、
NVMチェックサムの確認を行わないようにビルドし直したところ、
今度は問題なくネットワークに接続できました。
これから暫くは問題は発生しませんでした。

ところが、カーネルのバージョンを4.18.0-15から4.18.0-16にアップグレードしたところ、
またもやNICを認識しなくなりました。
そこで同様の手順で再びドライバをビルドしてインストールしたところ、
その時はネットワークに接続できたので安心していたのですが、
次にPCを再起動すると、またもやNICを認識しなくなっていました。

カーネルのログを見ると、以下のようになっていました。

Mar 12 12:01:30 Controller kernel: [    1.060874] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
Mar 12 12:01:30 Controller kernel: [    1.060874] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
Mar 12 12:01:30 Controller kernel: [    1.061031] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
Mar 12 12:01:30 Controller kernel: [    1.266222] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid
Mar 12 12:01:30 Controller kernel: [    1.308201] e1000e: probe of 0000:00:1f.6 failed with error -5

わたしがインストールしたe1000eドライバのバージョンは3.4.2.3なのですが、
起動時にロードされているのは3.2.6-kです。
おそらくはカーネルが用意しているドライバなのでしょうが、NVMチェックサムのエラーが出ています。
そのためprobeに失敗しているようなのです。

起動した後、
sudo modprobe -r e1000e
sudo modprobe e1000e
とすると、

Mar 12 11:40:24 Controller kernel: [  137.881797] e1000e: Intel(R) PRO/1000 Network Driver - 3.4.2.3-NAPI
Mar 12 11:40:24 Controller kernel: [  137.881800] e1000e: Copyright(c) 1999 - 2019 Intel Corporation.
Mar 12 11:40:24 Controller kernel: [  137.882428] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
Mar 12 11:40:24 Controller kernel: [  138.119034] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
Mar 12 11:40:24 Controller kernel: [  138.204593] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 70:85:c2:b0:68:6a
Mar 12 11:40:24 Controller kernel: [  138.204598] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
Mar 12 11:40:24 Controller kernel: [  138.204696] e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
Mar 12 11:40:24 Controller kernel: [  138.209946] e1000e 0000:00:1f.6 eno1: renamed from eth0
Mar 12 11:40:28 Controller kernel: [  141.670733] e1000e: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

このように問題なく新しいドライバが読み込まれ、ネットワークに接続されます。

毎回起動するたびにmodprobeでモジュールのアンロードとロードを繰り返すのは馬鹿らしいので、
なんとか起動時に新しいドライバを読み込むようにしたいのですが、
どのようにすれば良いかわかりません。

ご存知の方がいらっしゃったら、教えていただければと思います。

よろしくお願いします。

オフライン

 

#2 2019-03-16 22:56:51

kznj
メンバ
登録日: 2013-12-03

Re: NICドライバを更新しても、古いドライバが読み込まれてしまいネットワークに接続できない

jcomeme による投稿:

毎回起動するたびにmodprobeでモジュールのアンロードとロードを繰り返すのは馬鹿らしいので、
なんとか起動時に新しいドライバを読み込むようにしたいのですが、
どのようにすれば良いかわかりません。

この分野はあまり詳しくないのですが……
 
この記事「オンボードのEthernetコントローラ(I219-V)がUbuntuで動かない時の対処」( https://blog.spiralray.net/archives/474 )によると、次のことをしています。
a) 新しいドライバを適用する  sudo modprobe e1000e
b) 正しく新しいドライバになったことを確認  modinfo e1000e
c) 適用したドライバをinitramfsに登録する  sudo update-initramfs -u
 
最新のドライバを適用した状態にして、次回起動時に使用するようにその状態をミニルートに反映させるとういことだと思います。
 
initramfsについては下記の記事を参照してください。
>Ubuntu Weekly Recipe 第384回 Initramfsのしくみ( http://gihyo.jp/admin/serial/01/ubuntu-recipe/0384 )

jcomeme による投稿:

ところが、カーネルのバージョンを4.18.0-15から4.18.0-16にアップグレードしたところ、
またもやNICを認識しなくなりました。

左記の記事では、カーネル更新時のことも書かれていて「DKMSによるドライバのインストール」をしています。
同じ方法が取れるのではないでしょうか?
 
以上です

オフライン

 

#3 2019-03-18 09:21:36

jcomeme
新しいメンバ
登録日: 2019-03-12

Re: NICドライバを更新しても、古いドライバが読み込まれてしまいネットワークに接続できない

kznj様

ご返信いただき、ありがとうございます。
ご指摘の通り、sudo update-initramfs -uを実行したところ解決しました。

当該記事には目を通してはいたのですが、initramfsのところを見落としていました。
参考記事も大変勉強になりました。

面倒なので別のNICを増設しようかと思っていたので、本当に助かりました。
ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB