ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CentOS7物理机离线安装Realtek 2.5G网卡驱动r8125实战

CentOS7物理机离线安装Realtek 2.5G网卡驱动r8125实战 简介这份资源面向需要在物理机上离线部署CentOS 7的运维与网络工程师解决Realtek RTL8125 2.5GbE网卡在系统默认驱动缺失下无法联网的问题。资源包共51个文件约55.41MB以15个rpm依赖包、7个C源码、8个头文件、5个目标文件及Makefile、autorun.sh、ko驱动模块等为主rpm用于补齐gcc、kernel-devel等编译环境源码与脚本则构成r8125-9.011.01驱动的完整编译安装链路。内容覆盖从关闭Secure Boot、离线安装依赖、重建内核build软链到执行autorun.sh的完整流程并附README与日志文件便于读者理解驱动编译原理、排查依赖冲突与内核版本不匹配等常见问题。目前已有3257人学习下载适合需要在内网或无外网环境中快速恢复有线网络连通性的技术人员参考。1. 物理机装 CentOS7 卡在网卡为什么 Realtek 2.5G 必须离线补 r8125机房给你一台新装的物理机主板板载 Realtek 2.5G 网卡你插上 U 盘装完 CentOS7ip addr一看只有lolspci能看到以太网控制器但系统里就是没有对应的eth0。这不是你装错了而是 CentOS7 自带的内核3.10 系列压根没带 r8125 这个驱动它只认到 r8169 那一档2.5G 芯片组直接哑火。更麻烦的是机器在机房、没有外网、yum 源也连不上你没法yum install kmod-r8125。这就是「离线安装物理机 CentOS7 系统 Realtek 2.5G 网卡驱动(r8125)」要解决的真实场景在无网络、无外网源的物理机上用 U 盘把 r8125 源码和编译依赖带进去本地编译出r8125.ko并让系统认到这块 2.5G 网卡。适合谁适合手里有物理服务器、工控机、软路由装的是 CentOS7网卡是 Realtek RTL8125/8125B 这类 2.5G 芯片且现场没有可用网络的运维和装机人员。下面按「先确认硬件、再备离线包、再编译加载、最后排错」的顺序讲透。2. 先确认芯片和系统版本别把 r8169 当成 r81252.1 用 lspci 和 ethtool 锁定真实芯片型号很多人一看到 Realtek 网卡就以为是 r8169结果驱动装错白折腾半天。第一步永远是确认硬件 ID。物理机上执行# 查看所有 PCI 网络控制器重点看 Realtek 那行的型号和 ID lspci -nn | grep -i ethernet # 典型输出 # 03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. # Device [10ec:8125] (rev 05)方括号里的10ec:8125就是关键10ec是 Realtek 的厂商 ID8125是设备 ID。只要设备 ID 是8125就是 2.5G 网卡需要 r8125 驱动如果是8168、8169那是千兆系统自带的 r8169 就能认。这一步别偷懒我见过有人把 8125 当成 8168 去装 r8169modprobe完还是没网口血泪经验。再看系统内核版本决定后面编译时用哪套头文件# 查看内核版本编译驱动必须和它严格对应 uname -r # 例如输出3.10.0-1160.el7.x86_64 # 查看是否已加载 r8169它会抢占 8125 设备 lsmod | grep r8169如果lsmod里有r8169说明系统用旧驱动占着这块卡但带不动 2.5G。后面加载 r8125 前要先把 r8169 拉黑否则两个驱动抢同一个 PCI 设备网口起不来。2.2 离线环境要提前备齐的三类文件离线安装的核心是「把编译需要的东西全带进去」。CentOS7 物理机没有外网你不可能现场yum install kernel-devel。所以要在有网的机器上按目标机的内核版本下载好U 盘拷过去。需要三类类别具体内容作用内核头文件kernel-devel-3.10.0-1160.el7.x86_64.rpm、kernel-headers-*.rpm编译驱动必须版本必须和uname -r一致编译工具链gcc、make、glibc-devel等 rpm本地编译 r8125 源码驱动源码Realtek 官方 r8125 源码包tar.bz2提供src/和Makefile内核头文件版本一定要和物理机uname -r完全一致差一个小版本号make就会报找不到kernel/build。常见做法是在有网机器上执行yumdownloader --resolve kernel-devel-$(uname -r)把依赖一起拉下来或者直接去镜像站按版本号找 rpm。注意别下成kernel-devel的最新版CentOS7 的 3.10 内核小版本很多对不上就是白搭。3. 离线编译 r8125从源码到 r8125.ko 的完整命令3.1 安装离线依赖并解压源码把 U 盘挂到物理机上先装内核头文件和编译工具。假设 rpm 都放在/mnt/usb/rpms/# 挂载 U 盘设备名按实际改可能是 /dev/sdb1 mkdir -p /mnt/usb mount /dev/sdb1 /mnt/usb # 本地安装内核头文件和编译依赖--nodeps 慎用先正常装 cd /mnt/usb/rpms rpm -ivh kernel-devel-3.10.0-1160.el7.x86_64.rpm \ kernel-headers-3.10.0-1160.el7.x86_64.rpm rpm -ivh gcc-4.8.5-44.el7.x86_64.rpm make-3.82-24.el7.x86_64.rpm \ glibc-devel-2.17-317.el7.x86_64.rpm装完验证头文件路径存在# 编译驱动靠这个软链接必须指向当前内核 ls -l /lib/modules/$(uname -r)/build # 正常应指向 /usr/src/kernels/3.10.0-1160.el7.x86_64如果build不存在或指向错误make一定失败。这是离线安装最常见的翻车点rpm 装了但软链接没生成或者指向了别的内核版本。3.2 编译并加载 r8125 模块解压 Realtek 源码包进入目录编译# 解压源码目录名以实际包为准 tar -xjf r8125-9.011.01.tar.bz2 cd r8125-9.011.01/src # 编译生成 r8125.ko make # 编译成功后查看产物 ls -l r8125.komake的过程就是拿src/下的 C 源码用/lib/modules/$(uname -r)/build里的内核头文件编译成.ko。如果报No such file or directory: /lib/modules/.../build回去查 3.1 的软链接如果报一堆语法错误多半是源码版本和内核不匹配换一个 r8125 源码版本再试。编译出r8125.ko后先拉黑 r8169再加载新驱动# 拉黑 r8169防止它抢占 8125 设备 echo blacklist r8169 /etc/modprobe.d/blacklist.conf # 卸载已加载的 r8169如果正在用先确认不影响远程 modprobe -r r8169 # 加载 r8125 insmod r8125.ko # 确认模块已加载 lsmod | grep r8125加载成功后ip addr应该能看到新的网口可能是eth0或enp3s0。如果还是只有lo看dmesg | tail里面会告诉你驱动加载失败的具体原因。3.3 让驱动开机自动加载insmod只是临时加载重启就没了。要持久化把模块装进系统模块目录并更新依赖# 安装模块到内核模块目录 make install # 更新模块依赖关系 depmod -a # 写入开机加载配置 echo r8125 /etc/modules-load.d/r8125.confmake install会把r8125.ko拷到/lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/下depmod -a重建模块索引modules-load.d里的配置让 systemd 开机自动modprobe r8125。三步缺一不可只做insmod的话下次重启你又得重新来一遍。4. 避坑排查r8125 离线安装最常见的 5 个翻车点4.1 现象make 报找不到 kernel/build原因kernel-devel没装或者装了但版本和uname -r不一致导致/lib/modules/$(uname -r)/build软链接缺失或指向错误。解决rpm -q kernel-devel看已装版本和uname -r逐字对比不一致就卸掉重装对应版本再ls -l /lib/modules/$(uname -r)/build确认软链接存在。4.2 现象insmod 报 Unknown symbol 或 Invalid module format原因编译用的内核头文件和当前运行内核不匹配.ko的 vermagic 对不上。解决modinfo r8125.ko | grep vermagic看编译时的内核版本和uname -r对比不一致就回到 3.1 重装正确版本的头文件重新make clean make。4.3 现象驱动加载了但 ip addr 还是没网口原因r8169 没拉黑两个驱动抢设备或者网口被 NetworkManager 标记为未托管。解决lsmod | grep r8169确认是否还在在就modprobe -r r8169并检查blacklist.conf再看dmesg | grep r8125有没有link up相关日志没有就是硬件链路问题查网线和交换机端口。4.4 现象重启后网卡又消失原因只做了insmod没做make install和depmod -a模块没进系统目录开机不会自动加载。解决补做 3.3 的三步然后reboot验证重启后lsmod | grep r8125应该有输出。4.5 现象编译报大量 implicit declaration 警告后失败原因r8125 源码版本太老和新一点的内核头文件 API 不兼容。解决换 Realtek 官方较新的 r8125 源码包或者找针对 CentOS7 3.10 内核适配过的版本。别硬改源码改一处冒十处换包最快。5. 进阶把 r8125 打包成 rpm下次装机直接装离线装一次驱动最烦的是每次新机器都要重新编译。我的习惯是把编译好的r8125.ko和配置打成 rpm下次直接rpm -ivh就完事。用rpmbuild建一个最小 spec# 建目录结构 mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} # 把源码包放进 SOURCES cp r8125-9.011.01.tar.bz2 ~/rpmbuild/SOURCES/spec 文件核心内容Name: r8125 Version: 9.011.01 Release: 1.el7 Summary: Realtek r8125 2.5G Ethernet driver License: GPL Source0: r8125-%{version}.tar.bz2 %description Offline build of Realtek r8125 driver for CentOS7. %prep %setup -q -n r8125-%{version} %build cd src make %install cd src make install DESTDIR%{buildroot} mkdir -p %{buildroot}/etc/modules-load.d echo r8125 %{buildroot}/etc/modules-load.d/r8125.conf %post depmod -a %files /lib/modules/*/kernel/drivers/net/ethernet/realtek/r8125.ko /etc/modules-load.d/r8125.conf打包命令rpmbuild -bb ~/rpmbuild/SPECS/r8125.spec # 产物在 ~/rpmbuild/RPMS/x86_64/r8125-9.011.01-1.el7.x86_64.rpm这个 rpm 装到同内核版本的机器上%post自动跑depmod -a开机自动加载省掉每次编译的麻烦。注意 rpm 里的%files路径要和你make install的实际安装路径一致路径写错打包会失败。验证方法很简单找一台干净的 CentOS7 物理机rpm -ivh装完rebootip addr能看到 2.5G 网口、ethtool显示 2500Mb/s 就算成了。我踩过最深的坑是头文件版本对不上折腾一下午才发现uname -r和kernel-devel差了一个小版本号。从那以后我养成习惯装机前先uname -r抄下来再去下对应 rpm绝不凭印象。希望帮到你。本文还有配套的精品资源点击获取
返回列表