问题:Linux内核参数中modprobe.blacklist和rd.driver.blacklist的区别

上下文

我主要看到了三种通过将参数附加到内核来将驱动程序模块列入黑名单的方法:(i)modprobe.blacklist=driver_name(ii)rd.driver.blacklist=driver_name(iii) last。这通常通过将这些参数附加到/etc/default/grub处的GRUB_CMDLINE_LINUX变量来完成。

在实践中,我无法找出它们之间的真正区别。但我想它也可能会随着你的环境而改变。毫无疑问,我一直在同时使用这两种方法,它适用于我的 Fedora 31。

我的研究

rd.driver.blacklist

man dracut.cmdline:

rd.driver.blacklist=<drivername>[,<drivername>,...]
           do not load kernel module <drivername>. This parameter can be
           specified multiple times.

modprobe.blacklist

man modprobe:

(...)。 modprobe 还将使用在内核命令行中以 <module>.<option> 的形式指定的模块选项和以 modprobe.blacklistu003d<module>** 的形式指定的 **blacklists。

总结问题

那么,modprobe.blacklistrd.driver.blacklist在Linux中将驱动列入黑名单有什么区别呢?我应该什么时候使用每一个?

解答

rd.driver.blacklist是内核命令行的配置选项,在从 Linux 引导映像(initramfs)加载内核时应用。在这里,您将调用从该初始文件系统映像加载的某些内核模块。

稍后,在根文件系统联机后,即已安装并且操作系统正在加载可加载模块......您可以使用modprobe.blacklist来影响 loadable 模块的处理。 modprobe 实际上读取内核命令行,以查找影响可加载模块的参数。因此,虽然这个参数看起来适用于 Linux 内核的加载,但实际上并非如此。modprobe找到它并使用modprobe.blacklist以及其他可加载的模块参数。

所以是使用 ramdisk 选项,还是 modprobe 选项...取决于有问题的驱动程序是驻留在引导映像中(由 dracut 放在那里),还是驻留在操作系统的根文件系统(由 modprobe 处理)。

参考文献

dracut 053

搜索rd.driver.blacklist

SUSE Linux Enterprise Desktop 文档 / 管理指南 / 系统 /管理内核模块

转到:23.2.2 使用 modprobe 将内核模块列入黑名单

Red Hat Customer Portal / Products & Services / Knowledgebase /如何防止内核模块自动加载?

去 :

_仅适用于 Red Hat Enterprise Linux 8 的完成步骤

仅适用于 Red Hat Enterprise Linux 7 的完成步骤_

Logo

更多推荐