如何在 grub 启动前禁用 ZFS 内核模块?
提到一些模块可以通过 grub 命令行禁用,类似问题。不幸的是,此方法不适用于 zfs:
module_to_blacklist.blacklist=yes
下一条消息:未知参数‘黑名单’被忽略
答案1
如果我没有记错的话,您是通过 dkms 安装了 ZFS,那么看起来您需要通过相同的工具将其删除。
dkms remove [module/module-version] [-k kernel/arch] [--all]
Removes a module/version or module/version/kernel/arch combination
from the tree. If the module is currently installed, it first
uninstalls it and if applicable, will replace it with its
original_module. Use the --all option in order to remove all
instances for every kernel at once.
来源:http://manpages.ubuntu.com/manpages/trusty/man8/dkms.8.html
笔记:您可能希望避免使用 --all 选项,直到您确定已获得所需的结果。
答案2
我遇到这个问题是因为我想启动最新的 Ubuntu Live CD,这样内核就不会被污染。然而 ZFS 模块污染了内核。
TLDR;使用内核参数启动systemd.mask=zfs.target
允许在启动时无需自动加载 zfs 模块。
在调查此事时,我发现有 3 个地方可以加载 zfs 模块。
- 初始化磁盘
- 该文件
/scripts/zfs
尝试在 load_module_initrd 中加载模块,但只有存在内核参数时才会调用此方法boot=zfs
- 该文件
- 初始化文件
- 脚本
/etc/init.d/zfs-import
在启动时会加载模块,但是这个初始化脚本默认只在运行级别S
(单用户模式)启动,所以通常不会。
- 脚本
- systemd
zfs.target
由 启动的目标multi-user.target
将通过 加载模块zfs-load-module.service
。可以使用内核启动参数禁用此功能systemd.mask=zfs.target