我正在尝试在 KDE Neon 系统上设置全盘加密(当然,遵循拱门维基指南 就此主题而言)。有关设置的一些相关信息:
- 该系统有两个顶级卷:
- EFI 系统分区,与 ESP 一样正常
- 一个 LUKS2 卷,其中嵌套有 LVM,用于托管整个系统,包括
/boot
.
- 该系统使用 GRUB 2.06,其中包括有限的 LUKS2 支持。 LUKS2 卷设置为与此版本的 GRUB 兼容。
- 安全启动目前已禁用,但将来可能会启用。
按照这些指南,我有一个基本上按预期工作的系统:GRUB 询问驱动器密码,如果输入正确的密码,则完成其引导顺序并加载操作系统,该操作系统将引导到可用的图形会话。
我唯一的问题是运行时grub-install
(无论是由用户手动运行,还是在apt
安装 GRUB 更新时自动运行),我构建的支持此设置的 GRUB 手动 EFI 二进制文件被一个 EFI 二进制文件覆盖,该二进制文件执行以下操作:不支持此设置(具体来说,正如上面链接的后一篇 Arch Wiki 文章所提到的,它没有该luks2
模块)。虽然我可以(并且确实)有一个脚本来重建和安装正确的 GRUB 二进制文件,但我希望grub-install
第一次就正确构建这个二进制文件。是否有某种挂钩可以用来控制保存到 ESP 的 EFI 二进制文件?
答案1
使用dpkg-divert
,您可以告诉包管理将包转移grub-install
到非标准位置:
dpkg-divert --local --rename --add /usr/sbin/grub-install
这会移动grub-install
到/usr/sbin/grub-install.divert
,并且每当包管理更新 GRUB 时,更新的文件都会被放置到更改的位置。这将允许您将包装器脚本放入/usr/sbin/grub-install
.
假设您只需要使用grub-install
自定义--modules=
选项进行调用,则包装器脚本可能如下所示:
#!/bin/sh
/usr/sbin/grub-install.divert --modules=<your custom set of modules here> "$@"
您可能还想提交一份“愿望清单”优先级错误报告,以建议添加一个包配置设置,该设置允许将自定义选项(或您的情况所需的任何内容)注入到grub-install
包更新时的自动化操作中。
如果认为这太复杂,则替代方案可能是使用包配置选项来禁用grub-install
包更新时的自动运行。已经存在 debconf 选项grub2/force_efi_extra_removable
(default=false) 和grub2/update_nvram
(default=true),它们都修改automatic的行为grub-install
,所以有一个先例。