果報

二度寝して待つ

Realtekの「r8168」ドライバをソースコードからインストールする

自宅サーバ(Ubuntu 22.04)のカーネルを6.5.0-14-genericにバージョンアップしたところ、有線LANで接続できなくなりました。

原因を調べた結果、先日インストールしたRealtekのNIC「RTL8111/8168/8411」用のドライバ「r8168-dkms」が、最新カーネルに対応していないため、NICを認識できなくなったようです。

text.yusukesakai.com

ただ、Realtek社のサイトには、最新カーネルに対応したドライバのソースコードが公開されているため、以下のサイトを参考にビルド・インストールしてみました。

askubuntu.com

インストール手順

以下のリンクから、ドライバをダウンロードします。選択するのは「GBE Ethernet LINUX driver r8168 for kernel up to 5.19」で、バージョンは8.052.01となります。

www.realtek.com

ダウンロード後、ファイルを展開します。

$ tar xvf r8168-8.052.01.tar.bz2

展開されたディレクトリに移動します。

$ cd r8168-8.052.01/src

ドライバ用の新しいディレクトリをroot権限で作成し、すべてのファイルをコピーします。

$ sudo mkdir /usr/src/r8168-8.052.01
$ sudo cp -v * /usr/src/r8168-8.052.01/

ドライバ用の新しいファイルdkms.confを作成します。

$ sudo nano /usr/src/r8168-8.052.01/dkms.conf

次の内容をファイルに追加します。

PACKAGE_NAME="r8168"
PACKAGE_VERSION="8.052.01"
BUILT_MODULE_NAME[0]="$PACKAGE_NAME"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="YES"
REMAKE_INITRD="YES"

ファイルを保存後、次のコマンドを実行してドライバをビルド、インストールします。

$ sudo dkms add -m r8168 -v 8.052.01
$ sudo dkms build -m r8168 -v 8.052.01 -k 6.5.0-14-generic
$ sudo dkms install -m r8168 -v 8.052.01 -k 6.5.0-14-generic

インストール後、dkms statusコマンドでチェックすると、インストールされているドライバが表示されます。

$ dkms status
r8168/8.052.01, 6.5.0-14-generic, x86_64: installed

サーバを再起動すると、正常に接続できるようになっているはずです。お疲れさまでした。

追記(2024/1/20)

aptリポジトリでも最新バージョンが有効になったようです。

packages.debian.org

余談

本件とは別で、カーネルバージョンアップ後にxrdpも繋がらない(ログイン認証画面は出るけど、正しい認証情報を入れると画面がすぐ消える)のだけど、なんでだろう。