GPU追加後にオンボードLAN (RTL8125 / Killer E3000) が認識されない問題と r8125 ドライバでの解決

日付: 2026-08-30

TL;DR

Realtek 2.5GbE 系のオンボードLAN (RTL8125 / RTL8126 / その ODM 版である Killer E3000 など) を積んだ Linux マシンで、GPU を追加した後に LAN がリンクしなくなる問題は、カーネル標準ドライバ r8169 の PHY 初期化失敗が原因です (ハードウェア故障ではありません)。

対処は Realtek 純正ドライバ r8125 (DKMS) に切り替えること。r8169 を blacklist し、 initramfs に r8125 を組み込めば、再起動後も自動で復旧します。この記事はその完全な手順です。


1. どんな症状か

つまり「LAN が物理的に壊れた」のではなく、ドライバが PHY を正しく初期化できていない状態です。

2. 発生しやすい環境

条件 詳細
オンボードNIC Realtek RTL8125 系 2.5GbE (PCI ID 10ec:8125) または Killer E3000 (10ec:3000)
対象外 旧型 RTL8111/8168 (ギガビット) は r8169 で安定動作するため通常は対象外
OS Linux (Ubuntu 22.04 / 24.04 で確認。カーネル 5.15 / 6.8 いずれでも再現)
ドライバ カーネル内蔵の r8169 を使用している状態
引き金 GPU を追加 / 2枚以上の複数枚構成 にする (PCIe トポロジが変わる)

デスクトップ向けマザーボード (AMD B550 系など) のオンボード 2.5GbE は RTL8125 を採用していることが 多く、GPU を追加するタイミングで遭遇しやすい問題です。

3. 原因

実体は「2.5GbE コントローラ RTL8125 + PHY RTL8226B」という Realtek 構成ですが、 Linux 標準ドライバ r8169 はこの PHY の初期化に失敗します。

ポイント: GPU が悪いわけでも、NIC が故障しているわけでもありません。 ドライバが正しい PHY 初期化シーケンスを踏めるかの問題なので、 Realtek 純正ドライバ (r8125) に固定すれば、GPU の有無に関係なく安定します。 (検証では r8125 切替後、起動 1 秒以内にドライバロード → 20 秒前後でリンク確立)

4. 診断

# NIC チップと現在のドライバ
lspci -nnk | grep -A3 -i ethernet
#   → "RTL8125 2.5GbE" または "Killer E3000" があり
#   → "Kernel driver in use: r8169" なら本記事の対象

# リンク状態
ethtool <IF> | grep -i 'Link detected'

# PHY 初期化の遅延を確認 (数百秒の遅延が出ていれば決定的)
sudo dmesg | grep -iE 'r8169|phy'

「認識されない」のではなく「ドライバの PHY 初期化失敗」と判断するのが正しいです。 ケーブルを刺し替えてリンクが出れば、ハードウェア正常と確定できます。

5. 解決手順 (コピペで実施可能)

STEP 0: ネットワーク手段の確保 (最重要)

ネットワークが死んでいる状態から直すため、r8125 の .deb を入手する手段が先に必要です。

手段 内容
追加LANカード 手元にあれば挿すだけでネット復旧 → そのまま STEP 1 へ
別マシンで DL 別 PC で .deb を取得して USB 等で持ち込む
テザリング等 スマホの USB/Bluetooth テザリングなど一時接続

このステップを飛ばすと、途中で詰まった時に再調査ができません。必ず先に確保してください。

STEP 1: dkms と kernel headers

sudo apt-get update
sudo apt-get install -y dkms linux-headers-$(uname -r)

STEP 2: r8125 DKMS パッケージの取得

公式ビルド済み .deb を配布している以下のリポジトリから取得します (apt に入っている r8125-dkms は古く動かない報告が多いため使わない):

wget https://github.com/awesometic/realtek-r8125-dkms/releases/download/9.018.00-1/realtek-r8125-dkms_9.018.00-1_amd64.deb

STEP 3: インストールとビルド確認

sudo dpkg -i realtek-r8125-dkms_*.deb
dkms status          # installed と表示されればOK
sudo modprobe r8125  # ロードできればビルド成功
lsmod | grep r8125

ここで失敗したら先に進まないこと (blacklist して再起動するとネットワークが失われます)。

STEP 4: ドライバ切替 (r8169 → r8125)

対象 NIC の BDF (BUS:DEVICE.FUNCTION) はマシンごとに違うため、自動特定します:

BDF=$(lspci -nn | grep -iE 'RTL8125|Killer E3000' | awk '{print $1}')
echo "BDF = $BDF"

