模块是如何分配的?您如何排除模块故障?

模块是如何分配的?您如何排除模块故障?

最近我的 wifi 适配器出现了问题,解决办法是blacklist ideapad_laptop在文件中/etc/modprobe.d/blacklist.conf

这让我很想知道模块是如何分配的。我的笔记本电脑不是 Ideapad,而 wifi 适配器是 Realtek Semiconductor Co., Ltd. RTL8111/8168/8411。我怎么会猜到呢?除此之外,假设我猜到了lsmod并获取我的驱动程序(模块)列表。

...
coretemp               16384  0
joydev                 24576  0
kvm_intel             204800  0
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            32768  1 snd_seq_midi
kvm                   593920  1 kvm_intel
bnep                   20480  2
hid_multitouch         20480  0
8250_dw                16384  0
irqbypass              16384  1 kvm
snd_seq                65536  2 snd_seq_midi_event,snd_seq_midi
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
ghash_clmulni_intel    16384  0
intel_wmi_thunderbolt    16384  0
wmi_bmof               16384  0
arc4                   16384  2
snd_timer              32768  2 snd_seq,snd_pcm
pcbc                   16384  0
uvcvideo               86016  0
...

我的一个朋友有一台 HP 笔记本电脑,带有与我相同的 Realtek 无线适配器,但他的 wifi 也无法使用。他能blacklist ideapad_lenovo得到同样的结果吗?我猜不会。

如何找到导致问题的内核模块?

答案1

我认为它应该可以正常工作。

我的理解是,硬件有一些标识符(如型号名称),而内核维护一个查找数据库来查找潜在模块。这必然会产生几个相对兼容的模块,内核会选择第一个(直到失败),然后尝试下一个,等等。

黑名单会告诉它跳过特定模块。但除非有不想使用它的理由(例如:问题、性能等),否则你不需要这样做。

是的,它应该可以正常工作。

相关内容