Ubuntu 20.04插上网线没反应?手把手教你搞定RTL8111/8168/8411网卡驱动(附自动加载服务配置)
Ubuntu 20.04网卡驱动终极解决方案:从排查到永久修复
刚装好的Ubuntu 20.04系统,插上网线却毫无反应?这种看似简单的网络连接问题,往往让不少用户抓狂。特别是使用Realtek RTL8111/8168/8411系列网卡的用户,这个问题几乎成了"经典故障"。本文将带你从故障现象开始,一步步排查问题根源,并提供两种解决方案——从最简单的apt安装到手动编译驱动,最后教你如何配置systemd服务确保驱动永久加载。无论你是Linux新手还是有一定经验的开发者,都能在这里找到适合自己的解决路径。
1. 故障现象与初步排查
当你将网线插入电脑,却发现网络图标依然显示断开状态,首先需要确认这是硬件问题还是驱动问题。打开终端,输入以下命令查看网卡是否被系统识别:
lspci | grep -i ethernet如果输出中包含"Realtek Semiconductor Co., Ltd. RTL8111/8168/8411"之类的信息,说明网卡硬件已被识别,问题很可能出在驱动上。接下来检查当前加载的驱动模块:
lsmod | grep r816正常情况下,你应该能看到类似r8169的模块。但正是这个系统自带的通用驱动r8169,往往无法正常工作在RTL8111/8168/8411系列网卡上。
注意:即使你的网卡型号显示为RTL8111,实际可能需要安装
r8168驱动。这是Realtek网卡的一个常见混淆点。
2. 首选方案:通过apt安装DKMS驱动
对于大多数用户来说,最简单的解决方案是通过Ubuntu的包管理器直接安装专有驱动:
sudo apt update sudo apt install r8168-dkms这个命令会安装专为RTL8168系列网卡优化的DKMS(Dynamic Kernel Module Support)驱动。DKMS的优势在于,当内核更新时,驱动会自动重新编译适配,无需手动干预。
安装完成后,手动加载新驱动:
sudo modprobe -r r8169 # 先卸载通用驱动 sudo modprobe r8168 # 加载专用驱动验证驱动是否加载成功:
lsmod | grep r8168 ifconfig -a如果看到网络接口(通常是eth0或enpXsY)出现,说明驱动已正常工作。此时插上网线,应该就能正常连接网络了。
3. 备选方案:手动编译安装驱动
如果apt安装的方案无效(可能因为你的网卡需要特定版本驱动),就需要手动下载并编译驱动。以下是详细步骤:
首先,从Realtek官网下载最新驱动(以8.053.00版本为例):
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编译并安装驱动:
make clean modules sudo make install sudo depmod -a sudo modprobe r8168这个过程中可能会遇到依赖问题,常见需要安装的构建工具:
sudo apt install build-essential linux-headers-$(uname -r)4. 永久解决方案:配置systemd自动加载驱动
无论是通过apt还是手动安装驱动,都可能遇到重启后驱动失效的问题。这是因为系统默认加载的是r8169通用驱动而非我们安装的r8168驱动。要彻底解决这个问题,我们需要创建一个systemd服务来确保每次启动都正确加载驱动。
首先创建服务文件:
sudo nano /etc/systemd/system/load-r8168.service添加以下内容:
[Unit] Description=Load r8168 module at boot After=network.target [Service] Type=oneshot ExecStart=/sbin/modprobe r8168 [Install] WantedBy=multi-user.target然后启用并启动这个服务:
sudo systemctl enable load-r8168.service sudo systemctl start load-r8168.service为了确保r8169通用驱动不会干扰,可以将其加入黑名单:
echo "blacklist r8169" | sudo tee /etc/modprobe.d/blacklist-r8169.conf sudo update-initramfs -u5. 疑难解答与常见问题
即使按照上述步骤操作,仍可能遇到各种问题。以下是一些常见问题及解决方法:
Q: 安装后网络依然无法连接A: 检查物理连接是否正常,尝试:
sudo ethtool eth0查看链路状态是否为"Link detected: yes"
Q: 编译驱动时报错A: 确保已安装正确的内核头文件:
sudo apt install linux-headers-$(uname -r)Q: 服务无法启动A: 检查服务状态和日志:
sudo systemctl status load-r8168.service journalctl -xe驱动版本对比表
| 驱动版本 | 适用内核版本 | 主要改进 |
|---|---|---|
| 8.053.00 | 5.4+ | 支持最新硬件 |
| 8.049.02 | 4.15-5.3 | 稳定性优化 |
| 8.045.08 | 3.10-4.14 | 旧系统兼容 |
对于大多数Ubuntu 20.04用户,推荐使用最新驱动版本以获得最佳兼容性和性能。如果遇到特定问题,可以尝试回退到较旧版本。
