关键细节
我的 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 分区:
最后,此来源指出我可以让 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 文件以使用密钥文件,系统第二次要求你输入密码。