Z790 D DDR4 (rev. 1.0) のNIC をubuntu 20.04で認識させる話

現在絶賛サーバ新調中です.
本当はOSのセットアップはいちからするのが普通です…
しかし、めんどくさいのですよ。元の環境を復旧させるのは…
なので、ドライブを入れ替えるだけで今回はさせていただきました
で、今回の記事はそのときにNICが認識しない不具合を解消したメモです

昨今はドライブを入れ替えてもCPUとかメモリとか変更する箇所は特にないので…
とか思っていましたが交換したマザーボード Z790 D DDR4は悪名な高いRealtekだったのですw

動作環境

wataru@gitlab:~$ uname -a
Linux gitlab 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
wataru@gitlab:~$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

メモ

はい、なぜRealtekが悪名な高いかというと…

自動で適用されるRealtekのNICドライバ(r8169)の動きが変なわけです
オートネゴがおかしく繋がらないらしいです(風の噂)
これは結構古い問題なのでなんとかして欲しいかな…

ともあれ、自動適用されたドライバ r8169を正しいドライバに変更すれば完了となります。

正しいドライバがわからないので動作しているチップを確認します

wataru@gitlab:~$ lspci | grep -i realtek
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)

RTL8125ですね。

Realtekのページからドライバを取得します

https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software

ここからダウンロードすればOKです。
途中、Captchaの入力を求められますが入力してダウンロードしてください

ダウンロードファイル : r8125-9.010.01.tar.bz2

ドライバの適用方法は中にあるREADME通りにすれば適用されます

README抜粋はこんな感じです。autorun.shは必ずrootで実行してください

# tar vjxf r8125-9.010.01.tar.bz2
# cd r8125-9.010.01
# ./autorun.sh
# lsmod | grep r8125

とありますので手順通りしてモジュール適用をします。
終わるとこんな感じになります…(Try & でのスナップじゃないのですみません)

wataru@gitlab:~$ lsmod | grep r81
r8125                 221184  0

モジュールはちゃんと読み取っています。

もし、r8169が残っている場合はmodprobeで削除してください。

wataru@gitlab:~$ echo "blacklist r8169" | sudo tee -a /etc/modprobe.d/blacklist-r8169.conf
wataru@gitlab:~$ sudo modprobe -rvf r8169

モジュールが正しく動作しているかを正しく判定するためにPCを再起動します

再起動して、lsmodでちゃんと入っていることを確認できれば次の作業です。

ハード情報を確認します (※ IP割り当て後の結果なのでconfigurationとか入っています… )

wataru@gitlab:~$ lshw -c network
  *-network                 
       description: Ethernet interface
       product: RTL8125 2.5GbE Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:04:00.0
       logical name: enp4s0
       version: 05
       serial: d8:5e:d3:**:**:**
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8125 driverversion=9.009.02-NAPI duplex=full ip=192.168.1.201 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:18 ioport:3000(size=256) memory:4b900000-4b90ffff memory:4b910000-4b913fff

enp4s0と命名(logical name)されている様ですね

ついでにLinkがDOWNだったのでとりあえず接続してみます。

wataru@gitlab:~$ sudo ip link set enp4s0 up

これで DOWN状態からUP状態になりました!

これで!とは無理です。IPが割り当てられません
というか古いNICのlogical nameはens0だったのですが、今回は命名が変更されましてenp4s0になっております。

wataru@gitlab:~$ sudo vi /etc/netplan/00-installer-config.yaml

ens0って書いているところを置き換えるだけでOKです

変更後はネットワーク設定を適用すればOKです

wataru@gitlab:~$ sudo netplan apply

これでネットワークがつながりました

終いに

今回はサーバをそのままHDDを入れ替えた場合にNICがおかしくなった時の復旧方法を書いてみました。

ちゃんとインストールしたら入っていたはずです!(未確認)

ここまでくればサーバの引っ越しは完了かな

メモ

いかれ環境になってきましたねw

CPU 23 + 1個 メモリ128GB

wataru@gitlab:~$ cat /proc/cpuinfo | grep -e processor -e i7 | tail -n 2
processor	: 23
model name	: 13th Gen Intel(R) Core(TM) i7-13700KF
wataru@gitlab:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           125Gi        12Gi       105Gi       769Mi       7.6Gi       111Gi
Swap:           14Gi          0B        14Gi