2022/08/09(火) [n年前の日記]
#2 [ubuntu] Ubuntu 20.04 LTS上でr8169ドライバが使われてしまう問題
手元のサブPC、Core2Duo E8400機 + Ubuntu Linux 20.04 LTS の環境で、LAN? NIC? のドライバが間違ってロードされてることに今頃気づいた。
Core2Duo E8400機で使ってる M/B、GIGABYTE GA-G31M-ES2L は、LAN用のチップとして Realtek RTL8111C が載っている。
_GA-G31M-ES2L (rev. 1.x) スペック | マザーボード - GIGABYTE Japan
しかし、Ubuntu 20.04 上では r8169 というドライバが読み込まれていた。本来、RTL8111 なら、r8169 ではなく r8168 が読み込まれないといけない。
そんなわけで、r8168 が使われるように変更してみた。
まずは現状を確認。lsmod と打ってみる。r8169 が表示されたら、間違ったドライバが読み込まれている。
Ubuntu は、r8168 に変更するためのパッケージが公式リポジトリにちゃんと用意されていた。ありがたや。インストールする。
そのままだと r8169 が相変わらず読み込まれるっぽいので、r8169 をブラックリストに登録する。r8168-dkms パッケージをインストールした際に、r8169 をブラックリストに登録するためのファイルもインストールされているのだけど、該当行がコメントアウトされているので一部修正。
sudo reboot で再起動後、lsmod で r8168 が表示されることを確認。
Core2Duo E8400機で使ってる M/B、GIGABYTE GA-G31M-ES2L は、LAN用のチップとして Realtek RTL8111C が載っている。
_GA-G31M-ES2L (rev. 1.x) スペック | マザーボード - GIGABYTE Japan
> LAN 1. RTL 8111C chip (10/100/1000 Mbit)
しかし、Ubuntu 20.04 上では r8169 というドライバが読み込まれていた。本来、RTL8111 なら、r8169 ではなく r8168 が読み込まれないといけない。
そんなわけで、r8168 が使われるように変更してみた。
まずは現状を確認。lsmod と打ってみる。r8169 が表示されたら、間違ったドライバが読み込まれている。
Ubuntu は、r8168 に変更するためのパッケージが公式リポジトリにちゃんと用意されていた。ありがたや。インストールする。
sudo apt install r8168-dkms
そのままだと r8169 が相変わらず読み込まれるっぽいので、r8169 をブラックリストに登録する。r8168-dkms パッケージをインストールした際に、r8169 をブラックリストに登録するためのファイルもインストールされているのだけど、該当行がコメントアウトされているので一部修正。
sudo vi /etc/modprobe.d/r8168-dkms.conf
#blacklist r8169 ↓ blacklist r8169
sudo reboot で再起動後、lsmod で r8168 が表示されることを確認。
$ lsmod | grep r8 r8168 548864 0
◎ 参考ページ。 :
_networking - Ubuntu 20.04 Ethernet R8168 - Ask Ubuntu
_ubuntu 20.04 Realtek RTL8168 / r8168 ネットワーク ドライバ インストール - rokkonet
_RTL8111/8168/8411 のインストールに苦悩した話 | tarufulog
_Ubuntu 16.04 で ASUS H110T の Ethernet ポートが認識されない問題の対処方法
_ubuntu 20.04 Realtek RTL8168 / r8168 ネットワーク ドライバ インストール - rokkonet
_RTL8111/8168/8411 のインストールに苦悩した話 | tarufulog
_Ubuntu 16.04 で ASUS H110T の Ethernet ポートが認識されない問題の対処方法
◎ 余談。 :
lspci とか、sudo lshw -c network と打つと、もう少し情報が出てくるらしい。
$ lspci | grep Eth 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02) $ lspci -v | grep r8 Kernel driver in use: r8168 Kernel modules: r8168 $ sudo lshw -c network *-network 詳細: イーサネット interface 製品: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller ベンダー: Realtek Semiconductor Co., Ltd. 物理ID: 0 バス情報: pci@0000:03:00.0 論理名: enp3s0 バージョン: 02 シリアル: 00:1f:d0:cf:6c:96 サイズ: 1Gbit/s 容量: 1Gbit/s 幅: 64 bits クロック: 33MHz 性能: pm msi pciexpress msix vpd bus_master cap_list rom __________________ physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation 設定: autonegotiation=on broadcast=yes driver=r8168 driverversion=8.048.00-NAPI duplex=full ip=192.168.1.14 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s リソース: irq:17 IOポート:be00(サイズ=256) メモリー:fdeff000-fdefffff メモリー:fdee0000-fdeeffff メモリー:fd900000-fd90ffff
◎ 余談その2。 :
このあたりの作業をしていて、ふと気づいた。ひょっとして、足元に置いてある、別のサブPC、A8-3850機も同じ状態なのではないか…?
A8-3850機のM/B は GIGABYTE GA-A75M-UD2H (rev. 1.0)。
_GA-A75M-UD2H (rev. 1.0) スペック | マザーボード - GIGABYTE Japan
これも RTL8111C が載ってると書いてある。後で r8169 がロードされてないかチェックしてみないと…。
※ 2022/08/10追記。A8-3850機、GIGABYTE GA-A75M-UD2H (rev. 1.0) も r8169 がロードされてしまっていた。r8168 に変更しておいた。
A8-3850機のM/B は GIGABYTE GA-A75M-UD2H (rev. 1.0)。
_GA-A75M-UD2H (rev. 1.0) スペック | マザーボード - GIGABYTE Japan
これも RTL8111C が載ってると書いてある。後で r8169 がロードされてないかチェックしてみないと…。
※ 2022/08/10追記。A8-3850機、GIGABYTE GA-A75M-UD2H (rev. 1.0) も r8169 がロードされてしまっていた。r8168 に変更しておいた。
[ ツッコむ ]
以上です。