当前位置: 首页>>技术问答>>正文


如何将内核模块列入黑名单?

,

问题描述

如何禁用加载不必要的内核模块。内核3.2.4

最佳解决办法

Note: blacklisting will not work for modules which are built into the kernel image (i.e. not loaded via a separate .ko file. The only way to disable such modules is via a kernel parameter (if available) or by recompiling the kernel.

只需打开您的/etc/modprobe.d/blacklist文件并使用以下语法添加drivername:

blacklist driver-name

编辑:在12.10(12.04?)以后的版本中,文件是/etc/modprobe.d/blacklist.conf

重新启动您的盒子并使用lsmod命令显示Linux内核中模块的状态

注意:此处driver-name是您所需的黑名单驱动程序的名称。例如,如果要禁用NIC卡驱动程序,可以使用终端中的命令lspci -v命令找到LAN卡的内核驱动程序名称。例如,我的输出是:


........
........ 
6:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express (rev 02)
    Subsystem: Lenovo Device 3861
    Flags: bus master, fast devsel, latency 0, IRQ 46
    Memory at b8000000 (64-bit, non-prefetchable) [size=64K]
    Expansion ROM at  [disabled]
    Capabilities: 
    Kernel driver in use: tg3
    Kernel modules: tg3
........
........

在这里,我看到驱动程序是tg3。所以你需要在driver-name的位置写tg3(或你的驱动程序)。

有很多信息可以找到here

次佳解决办法

当您使用语法启动时,您还可以暂时将它们列在grub命令行(linux行)上

module_to_blacklist.blacklist=yes

第三种解决办法

至少在Ubuntu 16.04 LTS中将模块列入黑名单的另一种方法是在内核命令行中添加以下行:

modprobe.blacklist=MODULE_NAME

使用/etc /modprobe系统是最好的方法,但是这是一种可以通过在引导时编辑GRUB命令行来使用的替代方法。

这也可以通过编辑/etc /default /grub并添加到GRUB_CMDLINE_LINUX_DEFAULT变量来永久保存。例如,在我的/etc /default /grub中,我有:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modprobe.blacklist=nouveau"

然后我运行update-grub2,然后运行update-initramfs -u。重新启动后,只要启动后没有任何内容加载,您就可以免费使用该模块。

此方法也适用于EL变体(RHEL,CentOS,SciLinux),但您必须使用该发行版的方法来更新grub和initrd。

(注意那些试图将nouveau列入黑名单的人:确保不要通过运行systemctl set-default multi-user.target来加载X,否则当X启动时它将再次加载nouveau!)

第四种办法

对于i915.ko,这些解决方案都不适用于16.04 LTS。

我找到的(脏)解决方案是重命名

/lib/modules/4.4.0-22-generic/kernel/drivers/gpu/drm/i915/i915.ko
/usr/lib/xorg/modules/drivers/modesetting_drv.so
/usr/lib/xorg/modules/drivers/intel_drv.so

遗憾的是,外部VGA屏幕不再被识别:{

第五种办法

在最近的版本中,您需要在黑名单文件中使用install指令

install modulename /bin/false

将上面的”modulename”替换为模块的名称。这将强制阻止其加载。

您可以在modprobe.conf手册中找到有关install指令的更多信息

man modprobe.conf

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2989.html,未经允许,请勿转载。