news 2026/9/7 13:08:34

物理机离线安装CentOS 7:Realtek 2.5G网卡r8125驱动部署指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
物理机离线安装CentOS 7:Realtek 2.5G网卡r8125驱动部署指南

简介:这是一份面向Linux运维人员及需要在物理机上安装CentOS 7网卡驱动的用户的离线资源包,专门解决Realtek RTL8125 2.5G网卡在CentOS 7.9下驱动编译与加载难题,适用于无外网或内网受限环境。包体共51个文件,约55.41MB,结构清晰:15个rpm依赖包用于补齐编译环境,.c/.h源码及makefile提供驱动编译主体,.ko模块与.o目标文件便于直接加载,另有sh安装脚本与readme说明,用户可按照包内顺序快速完成部署。已有3249人学习下载。通过这份资源,读者可以绕开在线源依赖,在离线状态下完成内核头文件、gcc等工具链配置,并成功驱动2.5G有线网卡;包内还涵盖了BIOS Secure Boot关闭等关键注意事项的说明,能有效减少因驱动签名或依赖缺失导致的安装失败,整体上是一份可复制、可离线操作的完整解决方案。 新到手的物理机上装CentOS 7,结果系统装完了,网卡灯明明亮着,ip addr里却死活看不到网卡,连个eno1都没有——这个场景我一年里至少碰到三五回。罪魁祸首十有八九就是主板上的 Realtek 2.5G 网卡。CentOS 7 发布时的内核停留在 3.10,对 RTL8125 这种后来才普及的 2.5G 控制器根本没有原生驱动,自带的r8169模块要么认不出它,要么认出来也只能跑千兆,完全不干活。这篇文章就专门讲在物理机离线安装 CentOS 7的场景下,怎么把 Realtek 2.5G 网卡的官方驱动(r8125)老老实实装上去,并且重启之后还能自动加载、跑满 2.5G 带宽。

之所以强调“离线”,是因为大部分生产内网机房根本没外网,装完系统连yum install都跑不了,更别提在线拉源码包了。所以整篇文章会围绕“提前准备好一切物资,进机房一次性搞定”这个思路来写,内容包括:如何确认网卡型号、怎么准备离线编译依赖、源码编译和预编译模块两种安装路线、以及重启后驱动丢失、r8169 驱动冲突、Secure Boot 拦截这几个高频坑。适合运维、装机人员和所有在折腾物理机装 CentOS 7 的朋友收藏。

1. 先认清这块 2.5G 网卡和 CentOS 7 之间的关系

1.1 Realtek 2.5G 网卡到底是个什么东西

Realtek 2.5G 网卡芯片主要指 RTL8125 系列,包括 RTL8125B、RTL8125BG、RTL8126 等型号。这两年主流消费级主板和不少服务器板子都集成了它,原因很简单:价格便宜、兼容性好,理论速率是千兆的 2.5 倍,能跑满机械硬盘阵列的传输速度,也能让千兆宽带不再有瓶颈。但它和服务器上常见的 Intel X710、Mellanox 这些网卡不一样——Realtek 走的是消费级路线,Linux 内核社区对它的支持一直慢半拍。

1.2 为什么 CentOS 7 装完系统后网卡不工作

CentOS 7 的内核主要是 3.10.0 系列,基础包里虽然有r8169这个驱动模块,但它只负责老款 RTL8111/8168/8169 千兆网卡。RTL8125 出来后,Realtek 官方提供的是独立的r8125驱动源码,走的是一套完全不同的内部接口。如果你直接靠内核自带的r8169,会出现几种典型症状:

  • 系统里完全没有网卡接口,ip addr只有lo
  • 能看到网卡,但 ethtool 显示速率只有 1000Mb/s
  • 传输不稳定,大流量拷文件直接断流

这三点我在不同机器上都遇到过,根本原因就是r8169对 RTL8125 是“半兼容”状态,能用但没法发挥 2.5G 性能,或者干脆认不出设备。

1.3 装驱动前,花两分钟确认硬件型号

这一步别跳过,我见过有人折腾了半天,最后发现板载网卡根本不是 RTL8125 而是瑞昱的另一个型号。硬件确认有两种办法:

