Linuxカーネル4.15.0-48-genericでe1000eが認識できなくなる問題に対処した
要約
- Linuxカーネルを
4.15.0-48-generic
にアップグレードしたらNICドライバe1000eを認識しなくなった 4.15.0-48-generic
のままでe1000eをsudo make install
で入れ直そうとするとgccがエラーを吐いて止まる- カーネルを
4.15.0-48-generic
から4.15.0-47-generic
にダウングレードしたらe1000eを正常に再インストールできた
はじめに
メインで使っているUbuntu18.04でapt upgrade
した後に再起動したら、NICが認識しなくなりました。
NICのドライバが書き換わったと考えて、りゅーたさんの記事「Ubuntu 18.04 で通信が使えない問題の対応」を参考にしてsudo make install
したところ
You are building kernel with non-retpoline compiler, please update your compiler..
なるエラーが出て失敗しました。
なので、gccのバージョンの問題を疑って、ダウングレードしたものの、全然直らない。
/var/log/apt/history.log
を確認したところ、gccもアップグレードされていましたが、linuxのカーネルも一緒にアップグレードされていたことに気付きました。
そこで、Linuxのカーネルを4.15.0-48から4.15.0-47にダウングレードしたところe1000eをインストールすることができました。
今回は上記の問題を対処した方法について紹介します。
作業手順
カーネルのダウングレード方法はkumquat512さんのubuntu18.04でカーネルのダウングレードにある手順をそのまま実行しました。
そのため、以下で紹介する手順のほとんどを上記ブログから引用していますが、次の3点は私が変更を加えています。
ubuntu18.04でカーネルのダウングレードからの変更点
- カーネルのバージョンを今回ダウングレードするバージョンに変更
- 5番の「grub-customizerでインストールした「4.15.0-23-generic」を設定」が分かりづらかったので、私が行った設定を記載した
- 最後にe1000eのビルド手順を追加
カーネルをダウングレードする手順
- 現在のカーネルバージョンを確認
$ uname -r 4.15.0-48-generic
- ダウングレードするカーネルを検索
sudo apt-cache search linux-image | grep "4.15.0-47" sudo apt-cache search linux-headers | grep "4.15.0-47" sudo apt-cache search linux-modules-extra | grep "4.15.0-47"
- カーネルをインストール
sudo apt install linux-image-4.15.0-47-generic linux-headers-4.15.0-47 linux-modules-extra-4.15.0-47
- grub-customizerをインストール
sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer
ターミナルで
grub-customizer
を実行して4.15.0-47-generic
を起動OS選択画面の一番上に持ってくる/etc/apt/preferences.d/linux-kernel
を設定
勝手にカーネルがアップデートされないようにするため
Package: linux-generic Pin: version 4.15.0-47* Pin-Priority: 1001 Package: linux-headers-generic Pin: version 4.15.0-47* Pin-Priority: 1001 Package: linux-image-generic Pin: version 4.15.0-47* Pin-Priority: 1001
再起動
sudo reboot
カーネルを確認して
4.15.0-47-generic
になっていることを確認
$ uname -r 4.15.0-47-generic
- e1000eをビルドする
cd ~/e1000e-3.4.2.1/src sudo modprobe -r e1000e sudo make install sudo modprobe e1000e sudo update-initramfs -u -k $(uname -r)
終わりに
gccの問題ではないという事に気付くまでに時間が掛かりました。
これが同じ問題で困っている方の助けになれば幸いです。