sudo modprobe r8125
echo "$BDF" | sudo tee /sys/bus/pci/drivers/r8169/unbind
sleep 2
echo "$BDF" | sudo tee /sys/bus/pci/drivers/r8125/bind
sleep 3
sudo ip link set <IF> up   # IF は ip -br link / dmesg で確認 (例: enpNs0)

ethtool <IF> | grep -i 'Link detected'     # yes になれば成功

注意 (リモート作業): SSH で接続している NIC を unbind すると、その瞬間に切断されます。 別の接続手段 (追加LANカード経由・コンソール) を確保してから実施してください。

STEP 5: 永続化 (再起動後も自動で r8125 を使う)

# ① r8169 を無効化
echo 'blacklist r8169' | sudo tee /etc/modprobe.d/blacklist-r8169.conf

# ② ブート時ロード + initramfs 更新
echo 'r8125' | sudo tee -a /etc/initramfs-tools/modules
sudo update-initramfs -u

# ③ ネットワーク設定
#    既に DHCP / 固定IP の設定があれば変更不要。
#    何も無い場合のみ /etc/netplan/99-custom.yaml を追加:
#      network:
#        version: 2
#        ethernets:
#          <IF>:
#            dhcp4: true
#    ※ 既存の netplan 設定 (50-cloud-init.yaml 等) は書き換えない

sudo reboot

STEP 6: 再起動後の検証

ip -br link              # オンボードIF が UP
ethtool -i <IF>          # driver: r8125
ip addr show <IF>        # プライベートIP が DHCP 取得できている
lsmod | grep r8169       # 何も出なければOK

6. 副次問題: ケーブル / カードを外すと起動が遅くなる

追加 LAN カードやケーブルを外して運用した場合、起動が 2 分以上になることがあります。

原因: netplan が生成する systemd-networkd-wait-online が、ケーブル未接続 (no-carrier) の インターフェースも「degraded になるまで」待つため、2 分のタイムアウトまでブロックします。

対処: 使っていないインターフェースに optional: true を付けます。

sudo nano /etc/netplan/99-custom.yaml
#   使っていないIF (例: enpMs0) に追記:
#     <IF>:
#       dhcp4: true
#       optional: true    ← これを追加
sudo netplan apply

設定自体 (dhcp4 等) は残るため、後でケーブルを挿し直せばそのまま使えます。

7. さらに踏み込んだ注意: カード撤去でインターフェース名が変わる問題

ドライバ切替が完了した後、追加LANカードを物理的に撤去する場合、もう一つ落とし穴があります。

何が起きるか

Linux のインターフェース命名 (predictable naming) は PCI バス番号ベース (enpNs0 など) で名前を付けます。 追加LANカードを抜くとバス番号がズレて、オンボードNICのインターフェース名が変わることがあります (実測例: 名前が enpXs0 → enpYs0 のように別番号に変化。NIC 自体は同一で MAC アドレスも同一)。

netplan が「名前ベース」で書かれている場合、新しい名前には設定が適用されず、 DHCP が効かずネットワーク不通になります。

対策: MAC アドレスベース + set-name で固定する

netplan では、インターフェース名ではなく MAC アドレスでマッチさせ、さらに set-name で名前も固定できます。

network:
  version: 2
  ethernets:
    <IF>:                          # キー名は任意 (set-name で固定される名前)
      match:
        macaddress: "<NICのMACアドレス>"   # ip link / ethtool -P <IF> で確認
      set-name: <IF>               # 名前も固定
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100

実証結果

つまり「ドライバの r8125 固定」+「netplan の MAC ベース定義」の両方が揃うと、 PCIe 構成がどう変わってもネットワークが壊れない構成になります。 GPU をさらに増設する予定がある場合も、この設定にしておけば安心です。

8. カーネルアップデート時の注意

r8125 は DKMS 管理のため、カーネル更新時に自動で再ビルドされますが、 再ビルドには linux-headers が必要です。

sudo apt-get install -y linux-headers-$(uname -r)
dkms status   # 各カーネルで installed になっているか確認

もし再ビルドに失敗すると、r8169 も blacklist しているため NIC が全滅します (≒ ネットワーク喪失)。カーネル更新後は dkms status の確認を習慣にしましょう。 万一失敗した場合は、blacklist を外して r8169 で起動すれば復旧できます。

9. まとめ

この記事の手順は、オンボード LAN が RTL8125 系のマシン (デスクトップ・サーバーを問わず) で そのまま流用できます。同じ問題で困っている方の参考になれば幸いです。