第一种,在机器上执行:

lspci -nn | grep -i realtek

输出类似:

03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)

看到[10ec:8125]这串 PCI ID,就可以确定是 RTL8125 系列。如果是[10ec:8168]那就是老款千兆,不需要折腾,内核自带r8169就能驱动。

第二种,机器还没装系统或者系统里看不到网卡时,直接查主板官网的规格参数,或者开机进 BIOS 的板载设备信息页,看网卡芯片型号。这套组合拳打下来,基本不会认错。

2. 离线环境物资清单:提前一趟解决所有依赖

物理机放在内网机房里,没有外网,没有 apt/yum 源,这时候最大的敌人不是驱动本身,而是依赖缺东少西。千万不要想着“先进系统再说”,因为装驱动需要gccmakekernel-devel,这些 CentOS 7 最小化安装默认都没装。我的做法是:进机房之前,把所有需要的东西都准备到一个 U 盘里

2.1 准备 r8125 官方源码包

Realtek 官方驱动在官网提供源码包,文件名类似r8125-9.011.00.tar.bz2或者r8125-9.008.00.tar.bz2。下载链接经常变,搜索“Realtek r8125 download”就能找到。注意下载时选择 Linux 版本的源码包,不是 Windows 的驱动 exe。

下载完放到 U 盘根目录,最好再放一个压缩包备份,防止 U 盘中途损坏。这个包在 U 盘里到进机房前都别动它。

2.2 解决编译工具链:靠 CentOS 7 安装盘当本地 yum 源

离线环境下没有 yum 源,最省事的办法就是用 CentOS 7 的安装 ISO 做本地 yum 源。如果你安装系统用的是完整版 DVD ISO,它自带gccmakekernel-devel等一大堆软件包。在已经装好的 CentOS 7 系统上,挂载这个 ISO:

mount -o loop /dev/sdb1 /mnt/iso

等等,这里有两种情况。如果你是用 U 盘安装的系统,把同一块 U 盘重新插上,先lsblk看设备名,假设是/dev/sdb1,挂载到/mnt/usb,然后找 ISO 文件再 loop 挂载:

mkdir -p /mnt/usb /mnt/iso mount /dev/sdb1 /mnt/usb mount -o loop /mnt/usb/CentOS-7-x86_64-Everything-2009.iso /mnt/iso

配置本地 yum 源,新建/etc/yum.repos.d/local.repo

[local] name=local baseurl=file:///mnt/iso gpgcheck=0 enabled=1

然后执行:

yum clean all yum install -y gcc make kernel-devel

kernel-devel必须和当前内核版本完全一致,安装系统时什么内核版本,就要装对应的 kernel-devel。可以用uname -r确认。

提示:如果 CentOS 7 已经 EOL,在线源基本都迁走了,本地 ISO 源反而是最稳定可靠的依赖来源。这也是我强烈推荐用“安装盘 ISO 做离线源”的原因。

2.3 如果连 ISO 都没有:提前去一台能上网的机器上抓依赖

有些机房不允许带光盘、ISO 文件,只允许带一个 U 盘进去。这种情况我一般在一台能访问外网的 CentOS 7 同版本机器上,用yumdownloader把依赖包全部下载到 U 盘:

yumdownloader --resolve --destdir=/mnt/usb/rpms gcc make kernel-devel

