1. 问题现象与初步诊断最近在给一台老机器安装Ubuntu 20.04时遇到了一个典型问题插上网线后网络指示灯不亮系统设置里显示有线连接未连接。这种情况在搭载RTL8111/8168/8411系列网卡的设备上特别常见尤其是从Windows切换过来的用户。我刚开始以为是网线或路由器的问题换了三根网线测试都没反应这才意识到可能是驱动问题。首先我们需要确认网卡型号。打开终端输入lspci | grep Ethernet这个命令会列出所有以太网控制器信息。典型的输出可能是这样的03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)这里的关键信息是RTL8111/8168/8411说明我们遇到的就是这个经典问题。有趣的是这个系列网卡虽然型号不同但驱动问题表现和解决方案基本一致。2. 官方驱动安装方案对于Ubuntu 20.04这种较新的LTS版本最简单的解决方法是直接安装官方维护的DKMS驱动包。DKMSDynamic Kernel Module Support的好处是内核升级时会自动重新编译驱动不用每次手动安装。执行以下命令sudo apt update sudo apt install r8168-dkms安装完成后需要重启系统。但这里有个坑RTL8111/8168/8411这个系列包含多个子型号有些机器用r8168-dkms就能解决有些则需要尝试其他驱动包。如果这个方法不奏效可以试试sudo apt install r8168或者sudo apt install r8169-dkms安装后验证驱动是否加载lsmod | grep r8168如果有输出说明驱动已加载。这时候插上网线应该就能看到网络指示灯亮了。如果还是不行可能需要更彻底的解决方案。3. 手动编译驱动指南当官方仓库的驱动不兼容时我们就得手动编译驱动了。这个方法虽然复杂些但成功率最高。我最近帮朋友处理的一台2015年的老笔记本就是这种情况。首先到Realtek官网下载最新驱动注意选择Linux版本wget https://www.realtek.com/.../r8168-8.053.00.tar.bz2解压并进入源码目录tar -jxvf r8168-8.053.00.tar.bz2 cd r8168-8.053.00/src编译前需要安装内核头文件和编译工具sudo apt install build-essential linux-headers-$(uname -r)然后开始编译make clean modules sudo make install sudo depmod -a最后运行自动加载脚本cd .. sudo ./autorun.sh这个过程可能会遇到各种依赖问题比如提示缺少flex或bison根据报错信息安装相应包即可。我遇到过最棘手的情况是需要先卸载原有驱动才能安装新驱动。4. 驱动自动加载配置手动编译的驱动有时候重启后会失效这是因为系统没有自动加载模块。我们需要确保每次启动时自动加载r8168驱动。先检查当前驱动状态lsmod | grep r8168如果重启后这个命令没输出就需要设置自动加载。推荐使用systemd服务来实现比修改/etc/modules更可靠。创建服务文件sudo nano /etc/systemd/system/load-r8168.service写入以下内容[Unit] DescriptionLoad r8168 module at boot Afternetwork.target [Service] Typeoneshot ExecStart/sbin/modprobe r8168 [Install] WantedBymulti-user.target然后启用服务sudo systemctl enable load-r8168.service这个方法的优点是可以通过systemctl status查看服务状态而且不会与其他系统组件冲突。我测试过多次重启都能稳定加载驱动。5. 疑难问题排查即使按照上述步骤操作有时还是会遇到奇怪的问题。这里分享几个我踩过的坑问题1驱动加载了但网速异常慢 解决方法关闭ASPM节能模式sudo nano /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT添加pcie_aspmoff然后更新grubsudo update-grub问题2WiFi能用但有线网络不识别 这可能是因为NetworkManager的配置问题尝试sudo service network-manager restart问题3驱动版本与内核不兼容 Ubuntu 20.04后期内核更新可能导致驱动失效这时需要重新下载最新驱动编译或者暂时回退内核版本。6. 长期维护建议对于使用RTL8111/8168/8411网卡的用户我有几个实用建议定期检查Realtek官网的驱动更新特别是升级内核后备份好能正常工作的驱动源码方便快速恢复使用DKMS管理自定义编译的驱动避免内核升级后驱动失效在/etc/modprobe.d/目录下创建blacklist.conf文件屏蔽冲突的默认驱动安装DKMS管理的手动编译驱动sudo dkms add -m r8168 -v 8.053.00 sudo dkms build -m r8168 -v 8.053.00 sudo dkms install -m r8168 -v 8.053.00最后提醒一点如果所有方法都尝试过还是不行可能是硬件故障。可以用LiveUSB启动其他Linux发行版测试确认是否是Ubuntu特有的问题。我在实际工作中遇到过一例最终确认是网卡物理损坏的情况。