当前位置: 首页 > news >正文

记一次解决Intel 9462无线网卡的笔记本安装Ubuntu16.04后无法连接WIFI问题的艰难历程

文章目录

  • 前言
  • 安装环境
  • 解决方案
  • 安装过程
    • 初始环境
    • 安装Ubuntu16.04.2
    • 硬件禁止问题
    • 激活无线网卡
    • 更新软件列表附加驱动
    • 更新内核1
    • 安装Ubuntu16.04.7
    • 查找网卡版本
    • 更新内核2
    • 安装Ubuntu20.04.1
    • 安装Ubuntu18.04.5
    • 再次安装Ubuntu16.04.7
    • 踩过的其他坑
  • 总结

前言

一台新申请的ThinkPad-X390笔记本需要安装Ubuntu系统,为了统一工作开发环境,选择了大家一直都在使用Ubuntu16.04版本,虽然这个系统版本旧一点,不过同一个版本出现开发环境问题也好排查,但没想到的是这里埋下了一个坑,导致成功安装系统后却不能上网,足足折腾了一整天才搞定,记录一下,没事回来看看还能乐呵乐呵。

安装环境

  • ThinkPad-X390 笔记本
  • Intel® Wireless-AC 9462 无线网卡
  • Ubuntu 16.04.7 系统

解决方案

根本原因: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系统黑屏,登录界面黑屏,命令行界面可用》,当时靠着几个命令把问题解决了,这次解决问题同样需要几个命令,但是这个过程就复杂多了。

安装Ubuntu16.04.2

本地找到了之前在虚拟机中安装使用过的 ubuntu-16.04.2-desktop-amd64.iso 镜像,使用UltraISO刻录U盘发现一直占用,遂改用rufus来刻录,发现这个软件操作也很方便,顺利完成启动盘制作,安装过程也比较顺利,网上很多大佬的教程都可以拿来参考,比如下面这几篇:

  • 《Win10 + Ubuntu 16.04双系统完美安装教程【详细】》
  • 《Windows10安装ubuntu16.04双系统教程》
  • 《卸载win10装Ubuntu笔记》

注意,前两篇是装双系统的,和我们的只安装一个Ubuntu16.04的目标不太一致,但是绝大部分步骤都是一致的,网络上的知识就是这样,要想完全一样太难了,需要学会变通。

比较懒我就不截图了,去大佬文章里看吧,说一说其中的几个关键点:

  • 安装Ubuntu需要关闭BOIS中的Secure Boot 选项
  • 注意一下安装双系统和单个系统时进行分区操作的差异,选对主分区和逻辑分区
  • 烧制U盘和安装系统时涉及到分区表GPT和MBR的选择,烧制U盘与硬件分区模式一致就好,在windows通过命令或者“管理”都很容易查到
  • 启动方式有Legacy和UEFI区别,记住UEFI是新的,能用它就用它,不行就换成Legacy,大不了重新装一次,当然你根据硬件情况能准确判断最好
  • 安装过程中有一步是勾选“为图形或无线硬件…安装第三方软件”,看到很多教程都没勾选,我也没选(伏笔1),感觉我已经入坑了

非常自信的干掉了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盘就行了,但是直接安装会有依赖问题,解决这个问题就是一个个在镜像中找到,然后安装上。

  • 《Ubuntu离线安装网卡驱动》
  • 《【菜鸟向】Ubuntu无法连接wifi问题的解决》

一步步操作之后完全没有作用,现在来看如果能起作用还怪了,这是bcm博通网卡的处理方法,而我的网卡是Intel的,又是做了无用功

更新软件列表附加驱动

这种解决方案网上流传的最多,其实就是依靠Ubuntu的软件仓库来解决

  • Ubuntu16.04无法连接Wifi解决方案 (绝对有效)
  • ubuntu16.04中不能连接无线网络

解决这个问题的关键就是先联网,仿佛陷入了死循环,我现在就是要解决无线网卡连不上网的问题,你却让我先联网更新,其实对于可以连接有线网络的电脑来说没什么问题,但是我这里连不上有线网啊!

然后我就学到了一个逆天的操作,原来USB可以供网,可以通过USB线让笔记本使用手机的4G网络,瞬间打开了一扇大门,说干就干,先更新一下 Ubuntu 的软件源,可以参考下面这个文章,其实有很多源的,比如常用的清华源、阿里源等等,但是要注意版本,网上流传着一些错误版本的地址,需要自己甄别一下。

  • Ubuntu16.04更换国内源

这个软件源其实类似于应用商店的地址,换了软件源就相当于换了一个应用商店,还完源更新之后就可以从软件仓库中有哪些软件,下次再安装软件时就可以找到了,在这列举一个常用的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的网卡有点难搞啊

更新内核1

从现在开始渐渐步入正确轨道了,因为我发现的网上各种设置网卡参数的命令在我这没有任何反应,比如执行 rfkill list 结果显示根本没有网卡,只有两个蓝牙,执行 lshw -c network 之后发现 *-network UNCLAIMED 内容,开始搜索相关内容,然后发现了下面的帖子:

  • Network unclaimed on Ubuntu

提问者根据回答人提供的步骤一步步解决了自己的问题,而我在安装这个内核版本时提示已经最新无法继续安装,并且在回答中提到安装 16.04.4 版本的镜像不需要做任何设置就可以使用无线网了,想到自己安装的是 16.04.2,就怀疑是这里的问题,准备安装高版本镜像

安装Ubuntu16.04.7

由于Ubuntu官网下载比较慢,所以找了国内的镜像网站下载了 16.04.7版本,刻录U盘启动盘,准备安装

  • 中科大ubuntu镜像站
  • 几个ubuntu16.04镜像下载地址

