一台新申请的ThinkPad-X390笔记本需要安装Ubuntu系统,为了统一工作开发环境,选择了大家一直都在使用Ubuntu16.04版本,虽然这个系统版本旧一点,不过同一个版本出现开发环境问题也好排查,但没想到的是这里埋下了一个坑,导致成功安装系统后却不能上网,足足折腾了一整天才搞定,记录一下,没事回来看看还能乐呵乐呵。
根本原因:Ubuntu 16.04内核版本太低,无法自动识别网卡,需要手动升级内核,安装无线网卡驱动。如果你遇到的情况也是新版本无线网卡,安装老版本系统时无法连接WIFI,请参考这个无私博主的解决方法,有这一篇足够了
联想 Yoga C740::关于Ubuntu16.04下无法识别Intel WIFI6 AX201无线网卡的解决方案,https://blog.csdn.net/dieju8330/article/details/101422743
下面开始碎碎念内容,虽然现在看来只要是上面那一个链接就可以解决问题,但是这却是浏览了几百个网页后,不断尝试才证明它是有效的,所以我也简单记录一下这个过程,以下的内容可能对你解决问题可能没什么帮助了,不过你要是喜欢听故事倒是可以继续瞧瞧。
一台预装了Win10系统的笔记本,连接WIFI可以正常上网,一开始是打算装双系统的,但是台式机是Win10,笔记本再保留一个Win10有些浪费空间,准备只安装一个Ubuntu算了。
又要装Ubuntu了,我在CSDN的第一篇文章的就是有关Ubuntu的,《ubuntu 12.04系统黑屏,登录界面黑屏,命令行界面可用》,当时靠着几个命令把问题解决了,这次解决问题同样需要几个命令,但是这个过程就复杂多了。
本地找到了之前在虚拟机中安装使用过的 ubuntu-16.04.2-desktop-amd64.iso 镜像,使用UltraISO刻录U盘发现一直占用,遂改用rufus来刻录,发现这个软件操作也很方便,顺利完成启动盘制作,安装过程也比较顺利,网上很多大佬的教程都可以拿来参考,比如下面这几篇:
注意,前两篇是装双系统的,和我们的只安装一个Ubuntu16.04的目标不太一致,但是绝大部分步骤都是一致的,网络上的知识就是这样,要想完全一样太难了,需要学会变通。
比较懒我就不截图了,去大佬文章里看吧,说一说其中的几个关键点:
非常自信的干掉了Win10系统(伏笔2),干干净净的只安装了Ubuntu,安装很快完成,顺利进入系统,期间跳出来几行错误,我都没看清就闪过去了,应该是不重要,进去后准备部署开发环境,发现没有WIFI列表,这就奇怪了,网卡肯定没问题,之前Win10是可以上网的,肯定是设置的不对,上网查查为什么吧。
这是我看到的第一个解决方案,需要改 /etc/Network/NetworkManage.conf
文件中的 manage=false
改成 manage=true
, 参考下面这帖子
解决Ubuntu下的WiFi列表不显示问题(硬件禁止问题)
现在回过头来想想我根本就不是这个问题,很多特点都对不上,完全是病急乱投医的处理方式,使用 rfkill list
命令根本找不到我的网卡,这一点也是后来才发现的
很多文章开局就是下面这两个命令
sudo apt-get update
sudo apt-get install --reinstall bcmwl-kernel-source
要知道使用 sudo apt-get update
是需要联网的,现在我连不上无线,不存在有线,所以上不去网,然后翻了N个页面之后找到了大神离线安装的方法,其实这个安装文件在镜像里就有,所以打开刚刚烧制的U盘就行了,但是直接安装会有依赖问题,解决这个问题就是一个个在镜像中找到,然后安装上。
一步步操作之后完全没有作用,现在来看如果能起作用还怪了,这是bcm博通网卡的处理方法,而我的网卡是Intel的,又是做了无用功
这种解决方案网上流传的最多,其实就是依靠Ubuntu的软件仓库来解决
解决这个问题的关键就是先联网,仿佛陷入了死循环,我现在就是要解决无线网卡连不上网的问题,你却让我先联网更新,其实对于可以连接有线网络的电脑来说没什么问题,但是我这里连不上有线网啊!
然后我就学到了一个逆天的操作,原来USB可以供网,可以通过USB线让笔记本使用手机的4G网络,瞬间打开了一扇大门,说干就干,先更新一下 Ubuntu 的软件源,可以参考下面这个文章,其实有很多源的,比如常用的清华源、阿里源等等,但是要注意版本,网上流传着一些错误版本的地址,需要自己甄别一下。
这个软件源其实类似于应用商店的地址,换了软件源就相当于换了一个应用商店,还完源更新之后就可以从软件仓库中有哪些软件,下次再安装软件时就可以找到了,在这列举一个常用的Ubuntu16.04的软件源,替换 /etc/apt/source.list
文件内容就好了。
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
准备就绪,USB连接手机,然后共享网络,执行 sudo apt-get update
命令,照着教程操作一通,发现并没有在附加驱动选项卡中发现可用的驱动,失败了,同时耗费了1G流量导致手机网络报警。
还是回过头来看看,很多人说这种方式解决了问题,但我没有成功,看看成功的那些截图还是博通的网卡,而我这个Intel的网卡有点难搞啊
从现在开始渐渐步入正确轨道了,因为我发现的网上各种设置网卡参数的命令在我这没有任何反应,比如执行 rfkill list
结果显示根本没有网卡,只有两个蓝牙,执行 lshw -c network
之后发现 *-network UNCLAIMED
内容,开始搜索相关内容,然后发现了下面的帖子:
提问者根据回答人提供的步骤一步步解决了自己的问题,而我在安装这个内核版本时提示已经最新无法继续安装,并且在回答中提到安装 16.04.4
版本的镜像不需要做任何设置就可以使用无线网了,想到自己安装的是 16.04.2,就怀疑是这里的问题,准备安装高版本镜像
由于Ubuntu官网下载比较慢,所以找了国内的镜像网站下载了 16.04.7版本,刻录U盘启动盘,准备安装
这次安装的熟练了一些,完成后进入系统并未有什么改变,依旧连不上网,尝试更新软件试试,于是再一次连接手机USB网络,执行下面命令
sudo apt-get update
sudo apt-get upgrade
又是几百兆流量进去了,依然没有效果
至此虽然已经连不上网,但是基本确定了问题的原因,不是网卡设置的问题,而是驱动版本不对,系统无法识别网卡型号,没有办法正常工作。
可是怎么才能知道网卡的型号呢?如果正常驱动的无线网卡可以使用 lspci | grep Net
这个命令,但是我这里不行,只显示Intel设备,无法显示设备类型和具体型号,倘若我的win10还在,直接在设备管理器中查就可以了,但是他已经被我自信的格式化了,此处捶胸顿足。
那怎么办呢?问问旁边的小伙伴?关键电脑型号不一样啊!撬开电脑后盖?估计无线网卡在哪我都找不到。对了,去联想官网看看配置,应该能找到的吧!
说干就干,打开联想官网居然找不到这个具体的型号,只能找到 ThinkPad-X390 系列,而我这个子系列是20SD,官网上有20SC、20SX、20Q0等等,就是没有20SD,没办法了,看看这个相似的这几个无线网卡都是什么型号吧,发现大多数都是 Intel® 9560AC
,部分提到了 Intel® Wi-Fi 6 AX200
,这两个网卡差的可是有点多,需求的Ubuntu内核版本差了一个大版本,他们的对应关系可以参考Intel提供的这个文档
Linux* Support for Intel® Wireless Adapters
联想的官网只提供Windows上的驱动下载,Linux版本只能自己去Intel上找了,现在需要确定网卡版本来下载相应的驱动,但是目前查不到这个网卡的具体型号,还能怎么办呢?去找联想客服吧!
在联想的官网上找到了联想的售前,说明问题后给出的答案是大概率是 Intel® 9560AC
型号,然后转接技术处理,等待N久之后查了SN码说应该是 Intel® 9560AC
,但是我认为应该是网卡型号应该是 Intel® Wi-Fi 6 AX200
,如果是 Intel® 9560AC
型号的网卡,需要 Ubuntu
的内核是 4.14+
,而我安装的内核版本是 4.15.7
,系统没理由不认识这个网卡。
想想还有什么办法查网卡型号呢?既然windows上可以看,那我省点事安装个WinPE进系统看一下。下载常用的微PE工具箱,烧制U盘后进了系统,点开设备管理器,一大串设备都带着问号,原来在WinPE里也没有这些设备的驱动,我又跑去联想官网下载了Windows上的网卡驱动,放到WinPE上安装,结果因缺少DLL而失败,这条路也行不通了。
只能重新做个win10的系统看看了,再次对删除win10前没看网卡型号而捶胸顿足,下载了5个多G的镜像文件,刻录Win10启动盘,然后安装发现引导不进去,也是醉了,应该是文件系统格式不正确,导致系统无法引导,算了,死马当活马医吧,我直接把无线网卡当成最高的版本,按照Intel® Wi-Fi 6 AX200
进行处理,把内核升级了应该就可以了
WinPE方式失败后决定升级内核,于是按照文章开头提供的那篇解决方案来处理,但是内核文件安装失败了,无法升级,内心崩溃…
Ubuntu应用—安装 Intel Wireless-AC 9462 无线网卡驱动(无法连接wifi,完美解决)
这一篇也是类似的,同样无法成功更新。
既然升级内核失败了,我干脆安装个自带高内核版本的系统算了,下载了 Ubuntu20.04.1 的镜像
清华大学开源软件镜像站
经过漫长的等待下载完成,刻录Ubuntu启动盘,安装设置一气呵成,搞定了,无线网的小雨伞出现了,简直泪流满面…
然后通过 lspci | grep Net
来查看网卡型号,结果出现了 Intel Corporation Wireless-AC 9462
,看到这里我都惊呆了,原来这个网卡比 Intel® 9560AC
版本还要低,联想客服的回答是错误的,Intel官方驱动的对应关系也不准确,真是没什么可信的了。
既然无线网卡都可以识别了,为什么还要折腾呢?因为Ubuntu20.04.1这个版本跟周围小伙伴使用的系统版本差的有点多,并且之前出现过项目编译问题,所以换个低一点的版本试试。
下载镜像,刻录U盘,安装系统轻车熟路,真是越来越顺利了,安装完成后WIFI正常,果然是内核版本的事情,高版本的系统直接就可以使用,根本不需要任何设置。
因为不服输,我又折腾回来了,既然是内核版本的问题,我就再试试在这个低版本系统上升级内核,这次安装时勾选了“为图形或无线硬件…安装第三方软件”,因为我突然意识到其他教程不让勾选都是台式机,而我是笔记本,我的个乖乖啊,感觉被坑了。
这次一步步操作,安装完系统就不再做任何设置,直接升级内核,访问内核软件网站,下载下面4个包:
依次按照下面的命令安装,这次居然成功了
sudo sudo dpkg -i linux-headers-5.2.16-050216_5.2.16-050216.201909190832_all.deb
sudo sudo dpkg -i linux-headers-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb
sudo sudo dpkg -i linux-modules-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb
sudo sudo dpkg -i linux-image-unsigned-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb
然后从网站下载linux固件版本
linux-firmware_1.190_all.deb
使用如下命令安装成功
sudo sudo dpkg -i linux-firmware_1.190_all.deb
reboot重启系统,WIFI的小雨伞终于出现了,功夫不负有心人,彻底搞定了,至于WIFI可用却连不上公司的无线网,那就是另一个悲伤的故事了,和技术无关,就不在此展开了。
其实整个过程远不止上面提到的这些,安装了10几次系统,至少翻了几百个页面,有一些处理方式尝试过但没有什么效果,也列举在这里,留个纪念
lspci
显示设备信息和 iwconfig
管理无线网络当个人实力撑不起自己的野心时,需埋下头来刻苦修炼,当目前的能力无法满足自己的欲望时,需抑制一些不切实际的想法,但愿多年之后回想这些隐忍的瞬间能内心充满感恩而不是悔恨~