1.8. 防止在系统引导时自动载入内核模块
下面的步骤描述了如何在 denylist 中添加内核模块使其不会在引导过程中自动载入。
先决条件
- root 权限。
- 
						已安装 kmod软件包。
- 确定 denylist 中的内核模块对您当前系统配置并不重要。
流程
- 选择您要放入 denylist 中的内核模块: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - lsmod命令显示载入到当前运行的内核的模块列表。- 或者,找到您要防止载入的未加载内核模块。 - 所有内核模块都位于 - /lib/modules/<KERNEL_VERSION>/kernel/<SUBSYSTEM>/目录中。
 
- 为 denylist 创建配置文件: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例中显示了由 - vim编辑器编辑的- blacklist.conf文件的内容。- 黑名单行可确保在引导过程中不会自动加载相关内核模块。但是,- 黑名单命令不会阻止将模块作为不在 denylist 中的另一个内核模块的依赖项加载。因此,- install 行会导致- /bin/false运行而不是安装模块。- 以 hash 符号开头的行是注释以便更易读。 注意- 在输入内核模块的名称时,不要将. - ko.xz扩展附加到名称的末尾。内核模块名称没有扩展名,它们对应的文件有。
- 在重新构建前,为当前初始 ramdisk 镜像创建备份副本: - cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img - # cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果新版本出现意外问题,以上命令会创建一个备份 - initramfs镜像。- 另外,还可创建其它初始 ramdisk 镜像的备份副本,该副本与您要将内核模块放入 denylist 中的内核版本对应: - cp /boot/initramfs-<SOME_VERSION>.img /boot/initramfs-<SOME_VERSION>.img.bak.$(date +%m-%d-%H%M%S) - # cp /boot/initramfs-<SOME_VERSION>.img /boot/initramfs-<SOME_VERSION>.img.bak.$(date +%m-%d-%H%M%S)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 根据更改生成新的初始 ramdisk 镜像: - dracut -f -v - # dracut -f -v- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果您要为当前引导的不同内核版本构建初始 ramdisk 镜像,请指定目标 - initramfs和内核版本:- dracut -f -v /boot/initramfs-<TARGET_VERSION>.img <CORRESPONDING_TARGET_KERNEL_VERSION> - # dracut -f -v /boot/initramfs-<TARGET_VERSION>.img <CORRESPONDING_TARGET_KERNEL_VERSION>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 重启系统: - reboot - $ reboot- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
此流程中描述的更改将在重启后生效并保留。如果您将关键内核模块错误地放入 denylist 中,您会遇到不稳定的情况或系统无法正常工作。
其它资源
- 
						如需有关 dracut实用程序的更多详细信息,请参阅dracut(8)手册页。
- 有关防止在 Red Hat Enterprise Linux 8 及更早的版本中系统引导时自动载入内核模块的更多信息,请参阅 如何防止内核模块自动载入?