到了目标机器后,直接rpm -ivh /mnt/usb/rpms/*.rpm安装。这里有个关键细节:kernel-devel包必须和内核版本一字不差,比如目标机器内核是3.10.0-1160.el7.x86_64,那就只下载对应版本的 kernel-devel。高版本的内核开发包装上去,编译出来的模块加载时会报 version magic 不匹配,直接拒绝加载。

2.4 关于 U 盘文件的组织建议

我在 U 盘里一般这样放:

/ ├─ drv/ │ └─ r8125-9.011.00.tar.bz2 ├─ rpms/ # 所有提前下载的依赖 rpm 包 ├─ CentOS-7-x86_64-Everything-2009.iso └─ readme.txt # 记录版本号、命令步骤,防止机房断网没法查

机房环境往往只有 KVM 或者串口控制台,没法随时随地打开浏览器查资料,把关键命令写在 U 盘里的readme.txt是低成本但高回报的习惯。

3. 源码编译安装 r8125 的完整过程

到这一步,假设硬件确认完毕、U 盘已经挂载到目标机器上、yum 源已经配好。接下来就是正片。

3.1 拷贝源码包并解压

建议把源码包先拷到本机目录,再解压,防止直接从 U 盘上编译导致 I/O 问题或者文件权限不对:

mkdir -p /root/driver cp /mnt/usb/drv/r8125-9.011.00.tar.bz2 /root/driver/ cd /root/driver tar xjf r8125-9.011.00.tar.bz2 cd r8125-9.011.00

3.2 确认编译环境就绪

在开始make之前,我会先做一次环境检查,避免编译到一半报错,浪费一整轮时间:

gcc --version make --version ls /usr/src/kernels/ uname -r

注意看/usr/src/kernels/里的目录名,必须和uname -r输出一致。如果不一致,回头检查kernel-devel装没装对。

3.3 编译、安装、加载驱动

make make install

make install会把编译出来的r8125.ko复制到/lib/modules/$(uname -r)/extra/目录下,然后自动调用depmod更新模块依赖关系。执行完先别急着重启,手动加载一下:

modprobe r8125

看有没有报错。我习惯再用几条命令确认:

lsmod | grep r8125 dmesg | tail -20 ip link

正常的话,ip link应该能看到一个网卡接口,名字可能是enp3s0eno1这种,取决于你的主板和 systemd 命名规则。这时候网卡还是没有 IP 的,接着配置网络即可。

3.4 干掉 r8169 驱动冲突

这一步是重灾区。CentOS 7 内核里的r8169模块在系统启动时会尝试接管 RTL8125 设备,导致r8125加载的时候发现设备已经在别的模块手里,直接放弃。表现出来就是:modprobe r8125显示正常,但ip link里依然没有网卡。

解决办法是先把r8169模块从内核里摘掉,然后启动黑名单:

modprobe -r r8169 modprobe r8125

测试没问题后,写入黑名单,防止下次启动又自动加载:

echo "blacklist r8169" > /etc/modprobe.d/blacklist-r8169.conf

注意,黑名单只对r8169生效,不影响其他网卡驱动。写完黑名单后别忘再执行一次dracut --force重建 initramfs,否则重启阶段 initramfs 里依然会加载 r8169(我见到的重启后驱动失效,八成都是这个原因)。

3.5 配置静态 IP,完成最后一步

网卡识别后,按物理机实际网络规划配置静态 IP。CentOS 7 用的是ifcfg-*文件,网卡名以上面ip link看到的为准(假设是enp3s0):

vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

内容参考:

TYPE=Ethernet BOOTPROTO=static NAME=enp3s0 DEVICE=enp3s0 ONBOOT=yes IPADDR=192.168.10.20 NETMASK=255.255.255.0 GATEWAY=192.168.10.1 DNS1=192.168.10.1

然后:

systemctl restart network ping -c 4 192.168.10.1

能通就说明整个链路已经打通了。

4. 免编译方案:把预编译模块打包进系统

源码编译是通用方案,但有些场景下我不想在目标机器上装 gcc——毕竟生产服务器越干净越好,一堆编译工具链放在上面,无论是安全审计还是后续维护都麻烦。这时候可以用预编译内核模块的方案:在另一台相同系统、相同内核版本的机器上编译好r8125.ko,直接复制到目标机器加载。听起来简单,但有几个细节必须处理好。

4.1 找到和提取已编译的 .ko 文件

假设你在中转机上已经按第三章的流程装好了 r8125,模块文件位于:

/lib/modules/3.10.0-1160.el7.x86_64/extra/r8125.ko

把它连同整个extra目录结构拷贝到目标机器的对应位置。内核版本必须完全一致,这是硬条件。拷贝方法还是靠 U 盘:

cp -a /lib/modules/$(uname -r)/extra /mnt/usb/ko/

到目标机器上后:

mkdir -p /lib/modules/$(uname -r)/extra cp -a /mnt/usb/ko/r8125.ko /lib/modules/$(uname -r)/extra/ depmod -a modprobe r8125

这样目标机器完全不需要 gcc 和 kernel-devel,也不需要配本地 yum 源,省事太多。

4.2 怎么把模块打成 RPM 包(适合批量交付)

如果手上有十几台机器要装同一个驱动,一台台敲命令太原始。用rpmbuild打完 RPM 包,内网一键rpm -ivh r8125-9.011.00-1.el7.x86_64.rpm就完事了。

Realtek 官方源码包里的src目录通常自带r8125.spec文件,可以直接用来打包。在能访问网络的中转机上:

yum install -y rpm-build cd /root/driver/r8125-9.011.00 rpmbuild -bb ./r8125.spec

生成物在/root/rpmbuild/RPMS/x86_64/下。把它拷到目标机器安装:

rpm -ivh r8125-*.x86_64.rpm

RPM 包的优点是会自己处理 depmod、启动加载、黑名单这些逻辑,安装完重启即用。但前提还是那个:目标机器内核版本和打包机器一致,否则加载照样报 version magic 错误。

4.3 源码编译和预编译怎么选

方案需要工具链需要网络/ISO 源适合场景踩坑概率
源码编译需要 gcc/make/kernel-devel需要本地 ISO 源或 RPM 包单台调试、机型多样中,依赖问题多
预编译 .ko不需要不需要单台快速恢复、环境干净低,但内核版本必须一致
RPM 包交付不需要不需要几十台批量装低,打包一次到处用

我个人实际工作里最常用的是第三种:先找一台同内核版本的机器打好 RPM,内网一推,几分钟搞定。但第一次接触的时候建议先从源码编译走一遍,能帮你理解驱动加载的完整链路。

5. 重启、验速与日常使用的几个坑

驱动装完、网络通了,表面看已经收工。但根据我的经验,重启一次才算真正结束。很多人就是卡在这一步:当时怎么用怎么好,一重启网卡又没了。下面这些问题,我做过的每一台 CentOS 7 + RTL8125 机器几乎都会碰到,提前处理比事后排查省心得多。

5.1 重启后驱动不生效:initramfs 和黑名单顺序

重启后ip link里没网卡,第一件事看lsmod | grep r8125。如果 r8125 没加载,问题大概率出在 initramfs。CentOS 7 启动时加载的内核模块来自 initramfs 镜像,不是直接扫描/lib/modules。你虽然modprobe能加载,但重启流程还是按 initramfs 里的老配置走。

处理方式:

dracut --force

然后重启验证。如果之前没写黑名单r8169,也可以在重装 initramfs 之前先把黑名单文件建好,确保 initramfs 里根本不存在 r8169。两个动作顺序不做强要求,但建议一起做掉,一次性杜绝两处隐患。

5.2 Secure Boot 把驱动拒之门外

很多物理机默认开启了 UEFI Secure Boot。编译出来的r8125.ko没有合法签名,Secure Boot 环境下内核会拒绝加载它,而且dmesg里的报错往往看得人一脸懵,什么Required key not available之类的,第一次遇到根本想不到是驱动签名问题。

判断方法:

mokutil --sb-state

如果显示SecureBoot enabled,那就别硬刚签名了,进 BIOS 把 Secure Boot 关掉再启动。生产环境如果非要开 Secure Boot,那得走完整的模块签名流程,签发密钥、注册 MOK、签名驱动,整套流程折腾下来非常费时间,而且每升级一次内核就得重新签一次。我的建议是:CentOS 7 这种老系统在物理机上就别开 Secure Boot 了,省下的都是时间。

5.3 内核升级会导致驱动失效

CentOS 7 虽然已经 EOL,但内网如果有自己的软件源,偶尔还是会有内核安全更新。升级内核对 RTL8125 用户是个“大坑”:新内核起来后/lib/modules/新版本/extra/r8125.ko不存在,网卡直接消失。

解决思路只有一个:升级内核后,用新内核重新编译/安装一次驱动:

yum update kernel -y reboot # 重启后进入新内核执行 mount /dev/sdb1 /mnt/usb mkdir -p /root/driver && cp /mnt/usb/drv/r8125*.tar.bz2 /root/driver/ cd /root/driver && tar xjf r8125*.tar.bz2 && cd r8125*/ make && make install dracut --force

