[daily][archlinux][pacman] local database 损坏

时间:2024-08-02 08:07:25

下午,开心的看着dpdk的文档,做做各种小实验。

后台正常yaourt -Syu,三个多G的下载,我总是过很久才update一次。

然后KDE窗口各种异常,我知道又在开始更x相关的东西了。可是因为X异常所以看见konsole。于是脑残的我就reboot了。。。

是reboot,不是systemctl reboot。(不明白我为什么这么脑残,既然出现了异常,说明已经download完成,开始install了,等一下就好了嘛,重启没有任何帮助。)

重启之后,果然出了问题,无线网卡驱动不起来了。幸好还有有线接口,不然连网都上不去。

然后,我是如以下步骤解决这个问题的

1. 用ip查看设备不在(wlan0),说明没有驱动起来。

[tong@T7 ~]$ ip link
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN mode DEFAULT group default qlen
link/loopback ::::: brd :::::
: lan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc fq_codel state UP mode DEFAULT group default qlen
link/ether :7b:9d:5c:1e:9b brd ff:ff:ff:ff:ff:ff
: internal-br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN mode DEFAULT group default qlen
link/ether d2:fd:::9f:6a brd ff:ff:ff:ff:ff:ff
[tong@T7 ~]$

2. lspci说明硬件识别正常,查看sysfs,确认确实是驱动没有驱起来。

[tong@T7 ~]$ lspci -nn |grep Wire
:00.0 Network controller []: Intel Corporation Wireless [:095b] (rev )
xxxxx
[tong@T7 ~]$ ls /sys/bus/pci/devices/\:\:00.0/ |grep driver
driver_override
[tong@T7 ~]$
xxxx

基于以上,已经证实了驱动iwlwifi出了问题,现在就要看一下出了什么问题。

3. 通过dmesg查看,系统启动阶段一定会试图去加载网卡,出了错。

[root@T7 pkg]# dmesg |grep iw
[ 3.096783] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096800] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096810] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096820] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096830] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096840] iwlwifi ::00.0: Direct firmware load for iwlwifi-7265D-.ucode failed with error -
[ 3.096843] iwlwifi ::00.0: no suitable firmware found!
[root@T7 pkg]#

可以看出来,是firmware出了问题,已经基本能够断定是更新了新的firmware有问题,后者更新时候被我重启搞坏了。

4. 我并不知道firmware是神马鬼,所以必须找到是哪一个包

[root@T7 pkg]# pacman -Q|grep firmware
linux-firmware .c4c07a8-
[root@T7 pkg]#

5. 回退 / 卸载 / 或者重装。于是问题来了,它被玩坏了。

[root@T7 pkg]# pacman -Run linux-firmware
error: could not open file /var/lib/pacman/local/linux-firmware-.c4c07a8-/desc: No such file or directory
warning: could not fully load metadata for package linux-firmware-.c4c07a8-
checking dependencies...
warning: removing linux-firmware from target list
there is nothing to do
[root@T7 pkg]#

怎样也不行,因为它坏了,最后我是这么搞的。

(1)touch空文件desc。(2)--force重装了这个包。

这并不是个好主意,因为--force代表着暴力,破坏。我们应该选择官方方法解决这个问题。IRC请教了某大哥,给出建议如下连接。我并没有看,也没用试。但我想应该是好使的。

https://wiki.archlinux.org/index.php/Pacman/Restore_local_database

6. 重新,看看是不是真的好了。