加载时的黑名单模块

首先了解如何将内核模块加载到系统上。

  • 列出当前由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命令”列出了所有当前加载的内核模块。

  • 假设我们将把“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文件。

如何将Ubuntu/DebianLinux上的模块列入黑名单
日期:2020-07-07 20:56:09 来源:oir作者:oir