Answers:
如上一个答案中所述,将模块列入黑名单是完全避免使用内核模块的最佳方法。除了列入黑名单,没有禁用该模块的通用方法。
一些Linux发行版确实提供了内核启动参数来执行此类操作。
load_modules=off
强制udev跳过自动加载。这样一来,您就可以在不加载模块的情况下启动,将导致问题的模块列入黑名单,以及在不加载问题模块的情况下正常重启。有关更多信息,请参见内核参数文档。有用于禁用特定子系统的参数。例如:
nousb
禁用内核USB支持cgroup_disable=[name]
禁用特定的控制器;但是,“内存”是唯一受特别支持的示例libata.noacpi
禁用libata(SATA控制器)中的ACPI使用;这是通过内核传递模块参数的示例禁用特定的模块是可以从引导装载程序,不过貌似发行依赖性确实如此。
一方面,Linux内核参数文档指出,截至2016年8月:
module_blacklist=
[KNL]不要加载以逗号分隔的模块列表。对于调试问题模块很有用。
另一方面,Arch Kernel模块 Wiki中介绍了适用于openSUSE 42.1(Linux 4.1.31)的选项 :
您也可以从引导加载程序中将模块列入黑名单。只需添加
modprobe.blacklist=modname1,modname2,modname3
到引导加载程序的内核行,如内核参数中所述。当您将多个模块列入黑名单时,请注意,它们之间仅用逗号分隔。空格或其他内容可能会破坏语法。
(感谢unix.SE上的 @gertvdijk指出了这一点。)
还值得一提的是以下方法:
为了防止内核使用grub命令行加载某些模块,您需要使用以下语法将它们作为参数传递给内核行。
$module_name.blacklist=yes
我不知道他们从哪里得到的,但是如果其他方法都失败了,尝试任何其他方法肯定不会受到伤害。
您应该可以将其添加到/etc/modprobe.d/blacklist或黑名单“ modulename”