在一个很平常的日子,远程连接我的NUC
一直失败,怀疑是网络没连接上,问题是前一晚还是好好的啊,费解。
博主的NUC
安装的是Manjaor
系统,登录上去查看发现wifi果然是没连接。本以为直接nmtui
连接下wifi
就好了,没想到事情远没这么简单。。。
图形界面上没有wifi
模块,也没有wifi
列表,根本连接不了。。。
# nmcli device wifi list
#
没错,wifi
列表是空的,我去。。
ifconfig
发现只有docker0
和eth0
,根本没有wifi
模块。。emmm,看起来像是wifi
驱动没起来啊,无线网卡都没加载出来。
1、难道是网络管理的问题,重启
sudo systemctl restart NetworkManager # 失效
2、难道是网卡设备加入了黑名单
cd /etc/modprobe.d # 失效,是空的
3、我特么直接reboot
# 失效+10086
第一波排查基本可以锁定是wifi
设备没起来,可能是硬件也可能是驱动。一般来说驱动可能性大一些。
搜索了一圈,发现有建议是升级内核版本。不至于吧,毕竟昨天还是能用的。
博主linux
内核版本5.15
,看起来像是同样的问题,但是升级内核这种事,非必要还是算了,继续找问题。。
建议升级内核的:Manjaro not detecting WiFi adaptor Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01)
首先是排查的命令先介绍下:
lshw用户查看硬件的一些信息,这些信息主要来自于/proc里面。
lsmod用于显示已载入系统的模块,读取的是/proc/modules文件内容,以友好的方式显示输出。输出内容有四列。
lspci显示系统中所有的pci总线或者连接到该总线的设备。
具体参考:常见命令的补充
查看网络设置,发现wifi
设置:product: Alder Lake-P PCH CNVi WiFi 状态为unclaimed
,未认领的。
好家伙,驱动绝对有问题。
iwlwifi 454656 1 iwlmvm
# 发现已经加载了iwlmvm模块,这个模块是无线网卡驱动。
# modprobe是linux的一个命令,可载入指定的个别模块,或是载入一组相依的模块。
sudo modprobe iwlmvm
# reboot 重启,无效
# 重新加载一下iwlmvm原始文件
ls /lib/modules/5.15.102-1-MANJARO/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko.xz
sudo modprobe /lib/modules/5.15.102-1-MANJARO/kernel/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko.xz
sudo modprobe iwlwifi
# reboot 重启,无效
看来iwlwifi
无线网卡驱动是已经有的,但是重新应用发现还是不行,那又是为什么呢?
00:14.3 Network controller: Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01)
DeviceName: Onboard - Ethernet
Subsystem: Intel Corporation Wi-Fi 6E AX211 160MHz
Kernel modules: iwlwifi
# 相比于其他硬件设备,少了一行: 意思是驱动没起来
Kernel driver in use: xxx
# dmesg是一种程序,用于检测和控制内核环缓冲。程序用来帮助用户了解系统的启动信息
sudo dmesg | grep iwl
发现wifi模块输入错误如下:
xxao-66.ucode failed with error
no suitable firmware
need xxx version but not found # 这句记不清楚啦
锁定是firmware
的版本有问题。formware
是什么呢?
表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,生成目标系统的时候,通常拷贝在/lib/firmware目录下。当driver对device进行初始化的时候,通过request_firmware()等接口,在一个用户态helper程序的帮助下,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。
看起来很复杂,反正就是它的问题了,而且错误提示是版本不对。ok,找到正确的版本应该就可以。
pacman -Qi linux-firmware
Version : 20230210.xxxx # 0210的版本
0210
版本看起来也没什么问题,身边同事也是一样的Manjaor
系统,我俩的firmware
是一样的版本,他就没啥问题。why???
参考:Iwlwifi firmware issue after upgrade kernel to 515
文章的这个博主的内核版本也是5.1.5
,发生日期也是3
月份相同的问题,靠降级firmware
解决了这个问题。降级?意思是我的机器最近升级了呗。。。。主要问题应该就在这儿了。
本来想重新安装个低版本,发现网都没有,fuck,从本地缓存找吧。
# 进入pacman缓存,找到之前安装的包
cd /var/cache/pacman/pkg
# 本地安装0117版本
sudo pacman -U linux-firmware-20230117.7e4f0ed-1-any.pkg.tar.zst
# 查看firmware版本是否符合预期
pacman -Qi linux-firmware
# reboot
nmcli connection up 你的wifi名字
博主在想会因为什么原因导致这种包会升级呢?明显不是我们常用的包。。。非常有可能是系统性升级带来的,查询pacman
发现:
pacman -Suy: 更新源对应的包
pacman -S --help
-u, --sysupgrade upgrade installed packages (-uu enables downgrades)
果然,因为执行过pacman -Suy
导致的系统性升级软件包。。无语。以后还是注意下,优先是单个包的升级,一把唆是不对的。。
# pacman升级单个包
sudo pacman -S package_name1 package_name2 ..
end