尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

CentOS7离线安装Realtek 2.5G网卡r8125驱动完整指南

发布时间:2026/9/29 17:41:14

资讯中心
01
ARTICLE

CentOS7离线安装Realtek 2.5G网卡r8125驱动完整指南

CentOS7离线安装Realtek 2.5G网卡r8125驱动完整指南
简介Realtek RTL8125 2.5G网卡驱动离线安装包面向需要在物理机上运行CentOS 7系统、且外网受限的运维人员用于解决网卡无法识别、无法联网的典型问题。压缩包共51个文件其中15个rpm依赖包覆盖gcc编译器、kernel-devel内核开发包、glibc运行库等组件为离线编译提供基础工具链另有驱动核心源码的c/h文件、makefile编译配置、编译生成的ko内核模块以及自动化安装sh脚本整体大小55.41MB能够完整覆盖从环境准备到驱动加载的全部环节。已有3256人学习、下载说明该场景在CentOS 7用户中具有一定普遍性。资源包将r8125官方驱动与各类编译依赖统一整合省去逐一查找rpm包或源码的步骤也无需配置yum源即可离线完成安装同时兼顾Secure Boot导致驱动无法加载等常见问题适合物理机网卡驱动部署与应急联网恢复时使用。1. 物理机装CentOS7装完发现没有2.5G网卡离线安装r8125驱动就是一场自救给一台物理机装 CentOS7系统起来后ip link里只有 lo板载的 Realtek 2.5G 网卡根本没出现。查lspci确认是 RTL8125 芯片而 CentOS7 自带的内核驱动 r8169 对这个芯片支持不完整驱动加载失败。更尴尬的是这台机器没有其它网口也没有可用的软件源陷入“没驱动就没网没网就装不了驱动”的死循环。这就是离线安装物理机 CentOS7 系统 Realtek2.5G 网卡驱动(r8125) 的经典起点。下面把驱动选型、源码编译、安装引导阶段注入和踩坑排查一次性讲清楚适合和我一样要跟物理机离线环境死磕的运维。2. 先认清网卡芯片和内核依赖r8125离线驱动包选型前要做的四件事2.1 为什么CentOS7默认的r8169驱动救不了RTL8125CentOS7 默认带的以太网驱动模块是 r8169它主要对应 Realtek 的千兆 PCIe 网卡 RTL8168/8111 系列。RTL8125 是 Realtek 的 2.5G 多千兆网卡芯片内部的 PHY 配置、中断处理、电源管理和 EEE 节能逻辑都和 8168 差了不少。内核社区的 r8169 驱动虽然试图向后兼容但在 3.10 这种老内核上对 RTL8125 的识别经常半失灵要么模块加载后网卡不亮要么链路能起来但速率锁死在 1000Mbps甚至会出现 dmesg 里反复报 timeout。解决这个问题不能靠改内核参数得用 Realtek 官方发布的 r8125 源码包自己编译。这个源码包编译出的内核模块名同样叫 r8125和驱动的包名一致。它的 Makefile 会针对当前内核版本做适配比老 r8169 多出了针对 2.5G 的 PHY 初始化代码。选型时要注意不要看到 Realtek 就下 r8168也不要拿某些第三方打包好的 r8125 RPM 直接装因为 RPM 里的模块可能编译时用的内核 config 和你机器不一样离线装完照样翻车。在动手之前先确认网卡确实是 RTL8125。物理机上敲一下lspci -nn | grep -i realtek输出里如果能看到类似10ec:8125的 PCI ID就说明这是 RTL8125。有些主板会显示为Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller那就更确定了。顺便把lspci -v -s 设备号看一下当前真正加载的驱动是内核模块还是空着如果显示Kernel driver in use: r8169说明它被千兆驱动接管了后面避坑章节会专门处理这个冲突。2.2 离线获取r8125源码包的三种可靠路径离线环境下最首要的问题是怎么把源码包和编译依赖弄到目标机器上。我一般会按机器条件选下面三种之一。第一种是 U 盘拷贝适合任何物理机。找一台有网络的电脑从 Realtek 官网或可信的软件源把 r8125 源码包下载下来拷进一个 FAT32 格式的 U 盘再插到目标机器上。目标机器上这样挂载sudo mkdir -p /mnt/usb sudo mount /dev/sdb1 /mnt/usb ls /mnt/usb sudo cp /mnt/usb/r8125-版本号.tar.gz /root/ sudo umount /mnt/usb这里/dev/sdb1是 U 盘设备名不固定先敲lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT看清楚再挂免得把硬盘分区误挂上来。源码包文件名里的版本号是占位符不同时期下载到的构建号不一样这没关系关键是解压后的目录名要和包名对应。第二种是借道临时联网。很多物理机带板载千兆口或者 IPMI 管理口如果这些口能上网就不需要完全离线。先把系统里的基础源配好然后用yum install -y gcc make kernel-devel把编译依赖拉下来再wget下载 r8125 源码包。这个做法虽然简单但要注意临时联网时装好的 kernel-devel 版本必须和最终离线运行时一致不然编译出来的模块还是没法用。第三种是本地 yum 源适合 CentOS7 镜像就在手边的场景。把 CentOS7 的 DVD ISO 上传或挂载到机器上做一个 file:// 的本地 reposudo mount -o loop CentOS-7-x86_64-DVD.iso /media/cdrom然后把下面的 repo 文件写到/etc/yum.repos.d/local.repo[base] nameCentOS7-Mount baseurlfile:///media/cdrom gpgcheck0 enabled1这个方案的好处是除了 kernel-devel后续还会用到ethtool、pciutils、tar这些工具都能从本地源安装。对于一台完全没有网口的物理机这是最靠谱的依赖来源。2.3 离线编译前检查内核版本、kernel-devel、gcc三件套r8125 源码包编译时Makefile 会通过/lib/modules/$(uname -r)/build这个路径去读当前内核的编译配置和头文件。这个路径正常情况下是一个软链接指向/usr/src/kernels/完整内核版本。如果没安装和当前内核精确同版本的 kernel-devel这个软链接就是坏的make开头就会报错。先做三件套检查uname -r ls -l /lib/modules/$(uname -r)/build gcc --versionuname -r得到的是完整内核版本比如3.10.0-1160.el7.x86_64。ls -l如果看到No such file or directory或者broken symlink就说明头文件没就位。gcc 版本只要和系统自带的一致一般不会有问题。CentOS7 官方编译内核用的是 4.8.5你换成 devtoolset-7 的 7.x 编译出的模块有时会碰到 hidden symbol 之类的问题不建议在离线环境里给自己加戏。如果有本地 yum 源直接执行yum install -y kernel-devel-$(uname -r)注意一定要用$(uname -r)精确指定因为yum install kernel-devel默认装的可能不是当前内核版本。装完后重新跑一遍ls -l /lib/modules/$(uname -r)/build确认链接指向存在。2.4 看清r8125源码包结构Makefile、autorun.sh和src目录下载到的 r8125 源码包是一个 tar.gz 压缩包解压后目录结构大概是tar -xvf r8125-版本号.tar.gz ls -la r8125-版本号里面通常有Makefile、autorun.sh、src/目录以及一个README或README.md。autorun.sh是把make、make install和modprobe串在一起的便捷脚本适合网络正常的情况。离线物理机上我更喜欢手工执行三步因为哪一步失败都能看到明确的报错。src/目录里就是驱动源码真正的编译对象是它生成的r8125.ko。打开 Makefile 看前几行会看到类似CONFIG_R8125_DEBUG之类的开关。默认关闭。如果你想让驱动打印更多 PHY 协商信息可以把它置为y但一般用户不需要开。另一个常见开关是关于 ASPM 的某些主板开启 ASPM 后 2.5G 网卡会断流这个后面会讲。源码包里的 README 还写着支持的芯片列表下载后先花两分钟对照一下能避免很多无效编译。3. 编译安装r8125驱动从解压源码到modprobe出2500Mbps的全过程3.1 解压源码包后先读README不要急着make把源码包放到目标机器上之后先解压再读文档tar -xvf r8125-版本号.tar.gz cd r8125-版本号 ls -la less READMEREADME 里至少要看三处。一是 “Supported Chipset” 列表确认 RTL8125 在列。二是 “Installation” 部分它会写明当前版本支持哪几种编译安装方式通常有 autorun.sh、make/make install、dkms 三条路。离线环境除非你已经装好了 dkms 和对应内核头文件否则别选 dkms它会在内核升级时自动重建模块但第一次安装还需要额外依赖。三是 “Load the driver” 部分看它是否要求先modprobe -r r8169或者只建议modprobe r8125。注意r8125 源码包真正源码在src下。看清目录结构后这一步的目标是确认当前的默认编译配置而不是急着跑命令。如果之前编过别的版本先make clean把残留清掉否则对象文件里的头文件路径会带到新编译里。物理机上的内核 config 其实跟你是否开启过CONFIG_NET之类有关系但一般不用手动干预。3.2 编译安装gcc、make、kernel-devel三件套缺一不可确认完文档后进入源码目录执行编译安装sudo yum install -y gcc make kernel-devel-$(uname -r) sudo make clean sudo make sudo make installmake clean会把上一次编译生成的对象文件和临时模块删掉。特别是你在同一台机器上换过内核版本或者从别处拷贝了一个非干净的源码目录时这步必须执行。make会调用内核头文件里的编译脚本把 r8125.ko 生成在src/目录下。make install则负责把生成的r8125.ko复制到/lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/同时调用depmod更新模块依赖。如果make install结束后没有看到 “install” 的完成提示而是报权限或路径错误多半是内核头文件路径不对。编译过程中常见的报错是linux/version.h找不到或Kernel configuration is invalid。前者是 kernel-devel 没装好后者是内核头文件 config 不完整常见于从网上随便下了一个不完整 kernel-devel 包。这时回到上一章把ls -l /lib/modules/$(uname -r)/build查清楚确认它指向的/usr/src/kernels目录里确实有.config和include/linux。编译参数这里不需要额外指定Makefile 默认就是按你当前uname -r来的。但如果你希望驱动编译时开启调试日志可以临时在 Makefile 开头加一行CONFIG_R8125_DEBUG y编出来的模块会在 dmesg 里输出更详细的 PHY 读写过程。这个开关会降低一点性能排查完就关掉重新编译。3.3 用depmod、modprobe、ethtool三步确认驱动真正生效编译安装完先重建模块依赖再加载模块sudo depmod -a sudo modprobe r8125 lsmod | grep r8125depmod -a会扫描/lib/modules/$(uname -r)/kernel下所有模块生成modules.dep。如果不执行这步直接modprobe r8125也可能成功但如果模块间有依赖关系就会提示module not found。modprobe相比insmod的优点是会自动处理依赖还能读到 depmod 生成的别名。加载完成后lsmod应该能看到一行r8125引用计数可能是 0这不代表没生效而是还没有网口被它接管。接着看内核日志dmesg | tail -n 30如果看到r8125: probe device with mac: ...或r8125: Link is UP说明驱动已经找到网卡并且链路协商成功。此时再配合ip link show找出网卡接口名比如enp2s0用ethtool确认速率sudo ip link set enp2s0 up ethtool enp2s0 | grep -E Speed|DuplexSpeed: 2500Mb/s说明 2.5G 协商成功。如果显示Speed: 1000Mb/s或Unknown!不要急着改参数先看网线交换机。如果接口名没出现可以ip -a link或者ls /sys/class/net逐个找不要靠eth0的旧印象。物理机主板在 BIOS 里把集成网卡 disable 了也会导致系统根本看不到 PCI 设备那种情况下驱动再对也没用要先去 BIOS 确认网卡已启用。4. 把驱动塞进CentOS7安装引导制作离线r8125驱动盘的完整做法4.1 为什么要在安装系统阶段就加载驱动如果你在一台只有 2.5G 网卡的物理机上全新安装 CentOS7安装程序 Anaconda 默认不带 r8125 模块所以进入安装界面后网卡是黑的。这不影响你完成本地安装但装完系统后你还是要用 U 盘去处理驱动而且安装程序在装包阶段无法通过网络源安装任何依赖。更麻烦的是如果你的安装方式是 kickstart 或远程自动安装网卡不识别就直接断掉根本进不了安装流程。所以在安装引导阶段把一个预先编译好的 r8125.ko 做成驱动盘通过inst.dd加载给 Anaconda是更省事的做法。Anaconda 在加载内核模块后会像正常机器一样枚举出网卡后面无论是手动网络配置还是 kickstart都按常规步骤走少一次重启。这个做法在大量同型号主板装机时尤其省事一次做好驱动盘就可以反复用。注意安装程序运行的内核和你最终装完的系统内核不一定完全同版本。在 CentOS7 上安装镜像的内核往往比最终系统的新或旧。稳妥的办法是不要硬求完全一致而是在驱动盘里放一个较通用的 r8125.ko但驱动盘本身不保证所有内核都能用。最稳的是找一台已经用同一镜像装好的机器在它上面编译 r8125.ko再拷到驱动盘里这样和安装器内核的匹配度最高。4.2 用dracut还是纯小分区驱动盘的正确制作方法网上很多教程会告诉你用dracut -a r8125 -f /tmp/driver.img生成一个 initramfs 驱动盘。这个命令本身没问题sudo dracut -a r8125 -f /tmp/r8125-driver.img $(uname -r)它会把 r8125 模块和依赖打进一个 initramfs 镜像。但 Anaconda 的inst.dd更常见、也更容易被识别的方式是提供一个包含单个.ko文件的普通文件系统分区。因为安装器扫描驱动盘时会遍历分区的根目录查找.ko文件。你不需要给它一个完整 initramfs只要给它一个 vfat 或 ext2/4 分区上的 r8125.ko 即可。做法很简单sudo mkfs.vfat -F 32 /dev/sdb1 sudo mount /dev/sdb1 /mnt/usb sudo cp /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8125.ko /mnt/usb/ sync sudo umount /mnt/usb如果没有mkfs.vfat用mkfs.ext4也可以但 FAT32 在 UEFI 和传统 BIOS 的兼容性最好。.ko文件大小只有几百 KB完全不用担心 FAT32 的 4GB 限制。注意一个坑不要把 U 盘原本的分区表删光否则有些板卡固件会不识别。直接在 U 盘第一个分区上重建文件系统即可。4.3 在安装引导菜单用inst.dd加载驱动盘把写好的驱动盘插到目标物理机上放入 CentOS7 安装盘开机引导。等出现安装引导菜单选中第一项按e进入编辑模式。找到以linux或linuxefi开头的那一行在行尾追加一个参数inst.dd如果需要指定设备也可以写成inst.dd/dev/sdb1但如果同一台机器上 U 盘设备名不确定最好不带设备路径让 Anaconda 在启动过程中弹窗问你要选择哪个驱动盘。按CtrlX启动后安装程序会扫描可移动设备如果只看到一个驱动盘直接勾选r8125.ko即可。加载完成后那个 2.5G 网卡应该出现在安装器网络的设备列表里。这里的核心参数就是inst.ddAnaconda 支持从本地磁盘、U 盘、HTTP 或 NFS 路径加载驱动。inst.dd/path的路径可以是目录或具体.ko文件。如果是目录安装器会递归扫盘找.ko。我建议在引导参数里直接什么都不给交互选择最稳妥因为你没法确保 U 盘在目标机器上是/dev/sdb1还是/dev/sdc1写死设备名反而容易翻车。4.4 物理机U盘引导的格式与BIOS开关物理机安装比虚拟机多两道坎。一是 U 盘启动模式如果主板是 UEFI安装盘和驱动盘的媒体格式都要能被 UEFI 固件识别FAT32 是最保险的传统 BIOS 模式下U 盘有可能被识别成硬盘这时要确认主板启动顺序里的 USB 选项。二是 Secure Boot很多新主板默认开启未签名或者只有 Realtek 测试签名的 r8125.ko 会被拒绝加载表现为modprobe: ERROR: could not insert r8125: Required key not available。遇到 Secure Boot 拦截最直接的物理机办法是进 BIOS 暂时把它关掉等系统装好、驱动固化后再看是否恢复。如果你必须保留 Secure Boot那就得自己生成一个签名密钥用sign-file给模块签名再把公钥加进 MOK 数据库。这个流程在 CentOS7 下可用mokutil --import但离线环境里操作繁琐不是每条网卡都值得这么搞。对装机运维来说临时关闭 Secure Boot 反而是最常见、最省时间的路径。5. 离线安装r8125后的避坑排查从ping不通到协商降速的四个真实现场5.1 装了驱动还是无法ping通百度先分清是驱动、IP还是网关现象ethtool显示 Speed 2500Mb/sip link也显示 state UP但ping baidu.com丢 100% 或提示Name or service not known。原因驱动只负责把网卡拉起来网络能否通还取决于 IP 配置、路由、网关、DNS。CentOS7 默认安装后网卡配置文件是/etc/sysconfig/network-scripts/ifcfg-enp2s0里面ONBOOT往往是no所以 DHCP 不会自动跑。另外物理机接的交换机若开了端口安全或 VLAN也会出现链路 UP 但 ping 不通。解决先按顺序排查不要一上来就怀疑驱动。ip link show enp2s0 ip addr show enp2s0 ip route show如果ip addr里没有 192.168.x.x 这类 IP说明没拿到地址。配置 DHCPnmcli device status nmcli device connect enp2s0或者直接改 ifcfg 文件把ONBOOTyes和BOOTPROTOdhcp设好再systemctl restart network。然后先ping网关再ping 8.8.8.8最后尝试域名。注意离线环境里ping baidu.com可能因为 DNS 没配而失败但这是网络配置问题不是驱动的锅。很多同事在这个环节卡了半天其实驱动早就好了。5.2 make时报kernel header not foundkernel-devel版本没和uname -r对上现象make编译到一半报类似于/lib/modules/3.10.0-1160.el7.x86_64/build: No such file or directory有时还附带linux/version.h: No such file or directory。原因当前系统内核是 A 版本装的 kernel-devel 是 B 版本。CentOS7 更新内核后/lib/modules/$(uname -r)/build指向的目录不存在或指向另一个版本的头文件。解决离线环境里最可靠的是本地 yum 源精确安装。确认镜像里有没有当前版本uname -r ls /usr/src/kernels/ yum install -y kernel-devel-$(uname -r)如果没有本地源就需要在另一台有网的机器上用yumdownloader --resolve kernel-devel-版本把 rpm 下载后拷过来再rpm -ivh。安装完必须重新ls -l /lib/modules/$(uname -r)/build确认软链接正常。很多教程只说装 kernel-devel没说版本匹配离线环境最容易栽在这个细节。5.3 模块加载冲突r8169先接管了网卡r8125插不进去现象modprobe r8125没有任何报错lsmod也有 r8125但ip link始终看不到网卡或者 dmesg 里同时出现 r8169 和 r8125 的 probe 记录。原因内核在开机时按 PCI ID 自动匹配驱动老内核把 RTL8125 识别成了 r8169 支持的设备所以 r8169 先绑定了网络接口。r8125 再 probe 时发现设备已被占用接口也就起不来。解决先卸载 r8169再加载 r8125并把它写入黑名单sudo modprobe -r r8169 sudo modprobe r8125 echo blacklist r8169 | sudo tee /etc/modprobe.d/blacklist-r8169.conf sudo dracut -f sudo reboot注意modprobe -r r8169可能会把 eth0 连着一起删掉如果这台机器是通过 SSH 访问的执行完这步 SSH 会断开只能控制台操作。黑名单写入后下次开机内核就直接跳过 r8169给 r8125 留出设备。如果你需要保留 r8169 给其它千兆网卡就不要全局黑名单而是针对这个 PCI 设备写一个 udev 规则绑定到 r8125但复杂度高不少大多数物理机没必要。5.4 协商速率只有1Gbps网线、交换机和PHY节能参数现象ethtool enp2s0显示Speed: 1000Mb/s但你买的网卡和交换机都支持 2.5G。原因第一可能是网线2.5G 虽然只要求 Cat5e但劣质网线或过长链路协商不到 2.5G。第二可能是交换机端口速率或当前交换机只支持 1G。第三是链路两端的 PHY 节能策略。解决先换一根六类成品线直连单端口 2.5G 交换机排除链路问题。如果链路是好的仍然协商为 1G尝试手动指定sudo ethtool -s enp2s0 speed 2500 duplex full autoneg on然后再查ethtool enp2s0。如果手动指定失败多半是 PHY 或链路硬件不支持。另一个隐藏因素是 EEE 和 Green Ethernet部分主板 BIOS 有类似 “Realtek PXE” 或 “Power Saving” 选项会限制 2.5G 协商。在 BIOS 里关掉节能选项再试。驱动参数里的 EEE 可以通过ethtool --set-eee关闭但不同内核版本支持程度不一样别过度依赖。如果确认链路能协商到 2500但重启后又掉回 1000说明 ethtool 手动设置的参数没有被保存。把它写到 ifcfg 文件ETHTOOL_OPTS-s enp2s0 speed 2500 duplex full autoneg on这样 NetworkManager 在激活网卡时会自动执行。6. 收尾技巧用dmesg和ethtool做驱动回归并把r8125固化进系统驱动装好、网络通了之后还必须做一件事让 r8125 在每次重启后都可靠加载。很多人在物理机上装完驱动当时能用重启后网卡又消失就是因为只做了modprobe没有固化模块。固化分两步第一步先把模块加入系统默认加载列表echo r8125 | sudo tee /etc/modules-load.d/r8125.conf sudo depmod -a sudo dracut -f第二步是确认 initramfs 里确实包含 r8125lsinitrd | grep r8125如果 grep 不到说明模块没被收进 initramfs重启后大概率起不来。原因通常是 dracut 执行时没有配置 include或者模块本身没有被 depmod 索引。遇到这情况用dracut --add-drivers r8125 -f强制添加再复查。回归验证建议按下面的顺序连跑观察输出lsmod | grep r8125 dmesg | grep -i r8125 | tail -n 10 ethtool enp2s0 | grep -E Speed|Duplex ip route show只要四条命令的结果分别显示模块存在、驱动 probe 成功、速率 2500Mbps、默认路由存在这个驱动就算真正落地。以后如果需要升级内核先装好新内核的 kernel-devel再进源码目录跑一遍make clean make make install最后重新 depmod 和 dracut别直接拿旧模块顶上。我个人的习惯是在离线安装时把驱动源码包、编译好的 .ko 文件、kernel-devel 的 rpm 包全部留在一个专用 U 盘里和整机的装机记录放一起。这样做的好处是下次换硬盘或重装系统时不需要再去翻驱动直接按这个流程快速复现。物理机离线装系统本来就没有后悔药能提前多留一份物料就能少踩一个坑。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。