我已在单个硬盘的两个分区上安装了 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
。