如果你用的是 RPM 包方案,新内核起来后重新装一次 RPM 也一样。这里提醒一点:升级内核前先把新内核对应的 kernel-devel 也准备好,否则编译时又缺依赖,卡在重启后的死循环里。

5.4 ethtool 验证和吞吐实测

驱动加载不等于性能达标。我见过驱动加载了、网卡亮了、ping 也通,但速率执着地停在 1000Mb/s 的情况。验证方法:

ethtool enp3s0

Speed字段,正常 RTL8125 协商后应该是2500Mb/s。如果显示1000Mb/s,常见原因:

  • 网线是五类线或者质量太差,2.5G 对线材要求比千兆高
  • 对端交换机/对端网卡不支持 2.5G
  • 网线水晶头接触不良

换个思路:如果短距离直连对端 2.5G 设备还是只有千兆,那就重点查驱动和供电。

宽带到底能跑多少,用 iperf3 实测最直观。对端也装好 iperf3 后:

# 服务端 iperf3 -s # 本机客户端 iperf3 -c 192.168.10.1 -t 30 -P 4

好的 RTL8125 + 好的网线,TCP 吞吐一般在 1.8~2.3Gbps 之间。低于 1Gbps 就说明哪里没对齐,用ethtool -S enp3s0看有没有大量 CRC 错误。

