我有一台华硕机器,可以在旧 BIOS 和新 UEFI 之间进行选择。我一直使用旧 BIOS 系统,运行完整加密的 Debian,配置如下:
未加密的启动分区安装在
/boot
所有剩余空间均使用 LUKS 加密,并在其上包含所有 LVM 逻辑卷(
/
、swap、/home
)。
一切都运行良好,没有任何问题。但我想知道,如果我想使用 UEFI 从头开始安装(我不想转换内容),并且必须创建安装在 的 FAT32 EFI 分区/boot/efi
,我是否仍然需要未加密的/boot
分区,还是只需要 EFI 分区和所有其余加密分区?
换句话说,哪种配置是正确的?
/boot/efi
/boot
- 加密的 LUKS 卷
或者
/boot/efi
- 加密的 LUKS 卷?
答案1
是的,我知道答案已经很晚了,但迟到总比不到好……
我不知道 Debian 是否有工具可以做到这一点,但使用 Arch Linux 你可以创建磁盘布局像这样:
- EFI 分区(已安装
/boot/efi
)grub EFI 引导加载程序,格式化为 fat32 EFI 类型分区EF00
。可能是您的/dev/sda1
。此分区将仅保存 grub 存根,以询问密码来挂载您的启动分区。 - 启动分区(已安装
/boot
),这是一个 luks 加密设备。加密解锁此分区后,您可以使用 grub 支持的任何文件系统将其格式化为 but(例如 ext4)。这将是您的/dev/sda2
- 加密设备,将存储所有剩余分区作为逻辑卷。加密设备,带有 LVM 及其逻辑卷(3 层)。这将是您的
/dev/sda3
。- 在这里,您可以根据需要创建任意数量的逻辑卷。解锁此分区的密钥将用于访问其所有逻辑卷上的数据。
借用 Arch Wiki 的说法,你的磁盘布局将是这样的:
+---------------+----------------+----------------+----------------+----------------+
|ESP partition: |Boot partition: |Volume 1: |Volume 2: |Volume 3: |
| | | | | |
|/boot/efi |/boot |root |swap |home |
| | | | | |
| | |/dev/store/root |/dev/store/swap |/dev/store/home |
|/dev/sdaX |/dev/sdaY +----------------+----------------+----------------+
|unencrypted |LUKS encrypted |/dev/sdaZ encrypted using LVM on LUKS |
+---------------+----------------+--------------------------------------------------+
注意事项:
- Grub 将要求输入密码才能解锁
/boot
,初始 RAM 磁盘将再次要求输入密码(因为他/boot
被锁定了),并且可能在安装root
分区时会再次发生这种情况。这里的技巧是使用你的内心的主密钥/boot
(也许在您的 initrd 里面有FILES=
选项mkinitcpio
并将其添加luksAddKey
。您的启动分区是加密的,所以没有必要担心,因为密钥在加密分区里面。chmod 000 keyfile.bin
是你的朋友。 - 添加
encrypt lvm2
到mkinitcpio
钩子。 - 如果由于某种原因您的系统无法使用该密钥,则会再次要求输入密码。
- 你仍然会受到邪恶女仆探索攻击冷启动失败。您在这里能做的最好的事情是:
- 启用安全启动。
- 签署您的 Grub EFI。
- 撤销主板上的 Microsoft CA(您知道,不能相信任何人)。
grub-efi
无论何时,当您有软件包更新时,请记得对 grub efi 进行签名。
进一步阅读:
在研究了将启动分区保留在 lvm 之外的必要性之后(据我所知,grub-pc/bios 有lvm
和luks
模块),我发现这家伙在 Arch 论坛上确认无需保留/boot
备用加密分区。
您可以在您的上安装 grub ESP
,并告诉它从 esp 读取配置文件像这样:
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=grub --boot-directory=esp
此后,重新生成conf:
# grub-mkconfig -o esp/grub/grub.cfg
而且,它似乎grub
是唯一支持在没有单独的 /boot 分区的情况下启动 lvm+crypto 的引导加载程序。