资讯动态

RTL8111网卡跑不满千兆?r8169换r8168驱动完整指南

发布时间:2026/9/8 7:18:10 来源:尧图企业网站定制
简介面向CentOS 7内核3.10、gcc12编译环境的Realtek r8168网卡驱动安装资料包专注于解决默认r8169驱动兼容性不佳或需要手动编译驱动源码的开发与运维人员。资源体积仅1.37MB共40个文件以r8168-8.048.03.tar.gz驱动源码包为核心附HTML版安装教程同时包含15张过程截图、配套的CSS/JS静态样式与图标素材在线页面所需元素基本齐全离线也能完整查看图文指南。目前已有270人学习下载。资料详细记录从解压驱动、准备gcc12编译环境、编译驱动模块到modprobe r8168加载并验证网络接口的完整流程教程还展示了将CentOS 7内置r8169驱动降级替换为r8168的操作实例并针对编译依赖缺失、内核头文件不匹配、模块加载失败等常见问题给出排查思路可对照截图逐步处理。适合在无外网环境安装特定驱动或希望以r8168为案例学习Linux内核模块编译的CentOS 7用户。 先说个不太光彩的经历我在飞牛OSfnOS上折腾RTL8111板载网卡跑不满千兆的问题最后发现元凶是内核自带的r8169开源驱动。于是去Realtek官网把r8168-8.048.03.tar.gz这个官方闭源驱动包下载回来花了大半个下午完成编译、替换、验证顺手踩了一串坑。这篇笔记就是把这次完整过程写下来需要的直接照着抄。如果你也正在为RTL8111/8168网卡断流、降速、高负载假死这些问题头疼或者纯粹想确认驱动到底有没有换成功这篇文章适合你。我会把驱动包的来龙去脉、编译安装每一步、验证方法和常见报错全部拆开讲。1. 先搞清楚r8168和r8169到底差在哪1.1 r8169是内核对RTL8111/8168系列的开源驱动Linux内核里有个名为r8169的以太网驱动模块从很早开始就覆盖了Realtek RTL8168/8111系列的大多数芯片。很多人第一次看到这个名称会疑惑网卡型号明明是RTL8111驱动为什么叫r8169原因在于这个驱动最初是适配RTL8169芯片的后来内核社区把RTL8111、RTL8168、RTL8411等一批型号的支持都并入了这个驱动模块驱动名就一直沿用了下来。这也解释了为什么绝大多数带RTL8111网卡的主板装完任何Linux发行版或飞牛OS后网络直接就通——因为r8169驱动在内核里现成且兼容性覆盖广不需要用户额外安装任何东西。1.2 官方闭源驱动解决的具体痛点但能通和好用是两码事。r8169由内核社区维护代码公开、更新跟随内核节奏但它对某些芯片型号的中断合并、电源管理和收发队列调度策略与Realtek官方闭源驱动的调校有明显差异。我遇到的典型症状局域网大文件拷贝速度在千兆达标和掉到七十几兆字节每秒之间反复横跳SSH偶发断开重连。飞牛OS社区也有用户反馈RTL8111网卡长时间高负载下载时会出现断流甚至网卡假死。遇到这类问题把驱动换成Realtek官方发布的r8168闭源驱动是目前验证过最直接有效的解法。r8168-8.048.03就是这样一个官方驱动源码包版本号采用8.048.03这种格式兼容RTL8168B/C/CP/D/DP/E/EP/F/G/H和RTL8111B/C/CP/D/DP/E/EP/F/G/H等型号。这里也泼个冷水如果r8169在你机器上一切正常链路稳定、速度也达标真没必要折腾。换驱动的正确时机是你明确感受到了性能或稳定性问题或者想完全掌控网卡参数。下面的操作都建立在你已经决定要换的前提上。2. 安装前的检查清单2.1 确认网卡芯片在支持范围内r8168驱动并非万能只支持前面列出的那批具体型号。好在绝大多数板载RTL8111千兆网卡都落在支持列表里。动手之前先通过SSH登录飞牛OS终端执行lspci | grep -i realtek正常会看到类似这样的输出02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)只要出现RTL8111或RTL8168字样就说明目标是正确的。如果显示的是RTL81252.5G网卡、RTL8152USB网卡等型号那请去找对应驱动别硬装r8168。2.2 检查当前内核、接口名和已加载驱动接下来确认系统和驱动状态uname -r lsmod | grep r816 ethtool -i eth0eth0要替换成飞牛OS里的实际网卡接口名一般叫eth0或enp2s0。ethtool -i会直接显示当前驱动名称、固件版本。看到Driver: r8169基本上就是我们这次要替换的对象。这里必须提前说一个容易让新手翻车的点整个过程会断网。卸载r8169的瞬间SSH连接、NAS的SMB/CIFS共享全部中断。如果机器在机房只能远程操作我建议用飞牛OS的本地显示器加键盘操作或者准备一张USB有线网卡做备用管理口。只有一张网卡的话就把下文所有命令提前复制到文本编辑器里一步一步执行别临时再去翻文档。2.3 安装编译工具链和内核头文件编译一个内核模块最少需要gcc、make和与当前运行内核完全匹配的headers头文件。飞牛OS基于Debian用apt直接安装sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r)build-essential会带来gcc和makedkms这次不强制使用但我强烈建议一并装上第5章会解释原因linux-headers-$(uname -r)必须安装否则编译时找不到Kbuild和内核头文件百分之百报错。装完验证一下头文件目录确实存在ls /usr/src/linux-headers-$(uname -r)3. 编译安装r8168驱动的完整实操3.1 解压tar.gz源码包r8168-8.048.03.tar.gz是标准的gzip压缩tar归档文件。解压命令是这次的核心之一tar -zxvf r8168-8.048.03.tar.gz参数拆开记忆x是解压z是识别gzip压缩格式v是显示解压过程f是指定文件名。解压后会生成同名目录r8168-8.048.03进入目录看看cd r8168-8.048.03 ls -l目录下通常有src源码目录、autorun.sh自动安装脚本、Makefile、README说明文件。src目录里就是驱动模块的源码Makefile承担编译入口autorun.sh是Realtek提供的一键安装脚本。3.2 autorun.sh自动脚本在做什么我习惯先看脚本内容再决定要不要直接跑cat autorun.sh这个脚本的流程大致是make clean modules编译出新的r8168.ko把内核原驱动目录里的旧模块备份改名把新编译的r8168.ko安装到/lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/执行depmod -a重建模块依赖最后rmmod旧驱动、modprobe加载r8168。如果信任这个流程一条命令搞定sudo ./autorun.sh但我实际更推荐手动走一遍原因有两个一是autorun.sh在Secure Boot开启、headers路径特殊等环境下会直接失败报错信息不如手动编译清晰二是手动流程能让你真正理解模块是如何被内核加载的以后出问题排查时思路会清楚很多。3.3 手动编译安装的完整步骤第一步清理可能存在的残留并准备编译环境sudo rmmod r8168 2/dev/null; sudo make clean第二步编译驱动模块。在源码根目录直接执行make -C /lib/modules/$(uname -r)/build M$(pwd)/src modulesMakefile里已经集成好参数所以直接make也行。编译过程中如果能看到类似CC [M] .../src/r8168.o的输出说明在正常推进。等日志停下来查看src目录下是否生成了r8168.kols -l src/r8168.ko第三步安装模块到标准内核模块目录sudo install -m 644 src/r8168.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/ sudo depmod -adepmod -a用于重建模块依赖索引不执行的话之后modprobe可能找不到新模块。第四步屏蔽r8169驱动避免开机时两个驱动抢同一个PCI设备。创建modprobe配置文件echo blacklist r8169 | sudo tee /etc/modprobe.d/blacklist-r8169.conf3.4 切换驱动并加载到这里接下来几条命令会断网执行前心里要有数sudo rmmod r8169 sudo modprobe r8168如果一切顺利网卡会被r8168接管链路重新协商。有个小细节r8169被卸载后你的IP地址会掉。DHCP配置的话驱动加载完成后会自动获取静态IP的话需要手动重新分配或重启网络服务。把这两条命令放在同一个SSH会话连续执行等十秒然后看IP是否恢复。如果rmmod r8169提示模块正忙说明有网络服务还占着接口可以尝试sudo systemctl restart systemd-networkd之后再确认模块状态lsmod | grep r816正常情况只能看到r8168r8169已经不在列表里。重启一下飞牛OS开机后再次查看lsmod和ethtool -i确认驱动持久生效。4. 驱动装上后怎么验证真见效4.1 看内核日志和链路协商驱动加载成功最直观的证据是内核日志dmesg | grep -i r8168可以看到r8168模块probe了网卡芯片、记录了MAC地址和链路速率。因为r8168驱动默认开启多队列等特性日志里还会有类似r8168: this device is configured for Tx (wire speed) and Rx (wire speed)的提示。再用ethtool确认协商结果ethtool eth0输出中Speed: 1000Mb/s、Duplex: Full就是千兆全双工。如果显示100Mb/s先别赖驱动多半是网线质量、线序或对端交换机端口问题。4.2 打流测试吞吐和稳定性驱动加载了不等于性能问题解决得真正跑一次流量。最简单的方式是iperf3另一台电脑开服务端飞牛OS这边做客户端。服务端电脑端iperf3 -s客户端飞牛OSiperf3 -c 192.168.x.x -t 60 -P 4千兆网口在去掉协议开销后实际吞吐峰值通常在940Mbps左右。我实测换驱动后速率稳定在940Mbps附近传输曲线比r8169时平滑很多。再连续跑几轮大文件拷贝确认不再断流掉速基本可以宣布换装成功。5. 踩坑实录与常见问题排查5.1 编译报错找不到linux/version.h这是第一次编译内核模块最容易碰到的问题。报错类似fatal error: linux/version.h: No such file or directory原因要么是没装linux-headers要么是装的版本和运行内核不匹配。用uname -r和apt list --installed | grep linux-headers对比一下。飞牛OS某些版本的内核在软件源里没有完全对应的headers那就安装最接近的版本然后手动把Makefile或命令里的/lib/modules/$(uname -r)/build路径改成实际存在的headers目录。5.2 Secure Boot导致modprobe报错新主板默认开启Secure Boot会拒绝加载未签名的第三方内核模块报错通常是Required key not available。家庭NAS环境最简单的解法是进BIOS关闭Secure Boot不做多系统安全启动需求的话完全无心理负担。另一种是生成自己的签名密钥并通过mokutil导入系统过程繁琐在这个场景下性价比很低不推荐。5.3 加载r8168后网卡没有IPrmmod后IP丢失属于正常现象modprobe加载成功了但没自动配置IP在静态IP场景很常见。手动恢复方式sudo ip addr add 192.168.x.x/24 dev eth0 sudo ip link set eth0 up能ping通后再去飞牛OS的网络设置里把静态IP重新保存一遍写回配置。DHCP场景执行sudo dhclient eth0通常就能拿到地址。5.4 内核升级后驱动又变回r8169手动编译安装的模块只属于编译时那个内核版本。飞牛OS每次内核更新后新内核目录里没有r8168.ko系统会退回r8169。解决这个问题的正道是DKMS它会在内核更新时自动为新内核重新编译指定模块sudo cp -r r8168-8.048.03 /usr/src/r8168-8.048.03 sudo dkms add -m r8168 -v 8.048.03 sudo dkms build -m r8168 -v 8.048.03 sudo dkms install -m r8168 -v 8.048.03之后每次内核更新DKMS都会尝试自动重建r8168模块省去手动重装。如果已经手动安装过先把旧模块卸载干净再添加DKMS避免两个来源冲突。下面把这次过程中的高频问题和处理方式整理成一张速查表现象根因处理编译报linux/version.h不存在headers版本不匹配或未安装安装linux-headers-$(uname -r)modprobe报Required keySecure Boot拦截未签名模块BIOS关闭Secure Bootrmmod r8169报模块正忙网络服务占用接口重启systemd-networkd后再卸载加载r8168后无IP配置未自动恢复手动ip addr add或dhclient内核升级后驱动消失模块属于旧内核用dkms管理驱动自动重建这次折腾下来我最大的体会是换r8168驱动不是玄学有明确的适用前提。如果你的RTL8111网卡日常用着没毛病真没必要为了优化去动底层驱动但如果你碰到了跑不满速、断流、假死这类问题把r8169换成r8168官方驱动确实是性价比最高的一步。整套流程拆开看核心就是解压、编译、屏蔽旧驱动、加载新驱动、验证这五件事。最后再分享一个我自己的习惯换完驱动后不要把源码包和目录删掉顺手注册到DKMS里以后内核升级时驱动能自动跟上你就不用再经历一次断网重装的折腾了。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价