如果内核模块加载失败如何自动重新加载

如果内核模块加载失败如何自动重新加载

如果内核模块失败,如何自动重新加载内核模块?

我的笔记本上有 Wi-Fi Qualcom 网卡,但有时无法加载。我编写了一个简单的脚本fixwifi,我称之为 ,它基本上删除、等待,然后再次加载模块:

#!/bin/bash
sudo modprobe -r ath10k_pci
sleep 1
sudo modprobe ath10k_pci

有问题的模块有时会在启动时失败,有时会在从睡眠状态唤醒时失败,并将以下内容打印到日志中(来自 的输出dmesg):

[   40.336212] ath10k_pci 0000:07:00.0: wmi service ready event not received
[   40.426511] ath10k_pci 0000:07:00.0: Could not init core: -110

目前,每当我看到模块失败时,我都会打开终端并执行fixwifi...但这是体力劳动,我认为可以自动化。

有没有某种方法可以自动化这个过程(或者,上帝,修复它?!)?我正在考虑编写一个 systemd 单元,但是如何获得有关模块失败的通知?我是否经常轮询或查看系统日志?

系统:带有 systemd 的 Ubuntu 22.04。
摘自lshw

*-network
                description: Wireless interface
                product: QCA9377 802.11ac Wireless Network Adapter
                vendor: Qualcomm Atheros
                physical id: 0
                bus info: pci@0000:07:00.0
                logical name: wlp7s0
                version: 31
                serial: ...
                width: 64 bits
                clock: 33MHz
                capabilities: bus_master cap_list ethernet physical wireless
                configuration: broadcast=yes driver=ath10k_pci driverversion=5.15.0-52-generic firmware=WLAN.TF.2.1-00021-QCARMSWP-1 ip=... latency=0 link=yes multicast=yes wireless=IEEE 802.11
                resources: irq:145 memory:a4000000-a41fffff

相关内容