Featured image of post Realtek R8125

Realtek R8125

PVE 上 Realtek RTL8125 2.5G 网卡改用官方 r8125 驱动:编译安装与黑名单禁用 r8169,以及内核升级后驱动失效的防失联处理与救援步骤

Background

2.5G网卡,iperf3测速只有1G

Solution

1. 查询网卡及其驱动信息

# 查询网卡pci编号
lspci | grep RTL8125
# 06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)

# 查询网卡加载的驱动
lspci -s 06:00.0 -k
# 06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
#         Subsystem: ASUSTeK Computer Inc. RTL8125 2.5GbE Controller
#         Kernel driver in use: r8169
#         Kernel modules: r8169

2. 安装r8125驱动

GitHub - awesometic/realtek-r8125-dkms: A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE.

apt update

apt install -y dkms pve-headers-$(uname -r) git

git clone https://github.com/awesometic/realtek-r8125-dkms.git

cd realtek-r8125-dkms

./dkms-install.sh

3. 禁用r8169驱动

# 检查是否仍在加载r8169驱动
lsmod | grep -i r8169
# r8169                 114688  0

# 禁用r8169驱动
sudo tee -a /etc/modprobe.d/blacklist-r8169.conf > /dev/null <<EOT
# To use r8125 driver explicitly
blacklist r8169
EOT

# 更新内核初始化文件 (让黑名单生效)
sudo update-initramfs -u

reboot

Reference

PVE 8安装 ReakTEK RTL8125B 2.5G网卡驱动 - 知乎

FAQ

1. sudo update-initramfs -u 告警

sudo update-initramfs -u

# output
update-initramfs: Generating /boot/initrd.img-6.8.12-18-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
# warning
System booted in EFI-mode but 'grub-efi-amd64' meta-package not installed!
Install 'grub-efi-amd64' to get updates.

Removable bootloader found at '/boot/efi/EFI/BOOT/BOOTX64.efi', but GRUB packages not set up to update it!
Run the following command:
# solution
echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u

Then reinstall GRUB with 'apt install --reinstall grub-efi-amd64'

2. PVE内核升级后网卡驱动失效

apt dist-upgrade 升级 PVE 时可能升级内核,DKMS 安装的 r8125 驱动需为新内核重新编译。

正确处理方式(避免失联)

升级后不要立即重启。此时系统仍在运行旧内核,r8125 驱动正常工作,网络未断开。

利用当前网络,先解除 r8169 黑名单,确保新内核的备用方案就绪:

# 重启前解除 r8169 黑名单,让新内核回落为 r8169
sed -i 's/^blacklist r8169/#blacklist r8169/' /etc/modprobe.d/blacklist-r8169.conf
update-initramfs -u
reboot

重启后新内核加载 r8169 驱动,网络正常连接。通过 SSH 远程完成后续操作:

# 安装新内核头文件(此时 uname -r 为新内核版本)
apt install pve-headers-$(uname -r) -y
cd /root/realtek-r8125-dkms
./dkms-install.sh

# 恢复黑名单,禁用 r8169,让 r8125 接管
sed -i 's/^#blacklist r8169/blacklist r8169/' /etc/modprobe.d/blacklist-r8169.conf
update-initramfs -u
reboot

第二次重启后,r8125 驱动为当前内核编译,正常工作。

若已重启导致失联(物理恢复)

如果已经重启并断网(r8125 未为新内核编译、r8169 被黑名单屏蔽),需接显示器键盘物理恢复:

# 临时恢复 r8169 驱动
sed -i 's/^blacklist r8169/#blacklist r8169/' /etc/modprobe.d/blacklist-r8169.conf
update-initramfs -u
reboot

网络恢复后,执行上述 正确处理方式 中的安装头文件、重装 r8125 驱动、恢复黑名单、重启步骤。

也可以重启后选旧内核启动(GRUB → Advanced options),进去后网络正常,再为新内核重新编译驱动。