这次安装的熟练了一些,完成后进入系统并未有什么改变,依旧连不上网,尝试更新软件试试,于是再一次连接手机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进行处理,把内核升级了应该就可以了

更新内核2

WinPE方式失败后决定升级内核,于是按照文章开头提供的那篇解决方案来处理,但是内核文件安装失败了,无法升级,内心崩溃…

Ubuntu应用—安装 Intel Wireless-AC 9462 无线网卡驱动(无法连接wifi,完美解决)

这一篇也是类似的,同样无法成功更新。

安装Ubuntu20.04.1

既然升级内核失败了,我干脆安装个自带高内核版本的系统算了,下载了 Ubuntu20.04.1 的镜像

清华大学开源软件镜像站

经过漫长的等待下载完成,刻录Ubuntu启动盘,安装设置一气呵成,搞定了,无线网的小雨伞出现了,简直泪流满面…

然后通过 lspci | grep Net 来查看网卡型号,结果出现了 Intel Corporation Wireless-AC 9462,看到这里我都惊呆了,原来这个网卡比 Intel® 9560AC 版本还要低,联想客服的回答是错误的,Intel官方驱动的对应关系也不准确,真是没什么可信的了。

安装Ubuntu18.04.5

既然无线网卡都可以识别了,为什么还要折腾呢?因为Ubuntu20.04.1这个版本跟周围小伙伴使用的系统版本差的有点多,并且之前出现过项目编译问题,所以换个低一点的版本试试。

下载镜像,刻录U盘,安装系统轻车熟路,真是越来越顺利了,安装完成后WIFI正常,果然是内核版本的事情,高版本的系统直接就可以使用,根本不需要任何设置。

再次安装Ubuntu16.04.7

因为不服输,我又折腾回来了,既然是内核版本的问题,我就再试试在这个低版本系统上升级内核,这次安装时勾选了“为图形或无线硬件…安装第三方软件”,因为我突然意识到其他教程不让勾选都是台式机,而我是笔记本,我的个乖乖啊,感觉被坑了。

这次一步步操作,安装完系统就不再做任何设置,直接升级内核,访问内核软件网站,下载下面4个包:

  • linux-headers-5.2.16-050216_5.2.16-050216.201909190832_all.deb
  • linux-headers-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb
  • linux-image-unsigned-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb
  • linux-modules-5.2.16-050216-generic_5.2.16-050216.201909190832_amd64.deb

依次按照下面的命令安装,这次居然成功了

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几次系统,至少翻了几百个页面,有一些处理方式尝试过但没有什么效果,也列举在这里,留个纪念

  • Ubuntu16.04无附加驱动无法连接WiFi总结
  • Ubuntu-server 10.04.4查看无线网卡型号
  • Ubuntu安装后未发现wifi适配器解决
  • ubuntu16.04+intel无线网卡无法连接WiFi解决方法,下载驱动,升级内核(亲测有效)
  • ubuntu18.04 无法连接有线

总结

  • 现在安装Ubuntu特别溜,刻录U盘启动盘+安装完系统也就10分钟
  • 手机通过USB连接笔记本可以直接给笔记本提供网络,这波操作有点优秀
  • 认识了一堆之前没用过的命令,特别是 lspci 显示设备信息和 iwconfig 管理无线网络
  • 出现问题时还是要找到根本原因,不能病急乱投医,一些博通网卡的处理方式用到Intel上显然不合适

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

当个人实力撑不起自己的野心时,需埋下头来刻苦修炼,当目前的能力无法满足自己的欲望时,需抑制一些不切实际的想法,但愿多年之后回想这些隐忍的瞬间能内心充满感恩而不是悔恨~

相关文章:

  • 启用make多任务参数让构建过程加速完成
  • C++中一些方便的算法函数和吃不够的语法糖
  • C/C++中string和int相互转换的常用方法
  • TCP/IP协议簇中的子网掩码有什么作用
  • Go环境配置时遇到的GOPATH路径以及包管理问题
  • linux环境下的mount命令到底有什么玄机
  • Python中int、str、bytes相互转化,还有2进制、16进制表示,你想要的都在这里了
  • 解决git命令会将结果输出到单独窗口必须按q才能退出的问题
  • C++中反向遍历map时怎样删除元素
  • C++中常见的字符判断与处理方法
  • 写给自己的KMP——C++版本
  • C++中一些可以在偷懒时直接使用的函数
  • protobuf中SerializeToString和SerializePartialToString的区别
  • linux文件权限简单备忘知识点
  • 使用AddressSanitizer搭配addr2line查找C/C++内存泄漏问题
  • SegmentFault for Android 3.0 发布
  • 10个确保微服务与容器安全的最佳实践
  • 2019.2.20 c++ 知识梳理
  • Android 架构优化~MVP 架构改造
  • angular学习第一篇-----环境搭建
  • Debian下无root权限使用Python访问Oracle
  • E-HPC支持多队列管理和自动伸缩
  • javascript面向对象之创建对象
  • PHP变量
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SQLServer之创建数据库快照
  • 从setTimeout-setInterval看JS线程
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 排序(1):冒泡排序
  • 提醒我喝水chrome插件开发指南
  • 听说你叫Java(二)–Servlet请求
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #Lua:Lua调用C++生成的DLL库
  • #预处理和函数的对比以及条件编译
  • (11)MSP430F5529 定时器B
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (30)数组元素和与数字和的绝对差
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)换源+apt-get基础配置+搜狗拼音
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)h264中avc和flv数据的解析
  • (转)Unity3DUnity3D在android下调试
  • (转)程序员技术练级攻略
  • (转载)虚函数剖析
  • ..回顾17,展望18
  • .jks文件(JAVA KeyStore)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET多线程执行函数
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • .考试倒计时43天!来提分啦!