5.5 关于散热和稳定性的一句话

RTL8125 这卡跑满 2.5G 的时候发热量比 Intel 网卡大一些,尤其是持续大流量的场景。物理机如果散热设计一般,建议注意一下机箱风道。这个不算致命问题,但长期高负载传输遇到偶发断流,优先查的不是驱动,是温度。

最后分享两个小习惯

r8125 这套流程我前前后后跑了十几台机器,现在基本形成了肌肉记忆。最后分享两个真正省过命的小习惯。

第一个:U 盘里永远放一个r8125-9.011.00.tar.bz2的原始源码包,不管用不用。因为 Realtek 官网的下载链接经常失效,今天能下载的地址下周可能就打不开了。源码包这种小体积、高价值的东西,值得在每个装机 U 盘里常驻一份。

第二个:每次给物理机装完驱动,顺手把内核版本、驱动版本、网卡 PCI ID 记到/root/README里。乍看多此一举,但半年后你回来处理这台机器的网络问题时,这段记录直接帮你省掉三分之一排查时间。人脑对细节的记忆是靠不住的,但文件系统记得住。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 13:08:08

汽车以太网中的DDS:从原理到量产落地,一文讲透

1. 为什么汽车以太网时代,DDS会被摆上台面这几年做智能驾驶的域控制器,最直观的感受是:数据量像洪水一样涌过来。以前CAN总线时代,一条报文8个字节,几十条报文跑满一帧都不过瘾;到了以太网时代,…

作者头像 李华
网站建设 2026/9/7 13:03:49

软件测试实战:16个从功能到自动化的练手项目

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 13:01:06

容器镜像管理全攻略:从构建到生产环境的最佳实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 13:00:53

亿级订单多维查询优化:从索引设计到分库分表的全链路实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 12:59:37

GPS+IMU组合导航Matlab开源仿真:卡尔曼滤波融合与调参实战

简介:面向惯性导航与组合导航方向的开发者、学生及研究人员,这套MATLAB开源程序基于NaveGo框架,聚焦GPS与IMU数据融合,重点展示扩展卡尔曼滤波的实际落地方式。压缩包共66个文件,核心为56个m源码脚本,搭配m…

作者头像 李华
网站建设 2026/9/7 12:55:22

希尔伯特黄变换HHT实战:从EMD分解到瞬时频率分析

简介:希尔伯特黄变换(HHT)是一种非线性、非平稳信号处理方法,压缩包内提供基于MATLAB的完整实现方案,结合经验模态分解(EMD)与希尔伯特变换,可有效提取信号的瞬时频率与幅值&#xf…

作者头像 李华