::: motto 和菜头
大多数时候,人不能被举起来摔在地上,人都是被自己的重量所绊倒的。
:::
最近由于工作需要,拿出妻子在 2011 年买的那款古老的 GateWay
(acer) 笔记本来使用。这台 10 年前的笔记本今天来用确实是比较卡,但是把机械硬盘换成 SSD, 加了一根内存之后发现速度也还勉强能用。
拿到机器第一件事情就是把 Window7 格式化,装了 Ubuntu20.04,系统装完之后发现无线网卡没法启用,报错是 wifi hardware disabled
。
排查尝试
遇到这个问题,我首先瞪大眼睛巡视了电脑一圈,没有发现有小的硬件开关,然后又在键盘的 FN 键上找了一圈,没有发现类似关闭 WIFI 的键,最后又不甘心的每个 FN 组合件都试了一下,发现依然无效。
直觉高速我,应该不是网卡硬件故障,否则应该无法识别硬件,而我使用 ifconfig -a
命令查询的时候明显能够列出那张无线网卡。
1 | ifconfig -a |
但是此时有点病急乱投医了,想进一步确定到底是硬件原因还是软件原因,于是去京东商城买了一张支持 Linux 的 USB 无线网卡,我首先在我的台式机上编译了驱动装上之后,WIFI 能够正常工作。
然后再到笔记本上装一下,发现 USB WIFI 也提示 wifi hardware disabled
。此时我已经能基本肯定是系统而并非硬件问题了。
应该是系统内核禁用了 WIFI 的功能,使用 rfkill
检查一下:
1 | 0: acer-wireless: Wireless LAN |
显然当前 Wireless 设备是被 Hard blocked
了。
解决方案
网上一顿搜索,看到有网友提醒说可能是硬件冲突了。回想一下我运行 rfkill list
的时候显示了两个无线模块: acer-wireless
和 phy0
,所以猜测这两个模块可能有冲突。
lsmod | grep acer
发现系统启动了 acer_wmi
模块:
1 | root@YSS:~# lsmod | grep acer |
于是果断禁用 acer_wmi
模块:
1 | vim /etc/modprobe.d/blacklist.conf |
其实发现系统默认还禁用了很多过时或者弃用的模块,blacklist.conf
完整配置如下:
1 | # This file lists those modules which we don't want to be loaded by |
重启之后发现 WIFI 已经能够自动开启了,rfkill 结果也正常了。
1 | root@YSS:~# rfkill list all |