尽管启动分区单独且未加密,但在启动时仍两次提示输入 LUKS 密码?

尽管启动分区单独且未加密,但在启动时仍两次提示输入 LUKS 密码?

关键细节

我的 GPT 布局驱动器具有以下分区布局:

/dev/sda---|
           |sda1 - Windows Recovery Partition
           |sda2 - EFI Partition (Shared, Windows and Linux)
           |sda3 - Windows Primary Partition
           |sda4 - LUKS encrypted LVM partition
           --------| /dev/mapper/volume-group-root:   Linux root "/"
           --------| /dev/mapper/volume-group-swap_1: Linux swap 

当前问题:

启动时,GRUB 立即提示输入“主密钥”。输入 LUKS 密码即可打开 GRUB 启动菜单。

选择要启动的 Linux 操作系统后,会出现另一个密码提示以解锁 LVM 分区。

第二个提示是有道理的 -但为什么会出现第一个

通常的答案

GRUB 需要解密驱动器才能读取启动文件

有道理,但我的 GRUB 安装应该与 Windows 共享未加密的 EFI 分区。无论如何,那里肯定有启动文件……

我遵循的步骤:

sudo mount /dev/mapper/volume-group-root /mnt
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sda
update-grub  

不幸的是问题仍然存在。任何想法或故障排除建议都值得赞赏。

注意 - 我怀疑 grub 将文件放在了 EFI 分区中,但配置不正确,导致它在启动时尝试查找错误的位置?但是 Windows 和 Linux 操作系统都可以正常启动。不确定如何调查这个问题。


更多信息

  • 当前 EFI 分区是不是在加密的 LVM 内部。(如果我的图表不清楚,请原谅,欢迎提出建议,让它更清楚!)
  • 你的回答表明我需要一个 /boot 分区和一个分开EFI 分区(我认为),我遇到的麻烦是各种互联网资源都建议只需要一个 EFI 分区:

该表指出 /boot或者电喷

这个答案指出 /boot/efi 是一种约定并且不是必需的

最后,此来源指出我可以让 Linux 共享 Windows EFI 分区而没有任何问题,这正是我的目标。

也许这都与 fstab/其他配置有关,而不是分区问题?

答案1

您的配置有些不对劲。应该有一个/boot分区位于加密的 LVM 分区之外。此分区与 EFI 分区是分开的。事实上,EFI 分区安装在/boot/efi未加密 /boot分区包含 initrd(初始 RAM 磁盘,启动时使用的临时根文件系统),其中包含系统解密所需的一切。initrd(而不是 GRUB)通常在启动时运行,要求您输入密码,然后一次性解锁所有内容,以便您可以加载和运行已安装的系统。

您需要创建一个新的未加密分区并移动到/boot那里。然后您需要更新您的/etc/fstab。如果您没有文件/etc/crypttab,则需要创建一个解密文件/dev/sda4(此文件中通常使用 UUID)。然后运行:

sudo update-initramfs; sudo update-grub

重建所有启动文件。

您可以根据需要创建/boot/dev/sda使用其他设备(甚至是 USB 记忆棒分区)。/boot使用 ext[2,3,4] 格式化新分区(如果将其放在 USB 上,请使用 ext2)。Ubuntu 安装程序使用 ext2 作为分区/boot


进一步解释
在您进一步的信息中,您引用的表格涉及的是 Arch Linux,我很少使用它,而且少得多熟悉。至于 EFI 分区挂载点的第二个链接,坚持惯例从长远来看会更容易,以防您需要排除故障或设置其他人可能管理的系统。我从未尝试过在其他任何地方挂载 EFI 分区,但如果它适合您,那就去做吧。如果该路径在任何需要访问该分区的应用程序中都是硬编码的,则可能会出现问题。

是的,如果您已经有 EFI 分区,Windows 和 Ubuntu 可以顺利共享同一个 EFI 分区,但解密并启动 Ubuntu 的 initrd 文件不会保存在 EFI 分区上(/boot/efi在标准安装中)。它们保存在 中/boot。我很好奇您是如何执行安装的,因为 Ubuntu 不能/boot很好地处理加密分区。无论如何,使用图形安装程序并选择 FDE 会产生以下分区结构:

星展银行
─/boot 上的 sda1 启动分区
─sda2 位于 /boot/efi 上的 EFI 分区
└─sda5 LUKS加密分区
  └─LVM 光伏
    ─根逻辑卷在 /
    └─swap 逻辑卷作为 swap

也许 Ubuntu 将来会更好地支持/boot加密,但如果您想同时使用单个密码,您可能只需要为 创建一个未加密的分区/boot,该分区与您的 EFI 分区分开且不同。对未加密/boot分区的担忧是有道理的,这就是为什么我提到使用 USB 记忆棒(独立设备)来存放分区的可能性/boot


进一步的调查 (这很可能就是您正在寻找的)
所以我做了一些调查,看起来其他人已经设置了没有分区的系统/boot,尽管在初始系统安装期间需要分区。看看底部本文描述了与你所说的正在运行的设置类似的设置。在其中,作者提出了针对第二次密码提示的修复方法。基本上,作者引导你创建一个密钥文件,将其添加到你的 LUKS 分区,然后调整 initrd 文件以使用密钥文件,系统第二次要求你输入密码。

相关内容