从完全加密系统转到未加密的 /boot 和加密 / - 如何询问密码?

从完全加密系统转到未加密的 /boot 和加密 / - 如何询问密码?

我在同一台设备(是 root)上有一个完全加密的系统,/boot并且包含一个密钥文件,因此我只需要在 GRUB 启动时输入密码,之后则不需要。事实证明,这会导致启动过程非常缓慢,所以我想改变这种情况。现在我设置了一个未加密的单独分区。在 GRUB 之后通过内核解密根目录似乎要快得多。有了这个设置,我不再需要输入密码。这当然会使整个加密想法无效,因为密钥未加密地放在我的 中。因此,我希望内核在启动时要求输入密码。因此我放弃了这种做法并删除了 中的相关条目。我在 中添加了以下内容://dev/sd8//etc/luks//boot/boot/initrd/etc/luks/sda8_crypt.key/etc/crypttab/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=afee3be7-e817-4e11-9918-1373dd5e6a33:sda8_crypt root=/dev/mapper/sda8_crypt quiet splash"
GRUB_ENABLE_CRYPTODISK="y"

并且/etc/cryptsetup-initramfs/conf-hook

ASKPASS=y

尽管如此,在执行完所有的 update-initramfs 和 update-grub2 之后,我发现自己在 initramfs shell 中启动,需要自己执行 cryptsetup、mount 和 chroot(有趣的是,我被困在那里,因为启动 init 不再有效)。内核命令行中提供给 grub 的 UUID 是 /dev/sda8 的 UUID(因此不是映射的 /dev/mapper/sda8_crypt)。我从 grub.cfg 相关脚本中看到,Ubuntu 在内核命令行中添加了一个额外的 root= 条目,可能是解密(映射)设备的 UUID。

我应该把哪个 UUID 放在哪里才能真正启动 ubuntu?幸运的是,我将旧的 initrd 和 vmlinuz 移到了新文件中,由于它们仍然包含加密密钥,因此现在可以完美启动。

对于 UUID:

/dev/mapper/sda8_crypt: UUID="dbe3d3d7-eb2c-401b-a2c4-56a3e046a3ab" BLOCK_SIZE="4096" TYPE="ext4" – 
/dev/sda5: LABEL="boot" UUID="46b05bc4-d3bc-44aa-ac31-3d192f5e2979" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="bd8ad2a8-8b87-4ac2-b06f-6e58159f767f"
/dev/sda8: UUID="afee3be7-e817-4e11-9918-1373dd5e6a33" TYPE="crypto_LUKS" PARTUUID="8c7f615e-0898-468a-9489-18d0412b5436"

并且编译后的grub.cfg中有相关行:

linux   /vmlinuz-5.15.0-102-generic-key root=UUID=dbe3d3d7-eb2c-401b-a2c4-56a3e046a3ab ro  cryptdevice=afee3be7-e817-4e11-9918-1373dd5e6a33:sda8_crypt root=/dev/mapper/sda8_crypt quiet splash $vt_handoff

谢谢!

答案1

我现在意识到哪里出了问题!我删除了 /etc/crypttab,因为我想删除对密钥文件的引用。/etc/crypttab 内容如下:

sda8_crypt    UUID=uuidofthephysicalpartition   /etc/luks/sda8_crypt.key,discard

相反,我需要将设置更改为

sda8_crypt    UUID=uuidofthephysicalpartition    none

瞧,系统要求我输入密码,并且可以安全地将密钥文件存储在外部备份磁盘上。现在我仍然需要再次清理 /etc/default/grub,但我的系统运行正常。

相关内容