我对 Linux 相当陌生,正在寻找一种完全禁止加载内核模块的解决方案。
我知道如何卸载模块,但需要在启动时加载模块之前阻止它。
答案1
首先检查模块名称:
lsmod | less
然后假设加载的模块名称是 my_proc_to_ban
去创建一个脚本,例如:
echo'
install my_proc_to_ban /bin/false
' >> /etc/modprobe.d/blacklist.conf
这将阻止启动或运行您的模块
或者就像您的情况一样,服务器是您的,没有人会加载该模块,您可以简单地:
echo '
blacklist my_proc_to_ban
' >> /etc/modprobe.d/my_proc_to_ban.conf
这将阻止您的模块在启动时加载,但如果在某个阶段需要,您仍然可以加载它。
答案2
一种确定的方法是从 /lib/modules 中删除或移动模块
您还可以使用/etc/modprobe.d/blacklist.conf
在内核命令行上你可以添加
modprobe.blacklist=modname1,modname2,modname3
或者
blacklist=modname1,modname2,modname3
来源 :https://wiki.archlinux.org/index.php/kernel_modules#Blacklisting
根据您使用的发行版:debian(和衍生产品)可能会构建一个 initrd,其中嵌入了脚本认为启动系统所必需的模块。
因此您可能必须通过运行“update-initramfs -u”来重建 initrd 映像。