r8169
虽然该驱动可以实现基本网络功能,但其性能和稳定性相对有限。
r8169r8125# 0. 查看当前驱动状态(可选) lsmod | grep -E "r8169|r8125|r8168" lspci -k | grep -A 3 RTL8125 # 1. 安装DKMS及内核头文件 apt update apt install -y dkms pve-headers-$(uname -r) # 2. 获取r8125源码包 cd /tmp git clone https://github.com/awesometic/realtek-r8125-dkms.git cd /tmp/realtek-r8125-dkms # 3. 使用DKMS安装新驱动 ./dkms-install.sh dkms status # 4. 屏蔽旧驱动r8169 echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf cat /etc/modprobe.d/blacklist-r8169.conf # 5. 更新initramfs镜像 update-initramfs -u # 6. 手动加载r8125驱动(可选) modprobe r8125 lsmod | grep -E "r8169|r8125" # 7. 重启系统 reboot # 8. 验证结果 lspci -k | grep -A 3 RTL8125 lsmod | grep -E "r8169|r8125" ip link show ping -c 3 192.168.1.2 # 替换为你的网关IP详细操作说明与日志示例见后续章节。
Linux 6.8.12-4-pve (2024-11-06T15:04Z)RTL8125 2.5GbE Controllerr8169r81259.016.01lsmod | grep -E "r8169|r8125|r8168"实战输出节选:
root@pve:~# lsmod | grep -E "r8169|r8125|r8168"
r8169 110592 0r8169r8125lspci -k | grep -A 3 RTL8125实际输出:
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
Subsystem: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
Kernel driver in use: r8169
Kernel modules: r8169
--
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 04)
Subsystem: Micro-Star International Co., Ltd. [MSI] RTL8125 2.5GbE Controller
Kernel driver in use: r8169
Kernel modules: r8169r8169ip link show部分输出示例:
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr1 state UP group default qlen 1000
link/ether 88:c9:b3:bb:d2:1f brd ff:ff:ff:ff:ff:ff
3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
link/ether 2c:f0:5d:da:a1:ab brd ff:ff:ff:ff:ff:ff
5: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
6: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...ip route showenp4s0vmbr0enp1s0vmbr1r8169find /lib/modules/$(uname -r) -name "*r8125*" -o -name "*8125*"同时查看DKMS当前管理状态:
dkms status实战反馈:
root@pve:~# find /lib/modules/$(uname -r) -name "*r8125*" -o -name "*8125*"
root@pve:~#root@pve:~# dkms status
-bash: dkms: command not foundapt update部分执行日志:
Hit:1 https://mirrors.ustc.edu.cn/debian bookworm InRelease
...
Err:7 https://enterprise.proxmox.com/debian/ceph-quincy bookworm InRelease
401 Unauthorized [IP: 51.79.228.122 443]
...
E: The repository 'https://enterprise.proxmox.com/debian/ceph-quincy bookworm InRelease' is not signed.apt install -y dkms pve-headers-$(uname -r)此举将安装动态内核模块支持框架以及当前运行内核所需的头文件,为后续编译提供基础支持。
cd /tmp git clone https://github.com/awesometic/realtek-r8125-dkms.git cd /tmp/realtek-r8125-dkms
./dkms-install.sh完成后查看DKMS管理状态:
dkms status正常情况下应显示r8125驱动已成功注册并构建完成。
echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf验证写入内容:
cat /etc/modprobe.d/blacklist-r8169.conf确保输出为“blacklist r8169”。
update-initramfs -u该步骤确保新的模块策略被固化进引导镜像。
modprobe r8125再次检查模块加载状态:
lsmod | grep -E "r8169|r8125"确认r8125已载入且无冲突。
reboot
lspci -k | grep -A 3 RTL8125确认输出中显示使用的是r8125而非r8169。
lsmod | grep -E "r8169|r8125"应仅出现r8125,r8169不应被加载。
ip link show所有网卡接口应正常呈现。
ping -c 3 192.168.1.2(请替换为你本地网络的网关地址),确保通信正常。
不影响后续 dkms 与内核头文件的安装操作,相关提示可安全忽略。
使用以下在实际环境中验证有效的命令进行安装:
apt install -y dkms pve-headers-$(uname -r)
执行该命令后,在你的系统中输出结果如下所示:
root@pve:~# apt install -y dkms pve-headers-6.8.12-4-pve
Note, selecting 'proxmox-headers-6.8.12-4-pve' instead of 'pve-headers-6.8.12-4-pve'
dkms is already the newest version (3.0.10-8+deb12u1).
...
Setting up proxmox-headers-6.8.12-4-pve (6.8.12-4) ...
安装完成后,可能出现“已是最新版本”的提示,均属正常情况。
关键点在于确认已成功安装与当前运行内核版本相匹配的头文件包。
dkms
proxmox-headers-6.8.12-4-pve
若系统未预装 git 工具,建议一并安装(此步骤适用于尚未安装 git 的用户,你当前环境已具备,无需重复操作):
apt install -y git
进入临时工作目录,并从 GitHub 拉取 Realtek r8125 的 DKMS 封装驱动:
cd /tmp
git clone https://github.com/awesometic/realtek-r8125-dkms.git
实际执行过程中的输出信息如下:
root@pve:/tmp# git clone https://github.com/awesometic/realtek-r8125-dkms.git
Cloning into 'realtek-r8125-dkms'...
remote: Enumerating objects: 617, done.
remote: Counting objects: 100% (206/206), done.
...
Resolving deltas: 100% (437/437), done.
进入克隆后的目录,检查内容是否存在:
cd /tmp/realtek-r8125-dkms
ls -la
部分输出示例如下:
drwxr-xr-x 5 root root 4096 Nov 23 19:41 .
drwxrwxrwt 9 root root 4096 Nov 23 19:41 ..
-rw-r--r-- 1 root root 2469 Nov 23 19:41 autorun.sh
drwxr-xr-x 3 root root 4096 Nov 23 19:41 debian
-rw-r--r-- 1 root root 379 Nov 23 19:41 dkms.conf
...
drwxr-xr-x 2 root root 4096 Nov 23 19:41 src
进一步查看 dkms 配置文件,确认模块名称及版本信息:
cat dkms.conf
输出内容如下:
PACKAGE_NAME="realtek-r8125"
PACKAGE_VERSION="9.016.01"
...
BUILT_MODULE_NAME[0]="r8125"
BUILT_MODULE_LOCATION[0]="src"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"
在以下目录中执行安装脚本:
cd /tmp/realtek-r8125-dkms
./dkms-install.sh
/tmp/realtek-r8125-dkms
执行过程中部分输出日志如下:
About to run dkms install steps...
Creating symlink /var/lib/dkms/r8125/9.016.01/source -> /usr/src/r8125-9.016.01
...
Building module:
Cleaning build area...
'make' -j12 KVER=6.8.12-4-pve BSRC=/lib/modules/6.8.12-4-pve modules......
Signing module /var/lib/dkms/r8125/9.016.01/build/src/r8125.ko
...
r8125.ko:
- Installation
- Installing to /lib/modules/6.8.12-4-pve/updates/dkms/
depmod...
Finished running dkms install steps.
当看到如下提示时:
Finished running dkms install steps.
表明驱动已完成编译并成功注册到系统中。
检查编译生成的内核模块是否存在于指定路径:
ls -la /lib/modules/$(uname -r)/updates/dkms/r8125.ko
同时查看 dkms 当前管理的模块状态:
dkms status
输出结果如下:
root@pve:~# ls -la /lib/modules/$(uname -r)/updates/dkms/r8125.ko
-rw-r--r-- 1 root root 505869 Nov 23 19:43 /lib/modules/6.8.12-4-pve/updates/dkms/r8125.ko
root@pve:~# dkms status
r8125/9.016.01, 6.8.12-4-pve, x86_64: installed
至此,新驱动已成功集成进系统。下一步是确保系统优先加载 r8125 而非默认的 r8169 驱动。
将 r8169 模块列入禁止自动加载列表:
echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf
cat /etc/modprobe.d/blacklist-r8169.conf
执行结果如下:
root@pve:~# cat /etc/modprobe.d/blacklist-r8169.conf
blacklist r8169
该操作的作用是通知内核:今后不再自动载入 r8169 模块。
由于涉及内核模块加载策略变更,需重新生成 initramfs 镜像:
update-initramfs -u
执行更新后部分输出如下:
update-initramfs: Generating /boot/initrd.img-6.8.12-4-pve
Running hook script 'zz-proxmox-boot'..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
完成此步后,重启时系统将依据新的 initramfs 配置来加载驱动模块。
此步骤非强制,但有助于提前确认模块可用性。
# 手动加载 r8125 模块
modprobe r8125
# 查看当前内存中活跃的网卡驱动
lsmod | grep -E "r8169|r8125"
# 显示 r8125 模块基本信息
modinfo r8125 | head -20
部分实战输出如下:
root@pve:~# lsmod | grep -E "r8169|r8125"
r8125 307200 0
r8169 110592 0
root@pve:~# modinfo r8125 | head -20
filename: /lib/modules/6.8.12-4-pve/updates/dkms/r8125.ko
version: 9.016.01-NAPI
license: GPL
description: Realtek r8125 Ethernet controller driver
...
说明:此时 r8125 模块已成功载入内存,但物理网卡仍由 r8169 驱动控制。真正的切换将在重启后由系统自动完成设备绑定。
执行重启命令:
reboot
待系统启动完毕后,通过控制台或 SSH 登录,继续进行功能验证。
使用以下命令检测 RTL8125 设备所关联的驱动:
lspci -k | grep -A 3 RTL8125
输出结果如下:
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
Subsystem: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
Kernel driver in use: r8125
Kernel modules: r8169, r8125
--
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 04)
Subsystem: Micro-Star International Co., Ltd. [MSI] RTL8125 2.5GbE Controller
Kernel driver in use: r8125
Kernel modules: r8169, r8125
重点关注这一行:
Kernel driver in use: r8125
表明两张 RTL8125 网卡均已切换至 r8125 驱动。
检查当前运行模块中是否排除了 r8169:
lsmod | grep -E "r8169|r8125"
输出如下:
root@pve:~# lsmod | grep -E "r8169|r8125"
r8125 307200 0
仅存在
r8125
而无
r8169
说明黑名单机制已起效。
查看网卡接口详情:
ip link show
节选输出如下:
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr1 state UP mode DEFAULT group default qlen 1000
link/ether 88:c9:b3:bb:d2:1f brd ff:ff:ff:ff:ff:ff
3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP mode DEFAULT group default qlen 1000
link/ether 2c:f0:5d:da:a1:ab brd ff:ff:ff:ff:ff:ff
5: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
6: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
可见:
UP
pfifo_fast
mq
发起 ping 测试验证基本通信能力:
ping -c 3 192.168.1.2
输出结果如下:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.734 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.677 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.904 ms
...
3 packets transmitted, 3 received, 0% packet loss
结论:默认网关可达,网络功能正常,驱动切换顺利完成。
由于两张网卡均为 RTL8125 型号,故会统一由同一内核模块驱动:
r8169
r8125
建议提前明确哪张为管理口网卡。
通常 PVE 的 Web 管理界面绑定于特定接口,实践中可通过以下方式识别:
vmbr0
在你的环境中具体表现为:
enp4s0
→
vmbr0
→ 默认路由
enp1s0切换过程中网络连接会短暂中断,特别是在执行重启操作时。因此强烈建议采取以下方式操作:
可能原因包括:
initramfs 驱动更新未成功完成r8169 r8169 模块仍被系统加载r8125 r8125 驱动未能成功编译或安装建议使用的排查命令如下:
# 查看黑名单文件是否正确配置
cat /etc/modprobe.d/blacklist-r8169.conf
# 重新生成 initramfs 镜像以确保配置生效
update-initramfs -u
# 检查 DKMS 模块的当前状态
dkms status
可能原因:
推荐排查方法:
# 查阅内核日志中关于 r8125 的错误信息
dmesg | grep -i r8125
journalctl -k | grep -i r8125
# 尝试重新安装驱动
cd /tmp/realtek-r8125-dkms
./dkms-remove.sh
./dkms-install.sh
若尝试在网卡运行期间执行卸载操作:
modprobe -r r8169
通常会失败,这属于正常现象。
正确的处理方式是:
让系统在启动阶段就避免加载 r8169 模块,而非尝试在线移除。
如果对切换结果不满意,或出现兼容性问题,可按以下步骤恢复原始配置:
# 1. 删除黑名单配置文件
rm /etc/modprobe.d/blacklist-r8169.conf
# 2. 卸载当前已加载的 r8125 模块(如存在)
modprobe -r r8125 || true
# 3. 更新初始 RAM 文件系统
update-initramfs -u
# 4. 重启系统以应用变更
reboot
重启完成后,系统将自动重新启用内核自带的
r8169
驱动模块。
本文详细记录了从 r8169 驱动切换至 r8125 的完整实践流程,所有关键操作均附有真实执行日志作为参考。
核心步骤仅需三步:
完成切换后,您将获得:
mqProxmox VE, Linux 6.8.12-4-pve
vmbr1
扫码加好友,拉您进群



收藏
