Gri*_*ris 14 linux boot command-line kernel-module
有一个损坏的内核模块,因此我什至无法加载操作系统,因此我无法删除或修复它。是否可以在启动时跳过这个模块,使用内核的参数或其他东西?
小智 8
禁用特定模块是可以从引导装载程序,不过貌似发行依赖性确实如此。
一方面,截至 2016 年 8 月,Linux 内核参数文档指出:
module_blacklist=[KNL] 不要加载以逗号分隔的模块列表。用于调试问题模块。
另一方面,我在 openSUSE 42.1 (Linux 4.1.31) 上使用的选项在Arch Kernel modules wiki 中有描述 :
您还可以将引导加载程序中的模块列入黑名单。只需添加
modprobe.blacklist=modname1,modname2,modname3到引导加载程序的内核行,如内核参数中所述。当您将多个模块列入黑名单时,请注意它们仅以逗号分隔。空格或其他任何东西可能会破坏语法。
(感谢 unix.SE 的 @gertvdijk指出这一点。)
另外值得一提的是以下方法:
为了防止内核使用 grub 命令行加载某些模块,您需要使用以下语法将它们作为参数传递给内核行。
$module_name.blacklist=yes
我不知道他们从哪里得到的,但如果所有其他方法都失败了,尝试任何其他方法绝对不会有什么坏处。
正如前面的答案中提到的,将模块列入黑名单是完全避免内核模块的最佳方法。除了列入黑名单之外,没有通用的方法来禁用模块。
一些 Linux 发行版确实提供了内核启动参数来执行此类操作。
load_modules=off强制 udev 跳过自动加载。这将允许您在不加载模块的情况下启动,将导致问题的模块列入黑名单,并在不加载有问题的模块的情况下正常重新启动。有关更多信息,请参阅内核参数文档。有一些参数可用于禁用特定子系统。例如:
nousb禁用内核 USB 支持cgroup_disable=[name]禁用特定控制器;然而,“内存”是唯一特别支持的示例libata.noacpi禁用 libata(SATA 控制器)中的 ACPI 使用;这是通过内核传递模块参数的示例| 归档时间: |
|
| 查看次数: |
19096 次 |
| 最近记录: |