如何找到导致加载内核模块88XXau.ko的udev规则? [已关闭]

问题描述 投票:0回答:1

在我的 Linux 发行版中,我使用 Edimax EW-7811UTC Wi-Fi USB 适配器。

安装rtl8812au驱动

我已经通过以下步骤从源安装了驱动程序

rtl8812au

  • 从源代码构建内核模块
    88XXau.ko
    (命令
    make
  • 安装到目录:
    /lib/modules/$(uname -r)/kernel/drivers/net/wireless/
    (命令
    make install

此驱动程序支持许多 Wi-Fi 适配器,但只有当 Wi-Fi 适配器正是 Edimax EW-7811UTC 时,我才需要 编写脚本或其他东西来加载模块

88XXau.ko

模块88XXau.ko自动加载

我想展示2个场景:

  • 通过命令

    lsmod
    ,我检查了在启动时如果Wifi-USB适配器插入,则模块
    88XXau.ko
    未加载。

  • 当我插入WiFi-USB适配器时,内核和

    udev
    自动加载模块(我已经通过命令
    lsmod | grep 88XXau
    检查了这一点),但我找不到执行此加载的特定
    udev rule

我还没有写任何

udev rule
,所以在Linux发行版中必须存在一个默认的
udev rule
负责内核模块的自动加载
88XXau.ko

问题:找到udev规则

为了实现我的目标,即仅当 WiFi 适配器是 Edimax EW-7811UTC 时才加载模块,我需要禁用自动功能,所以我来这里询问是否有人可以向我展示一个找到默认值的程序

udev rule
对于这个司机?

谢谢

linux wifi linux-device-driver udev
1个回答
2
投票

https://www.linuxfromscratch.org/lfs/view/development/chapter09/udev.html

编译为模块的设备驱动程序可能内置有别名。 别名在 modinfo 程序的输出中可见,并且是 通常与支持的设备的总线特定标识符有关 通过一个模块。例如snd-fm801驱动支持PCI设备 供应商 ID 为 0x1319,设备 ID 为 0x0801,别名为 “pci:v00001319d00000801svsdbc04sc01i*”。对于大多数设备来说,总线 驱动程序导出将处理设备的驱动程序的别名 通过 sysfs。例如,/sys/bus/pci/devices/0000:00:0d.0/modalias 文件 可能包含字符串 “pci:v00001319d00000801sv00001319sd00001319bc04sc01i00”。默认 udev 提供的规则将导致 udevd 调用 /sbin/modprobe 包含 MODALIAS uevent 环境的内容 变量(应该与模态的内容相同 sysfs 中的文件),从而加载别名与此匹配的所有模块 通配符扩展后的字符串。

https://wiki.archlinux.org/title/Modalias

$ cd /usr/lib/udev/rules.d
$ grep -r MODALIAS .
80-drivers.rules
5:ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load '$env{MODALIAS}'"
© www.soinside.com 2019 - 2024. All rights reserved.