1. 遇到Ubuntu18.04无网络连接怎么办?
刚装好Ubuntu18.04系统,兴冲冲准备大展身手,结果发现右上角连Wi-Fi图标都没有,这感觉就像买了辆新车却发现没给钥匙。别慌,这种情况我遇到过不止一次,特别是使用Realtek RTL8111/8168/8411系列网卡的时候。这种"断网"状态确实让人抓狂,但完全可以通过命令行自救。
首先我们要明确一点:这不是系统坏了,只是缺少对应的网卡驱动。Ubuntu系统自带的开源驱动可能无法完美支持某些Realtek网卡,尤其是较新的型号。我用的联想E14就经常遇到这个问题,每次重装系统都要重新折腾一遍驱动。不过好消息是,只要按照正确的步骤操作,20分钟内就能让Wi-Fi恢复正常。
2. 诊断网卡型号
2.1 确认你的网卡型号
在开始之前,我们必须先确认网卡的具体型号。打开终端(Ctrl+Alt+T),输入以下命令:
lspci -v | grep -i network或者更详细的查看方式:
lspci -v在输出信息中,找到Network controller或者Ethernet controller相关的条目。对于Realtek网卡,通常会显示类似"Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller"的信息。
我遇到过一些特殊情况,比如输出中只显示"Network controller: Realtek Semiconductor Co., Ltd. Device 8168",这时候就需要通过设备ID进一步确认。可以尝试:
lspci -nn | grep -i realtek记下中括号里的设备ID(如10ec:8168),这个在后面下载驱动时会很有帮助。
2.2 临时获取网络连接
既然Wi-Fi不能用,我们需要通过其他方式让电脑暂时联网以下载驱动。有两个常用方法:
有线网络:直接用网线连接路由器。Ubuntu通常能自动识别有线网卡,连接后就能上网。
手机USB共享网络:用数据线连接手机,开启USB网络共享功能。在Ubuntu中会自动识别为有线连接。
我个人的经验是,手机热点更可靠,特别是在没有现成网线的情况下。连接成功后,可以ping一下百度测试网络:
ping www.baidu.com看到有返回数据包就说明网络通了,可以继续下一步。
3. 下载并编译Realtek驱动
3.1 获取正确的驱动版本
Realtek官方驱动版本众多,找到合适的那个很关键。经过多次尝试,我发现r8168-8.046.00.tar.bz2这个版本兼容性最好。可以通过以下命令下载:
wget https://github.com/xxxx/r8168-8.046.00.tar.bz2注意:上面的链接可能需要替换为实际可用的地址。如果找不到,可以尝试在CSDN等平台搜索"r8168-8.046.00.tar.bz2"。
我曾经花了整整一上午找驱动,最后发现有些网站提供的版本根本编译不过。所以建议优先找GitHub上的源,实在不行再考虑其他平台。
3.2 解压和准备编译环境
下载完成后,先解压文件:
tar xjvf r8168-8.046.00.tar.bz2然后进入解压后的目录:
cd r8168-8.046.00在编译前,我们需要确保系统有必要的开发工具:
sudo apt update sudo apt install build-essential linux-headers-$(uname -r)这一步很关键,我遇到过好几次因为缺少内核头文件导致编译失败的情况。特别是如果你升级过内核,一定要确认linux-headers的版本和当前运行的内核一致。
4. 编译和安装驱动
4.1 编译驱动模块
现在可以开始编译了,依次执行:
make clean make编译过程通常很快,如果没有报错,你会看到类似这样的输出:
make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-20-generic'如果遇到错误,最常见的原因是内核头文件不匹配。可以尝试先确认当前内核版本:
uname -r然后安装对应的headers:
sudo apt install linux-headers-$(uname -r)4.2 安装驱动
编译成功后,安装驱动:
sudo make install这个命令会将编译好的驱动模块(.ko文件)复制到/lib/modules/对应内核版本目录下,并更新模块依赖关系。
为了确保新驱动被加载,建议先卸载原有驱动:
sudo rmmod r8169然后加载新驱动:
sudo modprobe r8168有些教程会建议完全禁用r8169驱动,但我的经验是,除非你确定不再需要它,否则简单卸载就够了。完全禁用可能需要修改blacklist.conf文件,操作不当可能导致其他问题。
5. 验证和故障排除
5.1 检查驱动是否加载成功
重启后,可以用以下命令检查驱动是否正常加载:
lsmod | grep r8168如果看到输出中有r8168,说明驱动加载成功。还可以查看更详细的信息:
dmesg | grep r8168这个命令会显示内核日志中与r8168驱动相关的信息,帮助确认是否有错误。
5.2 常见问题解决
- 驱动加载但Wi-Fi仍不可用:可能是网络管理器的问题,尝试重启网络服务:
sudo service network-manager restart编译时报错:最常见的原因是内核头文件不匹配。确保已安装正确版本的linux-headers。
安装后系统无法启动:如果遇到这种情况,可以进入恢复模式,删除r8168驱动,恢复默认的r8169驱动。
我遇到过最棘手的情况是驱动编译安装都成功了,但网络时断时续。后来发现是电源管理导致的,解决方法是在/etc/modprobe.d/目录下创建一个新文件(如rtl.conf),加入以下内容:
options r8168 s5wol=0然后更新initramfs:
sudo update-initramfs -u6. 长期维护建议
6.1 内核升级后的处理
每次系统内核升级后,都需要重新编译安装驱动。可以创建一个简单的脚本来简化这个过程:
#!/bin/bash cd /path/to/r8168-8.046.00 make clean make sudo make install sudo depmod -a sudo modprobe -r r8169 sudo modprobe r8168把这个脚本保存为update_r8168.sh,每次内核升级后运行即可。
6.2 备份驱动
为了避免下次重装系统时又要到处找驱动,建议把下载的驱动包和编译好的.ko文件都备份到U盘或云存储。特别要注意保存你验证过能正常工作的驱动版本。
我在自己的NAS上专门建了一个文件夹存放各种设备的驱动,这样无论什么时候重装系统,都能快速恢复所有硬件功能。对于经常折腾Linux的用户来说,建立个人驱动库是个好习惯。
7. 替代方案和进阶选择
7.1 DKMS自动编译
如果你不想每次内核升级都手动编译驱动,可以考虑使用DKMS(Dynamic Kernel Module Support)。它能自动在内核升级后重新编译驱动。安装方法:
sudo apt install dkms然后在驱动目录执行:
sudo dkms add . sudo dkms install r8168/8.046.00这样系统就会记住这个驱动,以后内核升级时会自动处理。
7.2 尝试更新的内核
Ubuntu18.04默认的内核版本较旧,对新型硬件的支持有限。可以考虑安装更新的HWE(Hardware Enablement)内核:
sudo apt install --install-recommends linux-generic-hwe-18.04新内核可能已经包含了对你网卡的更好支持,这样就无需额外安装驱动了。不过升级内核有一定风险,建议先做好备份。
8. 写在最后
解决Ubuntu网卡驱动问题确实需要一点耐心,特别是当你第一次遇到时。但一旦掌握了方法,以后再遇到类似问题就能从容应对了。我自己的笔记��就因为这个驱动问题重装过三次系统,每次都能在半小时内搞定。
记住几个关键点:确认网卡型号、获取正确的驱动版本、确保编译环境完整、知道如何验证驱动是否正常工作。把这些步骤走通后,你会发现Linux下的硬件问题其实没那么可怕。