笔电从一开始安装ubuntu就一直无法连接wifi(没有搜索到wifi的list)。近期,由于办公场所的约束,只能通过wifi来连接。虽然网上有不少帖子,但由于每个人的电脑配置情况不同,刚开始没有深究,一直按照其他博主的步骤总是没能成功。通过摸索,终于找到原因,并解决wifi连接问题。如果要总结的话就有两点:一个是无线网卡驱动一定要跟电脑配对,一个是ubuntu系统的内核版本。由于电脑配置不同,仅供参考。比如网上有用系统iso来安装驱动的,但我看到的帖子其相应的无线网卡型号都是Broadcom的。如果你的网卡型号是Intel的,可以考虑下情况是否和我一样。
系统环境说明
系统:ubuntu14.04.5(自带的内核版本为4.4.0-31-generic)
无线网卡:Intel
1. 查看系统版本
uname -r
2. 查看无线网卡型号指令
lspci | grep -i net
返回以下消息
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)
03:00.0 Network controller: Intel Corporation Device 24fd (rev 78)
其中Network controller后面的表示无线网卡,需要下载相应的无线网卡驱动。题外话,我当时是在windows系统的设备管理器中看到自己的无线网卡驱动型号,需要的是8265的驱动。
Intel无线网卡驱动下载与安装
方法有二。
方法1,可以通过链接 https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi下载相应的驱动。安装指令为(下面指令需要解压文件并进入解压文件夹):
cp iwlwifi-*.ucode /lib/firmware
方法2,可以在 http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/下载最新的驱动。如iwlwifi-8265-22.ucode已经包含在linux-firmware_1.162_all.deb中。安装方式可以双击进入软件中心进行安装,或这通过以下指令:
sudo dpkg -i linux-firmware_1.162_all.deb
安装之后可以在/lib/firmware中确认是否有你需要的网卡驱动,如我需要iwlwifi-8265-22.ucode。如果安装完后在/lib/firmware中没有看到你需要的驱动,需要下载最新的驱动包并进行安装,或通过方法1进行安装.
系统内核升级
这一步不是绝对的!我安装完驱动后重启电脑扔无法搜索到wifi。后来才意识 https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi中在网卡驱动号前对系统内核有说明。见下图:
可以看到,我的驱动号需要linux4.6+的内核,所以我需要升级到4.6以上的内核。我首先安装了4.9.0的内核,因为网上有人使用过(有教程),这样我会觉得这个内核比较稳定。我升级完内核之后确实是可以找到wifi并成功登录wifi,只是在开机进入登录界面前显示一串“ACPI Error...”。由于工作内容比较紧张,当时没去理会。过了几天电脑突然进不了桌面(这个锅或许不是这个内核的原因),大半天都没找到正确的解决方法。公司其中一个IT同事建议重装系统(题外话:可能是该IT同事对这方面不是很懂,说需要把东西备份出来,然后格式重装系统。公司IT部门做了一个安装U盘可以一键装系统,但在需要备份数据量比较大的情况下,备份数据本身就需要很多的时间。幸好刚开始装系统的时候考虑到重装问题,对系统进行了分区。这样就不需要备份home目录下的文件再进行重装了)。最后选择自己重装电脑,后面会写个帖子记录下自己的分区和安装重装的步骤,因为当时重装的时候记不清楚怎么操作了。
重装完电脑,我又再次确认无线网卡驱动和系统内核的事,安装完驱动重启不能显示wifi,升级完4.9.0核可以显示wifi并连接。但仍然会有“ACPI Error...”。这时我选择安装比4.9低的内核版本,如4.8.17的内核,当时想着如果开机再有错误提示就接着换更低版本的内核,索性没有问题。
内核下载及安装
可以通过 http://kernel.ubuntu.com/~kernel-ppa/mainline/下载相应的版本的内核。需要下载三个包:linux-headers-***_all.deb,linux-headers-***-generic_***.deb和linux-image-***-generic_***.deb。以64位系统安装4.8.17为例,需要下载以下三个包:
linux-headers-4.8.17-040817_4.8.17-040817.201701090438_all.deb
linux-headers-4.8.17-040817-generic_4.8.17-040817.201701090438_amd64.deb
linux-image-4.8.17-040817-generic_4.8.17-040817.201701090438_amd64.deb
并通过指令单独安装每个包,或通过sudo dpkg -i linux-*.deb来安装。如果文件夹下有多种内核包的话,需要对内核版本进行限定,如sudo dpkg -i linux-*_4.8.17*.deb
安装完就可以重启电脑了。不出意外可以搜索到wifi。
卸载内核
查看安装的内核版本(不限以下三种,为了以后使用方便,记录以下)
dpkg -l | grep linux-image
或 dpkg -l | grep linux-headers
或 dpkg --get-selections| grep linux
卸载内核版本
sudo apt-get purge linux-image-4.8.17-040817-generic
sudo apt-get purge linux-headers-4.8.17-040817-generic
更新GRUB配置启动引导
参考文献
[1] https://www.sysgeek.cn/remove-kernel-images-ubuntu/
[2] https://favoorr.github.io/2017/02/11/update-kernel-for-ubuntu/