50-broadcom-wl-blacklist.conf
我在以下文件中明确将某些 Broadcom 驱动程序列入黑名单/etc/modprobe.d/
:
# modules blacklisted for broadcom-wl
blacklist bcm43xx
blacklist ssb
blacklist b43
blacklist b43legacy
blacklist ndiswrapper
blacklist brcm80211
blacklist bcma
blacklist brcmsmac
但它们仍在加载中!
$ lsmod | grep b43
b43legacy 151552 0
b43 450560 0
bcma 61440 1 b43
mac80211 888832 2 b43,b43legacy
ssb 86016 2 b43,b43legacy
mmc_core 163840 2 b43,ssb
cfg80211 696320 4 wl,b43,mac80211,b43legacy
操作系统:openSUSE Leap 15
其他一些帖子提到运行mkinitrd
或dracut
.这何时与黑名单模块相关?
注意,50-broadcom-wl-blacklist.conf
可能是由一些 openSUSE 工具创建的,我不记得创建它了。奇怪的mkinitrd
是,如果有必要,该工具不会调用 a 。
我们生活在systemd
一个时代,但我认为systemd
这与黑名单模块无关(还)。
我将此模块列入黑名单,因为我必须将 Broadcom 专有 STA 驱动程序与我的 bcm4360 芯片组卡一起使用。
答案1
因此,事实证明,列入黑名单的模块是由 Systemd/网络管理器服务之一显式加载的:pullin-bcm43xx-firmware.service
。
我只是通过 systemd 调用禁用了可疑服务:
systemctl disable pullin-bcm43xx-firmware.service
然后重新启动..然后瞧..b43 驱动程序不再加载;单边带、b43、b43legacy、mac80211;只有 wl 存在。幸福的结局..暂时。
我怎么找到的pullin-bcm43xx-firmware.service
?通过一些侦探工作。通过搜索系统日志journalctl -b
,搜索b43
.我发现了这条可疑的行:
install_bcm43xx_firmware_wrapper[1115]: Downloading b43 firmware
就在网络管理器启动之后。搜索install_bcm43xx_firmware_wrapper
产生/etc
了/etc/systemd/system/multi-user.target.wants/pullin-bcm43xx-firmware.service
..其余的你已经知道了。
令人担忧的是,我发现它主要是出于运气。如果该脚本没有提及b43
及其名称,我将能够建立任何链接。令人担忧的是,没有正式的日志跟踪来记录哪些驱动程序何时加载、由谁加载:(
我还了解到模块黑名单有点用词不当。正如 Arvidjaar 为我澄清的那样:
黑名单仅阻止由于硬件自动检测而加载模块(严格来说,它告诉 modprobe 忽略模块提供的内部别名)。它不禁止通过任何其他方式加载模块(显式 modprobe、modprobe.conf 中的安装行、modprobe.conf 中的显式别名)。
内核应该有一个适当的可执行的黑名单功能!