![如何阻止内置于内核的驱动程序,即不是模块的驱动程序](https://linux22.com/image/87645/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%E5%86%85%E7%BD%AE%E4%BA%8E%E5%86%85%E6%A0%B8%E7%9A%84%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%8D%B3%E4%B8%8D%E6%98%AF%E6%A8%A1%E5%9D%97%E7%9A%84%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F.png)
我使用内核内置的驱动程序配置和编译了 Linux 内核nouveau
,即与在 Linux 内核源目录中执行操作时<*>
相反。<M>
make menuconfig
现在,我打算使用另一个驱动程序而不是nouveau
.如果nouveau
是一个模块,我会添加一行像blacklist nouveau
里面/etc/modprobe.d/blacklist.conf
我现在应该怎么做。
答案1
没有多少人知道这一点,但绝对有一种方法可以将内核内置的驱动程序列入黑名单。
首先,你应该跑步lsmod | grep <driver_name>
。如果您没有看到任何结果,那么恭喜您 - 您的驱动程序直接内置到内核中,并且将其列入黑名单的正常方法将不起作用。相反,您需要将驱动程序的初始化函数列入黑名单。为此,您需要添加initcall_blacklist=<driver_init>
作为内核启动选项,其中驱动程序初始化是驱动程序初始化函数 - 您必须查看内核的源代码才能找出需要使用的名称。作为一个具体示例,initcall_blacklist=vmd_drv_init
用作引导选项会阻止英特尔的卷管理设备驱动程序加载并绑定到活动的卷管理设备控制器。
答案2
当您使用以下语法启动时,您还可以在 grub 命令行(linux 行)上暂时将它们列入黑名单
module_to_blacklist.blacklist=yes
或者
modprobe.blacklist=module_to_blacklist
您需要修改 grub,cfg 以使更改永久生效。
请注意,此解决方案不适用于少数模块