将安装在 LUKS 分区上的 debian 添加到启动选项

将安装在 LUKS 分区上的 debian 添加到启动选项

我已在单个硬盘的两个分区上安装了 debian。一个位于 ext4 分区,另一个位于 luks 分区。

最近我更新了 debian ext4 分区上的 grub。从那时起,debian luks 就不再被检测到了。

如何将 luks 分区上的 debian 添加到引导选项?

答案1

好的,现在您有两个独立的安装,争夺单个主引导记录 (MBR) 的控制权。

您可能最后安装了加密的,它覆盖了 MBR 中第一个安装的 GRUB。加密安装了解自身,并且可以检测其他安装,如果os-prober安装了软件包,它会自动将其包含在 GRUB 菜单中。

现在,当您在未加密的安装上更新 GRUB 时,其更新系统会继续升级其 GRUB...覆盖 MBR 中当前的 GRUB。现在,update-grub未加密安装的命令无法检测加密安装,因为它已加密......除非您手动解锁它的加密:

cryptsetup open /dev/<LUKS partition> <LUKS partition>_crypt --type luks

这应该使 LUKS 分区准备好安装在/dev/mapper/<LUKS partition>_crypt。现在update-grub可以查看其中并找到其中的内核和 initramfs。

但在此之前,您需要在未加密安装的 GRUB 中启用磁盘加密支持:

echo "GRUB_ENABLE_CRYPTODISK=y" >>/etc/default/grub
update-grub
grub-install /dev/sda

(启用加密支持将update-grub检查加密磁盘并在 中添加一些处理它们的命令/boot/grub/grub.cfg,但它还需要重新生成 GRUB 核心映像,因此需要在 MBR 中重新安装 GRUB 组件。该grub-install /dev/sda命令将执行此操作。 )

如果我os-prober正确阅读 的脚本,在运行之前解锁加密update-grub可能会允许它自动检测第二个安装。如果不是这种情况,您可能需要在 中为其编写一个“自定义”GRUB 配置条目/etc/grub.d/40_custom,该条目将包含在/boot/grub/grub.cfg由 生成的文件中update-grub

相关内容