Realtek 2.5GbE 系のオンボードLAN (RTL8125 / RTL8126 / その ODM 版である Killer E3000 など) を積んだ Linux マシンで、GPU を追加した後に LAN がリンクしなくなる問題は、カーネル標準ドライバ r8169 の PHY 初期化失敗が原因です (ハードウェア故障ではありません)。
対処は Realtek 純正ドライバ r8125 (DKMS) に切り替えること。r8169 を blacklist し、 initramfs に r8125 を組み込めば、再起動後も自動で復旧します。この記事はその完全な手順です。
ip link や ethtool で「Link detected: no」、インターフェースは DOWN のままつまり「LAN が物理的に壊れた」のではなく、ドライバが PHY を正しく初期化できていない状態です。
| 条件 | 詳細 |
|---|---|
| オンボード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 を追加するタイミングで遭遇しやすい問題です。
実体は「2.5GbE コントローラ RTL8125 + PHY RTL8226B」という Realtek 構成ですが、 Linux 標準ドライバ r8169 はこの PHY の初期化に失敗します。
ポイント: GPU が悪いわけでも、NIC が故障しているわけでもありません。 ドライバが正しい PHY 初期化シーケンスを踏めるかの問題なので、 Realtek 純正ドライバ (r8125) に固定すれば、GPU の有無に関係なく安定します。 (検証では r8125 切替後、起動 1 秒以内にドライバロード → 20 秒前後でリンク確立)
# 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 初期化失敗」と判断するのが正しいです。 ケーブルを刺し替えてリンクが出れば、ハードウェア正常と確定できます。
ネットワークが死んでいる状態から直すため、r8125 の .deb を入手する手段が先に必要です。
| 手段 | 内容 |
|---|---|
| 追加LANカード | 手元にあれば挿すだけでネット復旧 → そのまま STEP 1 へ |
| 別マシンで DL | 別 PC で .deb を取得して USB 等で持ち込む |
| テザリング等 | スマホの USB/Bluetooth テザリングなど一時接続 |
このステップを飛ばすと、途中で詰まった時に再調査ができません。必ず先に確保してください。
sudo apt-get update
sudo apt-get install -y dkms linux-headers-$(uname -r)
公式ビルド済み .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
sudo dpkg -i realtek-r8125-dkms_*.deb
dkms status # installed と表示されればOK
sudo modprobe r8125 # ロードできればビルド成功
lsmod | grep r8125
ここで失敗したら先に進まないこと (blacklist して再起動するとネットワークが失われます)。
対象 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カード経由・コンソール) を確保してから実施してください。
# ① 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
ip -br link # オンボードIF が UP
ethtool -i <IF> # driver: r8125
ip addr show <IF> # プライベートIP が DHCP 取得できている
lsmod | grep r8169 # 何も出なければOK
追加 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 等) は残るため、後でケーブルを挿し直せばそのまま使えます。
ドライバ切替が完了した後、追加LANカードを物理的に撤去する場合、もう一つ落とし穴があります。
Linux のインターフェース命名 (predictable naming) は PCI バス番号ベース (enpNs0 など) で名前を付けます。 追加LANカードを抜くとバス番号がズレて、オンボードNICのインターフェース名が変わることがあります (実測例: 名前が enpXs0 → enpYs0 のように別番号に変化。NIC 自体は同一で MAC アドレスも同一)。
netplan が「名前ベース」で書かれている場合、新しい名前には設定が適用されず、 DHCP が効かずネットワーク不通になります。
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 をさらに増設する予定がある場合も、この設定にしておけば安心です。
r8125 は DKMS 管理のため、カーネル更新時に自動で再ビルドされますが、 再ビルドには linux-headers が必要です。
sudo apt-get install -y linux-headers-$(uname -r)
dkms status # 各カーネルで installed になっているか確認
もし再ビルドに失敗すると、r8169 も blacklist しているため NIC が全滅します
(≒ ネットワーク喪失)。カーネル更新後は dkms status の確認を習慣にしましょう。
万一失敗した場合は、blacklist を外して r8169 で起動すれば復旧できます。
dkms status 確認この記事の手順は、オンボード LAN が RTL8125 系のマシン (デスクトップ・サーバーを問わず) で そのまま流用できます。同じ問題で困っている方の参考になれば幸いです。