如何修复明显缺失的内核模块依赖声明?

如何修复明显缺失的内核模块依赖声明?

我遇到了 ASIX AX88179 USB 3.0 千兆位以太网适配器的一个相对常见的问题,它根本无法工作,或者偶尔工作,并且dmesg显示如下错误

[23552.344134] ax88179_178a 2-1:2.1 eth1: Failed to read reg index 0x0000: -32

在网上搜索时,我发现了有关此问题或类似问题的报告,但没有令人满意的解决方案或解释。

经过一番调试,发现如果cdc_mbim之前加载了模块,问题就解决了ax88179_178a。以下解决了该问题,直到下次重新启动为止:

# rmmod ax88179_178a
# modprobe cdc_mbim
# modprobe ax88179_178a  # optional

我已经检查过没有直接或间接cdc_mbim声明为 的依赖项。ax88179_178a

我怎样才能使ax88179_178a依赖cdc_mbim,以便cdc_mbim始终自动加载ax88179_178a


更新。

我的问题似乎是重复的为自动加载模块创建 Linux 模块依赖项

答案1

一个类似但稍微简洁的策略也涉及文件 in ,modprobe.d/即使用该softdep功能告诉在 之前modprobe加载。在:cdc_mbimax88179_178a/etc/modprobe.d/ax88179.conf

softdep ax88179_178a pre: cdc_mbim

答案2

您可以使用Amodprobe.d文件在不更改内核的情况下配置它。创建一个名为 的文件/etc/modprobe.d/ax88179.conf,其中包含以下内容:

install ax88179_178a /sbin/modprobe cdc_mbim; /sbin/modprobe --ignore-install ax88179_178a

这将确保尝试安装ax88179_178acdc_mbim首先加载,然后加载ax88179_178a.--ignore-install第二个命令跳过此行(以避免无休止的处理)。

相关内容