加载时的黑名单模块
首先了解如何将内核模块加载到系统上。
- 列出当前由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
文件。
日期:2020-07-07 20:56:09 来源:oir作者:oir