必须先确认模块为可加载形式(CONFIG_XXX=m且存在.ko文件),再在/etc/modprobe.d/下创建644权限的.conf文件,同时写入blacklist xxx与install xxx /bin/false,最后更新initramfs并重启验证。

确认模块是否可被黑名单影响
不是所有模块都能靠 /etc/modprobe.d/ 配置禁用。关键看它是独立的 .ko 文件,还是编译进内核(=y)。否则写再多 blacklist 也白搭。
- 运行
ls /lib/modules/$(uname -r)/kernel/fs/hfs/hfs.ko*,有输出说明是可加载模块;没输出,大概率是内置 - 运行
grep CONFIG_HFS /boot/config-$(uname -r),结果为CONFIG_HFS=m才有效;若为=y,只能改 GRUB 参数modprobe.blacklist=hfs - 模块名不含扩展名:写
hfs,别写hfs.ko或hfs.ko.xz
写对配置文件的三要素
缺一不可,否则 modprobe 会静默跳过,不报错也不生效。
- 路径必须是
/etc/modprobe.d/xxx.conf—— 不能是/etc/modprobe.d/blacklist(无后缀),也不能是/etc/blacklist.conf(不在正确目录) - 文件名必须以
.conf结尾,例如/etc/modprobe.d/fs-security.conf;disable-fs.txt或usb-blacklist都无效 - 权限必须为
644:sudo chmod 644 /etc/modprobe.d/fs-security.conf;设成664或更宽,modprobe直接忽略
blacklist 和 install 必须成对出现
只写 blacklist hfs 几乎总失效——它拦不住 udev 自动加载、拦不住依赖触发(比如 hfsplus 拉起 hfs)、更拦不住 initramfs 预加载。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 真正起作用的是
install hfs /bin/false:系统任何路径尝试加载该模块,都会执行/bin/false并失败 - 标准写法(两行缺一不可):
blacklist hfsinstall hfs /bin/false - 常见可禁用模块(确认非核心后再操作):
hfsplus、minix、udf、iso9660、cifs、nfs;但绝不能禁ext4、xfs、vfat,否则可能无法挂载根分区
更新 initramfs 并验证是否真生效
改完配置不更新 initramfs = 白改。尤其 storage、fs 类模块常被 initramfs 预加载,旧镜像里还带着。
- Debian/Ubuntu:
sudo update-initramfs -u
RHEL/CentOS/Fedora:sudo dracut --force - 验证三步缺一不可:
•modprobe -n -v hfs输出中必须含install /bin/false,不能是insmod路径
•lsmod | grep hfs应无输出(若已加载,先sudo modprobe -r hfs)
• 尝试挂载 HFS 镜像:sudo mount -t hfs /dev/loop0 /mnt,应报unknown filesystem type或Operation not permitted
最易被忽略的是模块依赖链和 initramfs 更新时机——哪怕配置全对,漏掉 dracut --force 或忘了禁用 hfsplus 这类上层模块,hfs 仍可能被顺带拉起。

















