我有一台笔记本电脑,我想看看迁移到全盘加密有多难。我以前从全新安装中完成过一次,甚至写过一份 HOWTO,但不幸的是我不再能访问它(企业 Wiki)。我的预期是从全新安装中执行此操作可能非常自动化,因此迁移可能会困难得多。我一直在寻找指南,但它们似乎都标有“重复”、“需要更新”、“待删除”等字样,因此现在很难说哪个是最合适的指南。
答案1
我曾经做过一两次这样的迁移,但你必须能够使用谷歌来解决出现的问题。这不是一个完整的答案,只是你需要做的粗略步骤。这些步骤必须从 Live CD 完成,并涉及 LUKS 和 LVM 的操作,因此你不妨获得一张包含最新版本的 KDE Partition Manager 3.0 的 Live CD 并将其用于 LUKS 和 LVM 操作。
如果你有足够的可用空间(超过 50%),你可以
- 调整当前分区的大小。
- 创建使用 LUKS 加密的新 LVM2 物理卷 (PV)。
- 创建包含 LVM PV 的新卷组。
- 为您的 rootfs(可能还有 swap 和您可能拥有的所有其他分区...)创建新的 LVM 逻辑卷。我自己使用带有子卷的 btrfs,所以我只有 btrfs 和 swap。
- 将数据移至加密分区
- 删除未加密的分区
- 停用 LVM 并停用 LUKS 容器
- 将 LUKS 容器移动到磁盘的开头(删除未加密数据释放的空间)
- 再次打开你的 LUKS 容器。
- 扩大你的 LUKS 容器以便它填满整个磁盘。
- 扩大包含根文件系统的 LVM LV。
然后,您将必须更新 /etc/fstab 中的条目,创建 /etc/crypttab,chroot 到加密的 rootfs,更新您的 initramfs 和 grub 配置。
这仍然使 /boot 未加密。您也可以加密 /boot,但这会增加一些额外的步骤,因此首先确保上述所有操作均能正常工作。为了加密启动,您必须将 /boot 分区信息的内容移动到 rootfs/boot/。然后在 /etc/default/grub 中,您需要添加GRUB_ENABLE_CRYPTODISK=y
和删除旧的未加密 /boot。然后,您必须再次更新 /etc/fstab 中的条目,创建 /etc/crypttab,chroot 到加密的 rootfs,更新 initramfs 和 grub 配置。完成这些步骤后,grub 将在启动前要求输入密码,但它不会在启动时将其传递给 initramfs,因此 cryptsetup 将再次询问。因此,您需要将 luks 密钥文件添加到 luks 容器并将其放入 initramfs 中。例如,我的 /etc/crypttab 文件包含
luks-MYUUID UUID=MYUUID /boot/crypto_keyfile.bin luks