如何在Ubuntu / Debian Linux上将模块列入黑名单
目的
目的是将加载的选定模块列入黑名单。操作系统和软件版本
- 操作系统: -Debian,Ubuntu,Mint
要求
sudo
需要以root或通过命令对Ubuntu系统的特权访问。困难
简单约定
使用说明
可能有时候需要在系统引导期间禁止加载某些模块。在此“方法”中,我们将讨论如何将模块黑名单及其相关性列入黑名单,即在引导期间永久禁止加载模块。首先,我们需要知道如何列出您的Linux系统当前加载的所有模块:
$ lsmod .... ehci_hcd 40249 0 usbcore 128741 4 ehci_hcd,ohci_hcd,usbhid usb_common 12354 1 usbcore e1000 86156 0 libata 140630 4 libahci,ahci,ata_piix,ata_generic ....
lsmod
该命令列出了所有当前加载的内核模块。以上lsmod
输出已缩短。假设我们要将usbcore
模块列入黑名单。在卸载或将任何模块列入黑名单之前,最好先查看其他模块是否依赖于该模块:$ modinfo -F depends usbcore usb-common从上面的示例中,我们可以看到
usb-common
模块依赖于usbcore
。要将没有依赖性的模块列入黑名单,请创建一个/etc/modprobe.d/blacklist.conf
(如果不存在)文件,并添加以下行:blacklist usbcore完成后,更新initramfs并重新启动系统:
# update-initramfs -u # reboot重新启动后,使用
lsmod
以查看模块是否存在。如果其他模块依赖于您尝试将其列入黑名单的模块,如上例所示,则需要将所有相关模块都列入黑名单,否则,您已列入黑名单的初始模块仍然会加载。幸运的是,有一个技巧可以将所有模块(包括其依赖项)列入黑名单。如果由于某些原因您无法将模块及其所有依赖项列入黑名单,请使该模块无法加载,从而导致所有依赖模块停止加载。将以下行添加到您
/etc/modprobe.d/blacklist.conf
的完全黑名单中,usbcore
包括其所有相关模块:install usbcore /bin/true更新initramfs并重新启动:
# update-initramfs -u为了完整起见,请注意,为每个列入黑名单的模块创建一个单独的模块配置文件是一个好习惯。例如,如果您希望将模块列入黑名单,而
e1000
不是创建单独的/etc/modprobe.d/e1000.conf
文件。