多年来我一直使用安装程序提供的分区加密选项。
现在,在应用 Ubuntu 板载磁盘工具为辅助物理磁盘设置加密后,我发现了以下情况。
- 有一个选项可以在系统启动时安装此磁盘,但它不起作用
- 我可以手动选择磁盘并选择“解锁”选项
- 此外,我还必须选择“安装”版本
- 鉴于上述步骤不太用户友好,这里还出现了一些丑陋的情况:系统生成一个递增的枚举,使得系统中假定的挂载点(例如由 Docker 守护程序)变得无效。
该怎么办?是否有选项可以在系统启动时输入第二个磁盘的加密密码?
- 我使用 Ubuntu 20.04.3 LTS
- 磁盘实用程序名为“磁盘 - gnome-disk-utility 3.36.3 - UDisks 2.8.4 (基于 2.8.4 构建)”
虽然主磁盘的加密会触发启动提示,但第二个磁盘的加密解锁需要手动拨动。只有这样才有可能挂载数据卷。最好在启动时执行这两个步骤,就像主卷一样。
有相应的设置但是似乎被系统忽略了。
答案1
首先,根据我从上面的图片中看到的情况,我们似乎正在处理 LUKS 加密。我在此的其余回答假设您正在使用 LUKS 加密。
我没有使用任何自动设置分区自动解密的工具,但我已经手动完成了,在这种情况下这应该对你有用。
我不想重新发明轮子,而是提供一些概述,概述需要发生的事情,然后我会给你指出一个记录该过程的在线帖子。
概述
您的系统需要知道如何处理辅助加密分区。要告知您的系统如何处理此分区,您需要在文件中为其创建一个条目/etc/crypttab
。您将在此处告诉系统如何解密分区。可以使用存储在主加密分区上的密钥文件来完成。可以使用 decrypt_derived 脚本来完成,该脚本使用先前解密的分区来解密辅助分区。这两种方法都记录在下面链接的页面中。如果您可以执行任何 shell 脚本并想深入研究 LUKS 密钥脚本,实际上有很多选择。例如,您可以使用 USB 棒解密您的系统,但如果没有 USB 棒,则返回密码。
仅仅更新/etc/crypttab
是不够的。对于固定磁盘,加密应该在启动时发生,因此您必须运行update-initramfs
以使用您刚刚所做的更改来构建启动文件。我下面链接的帖子只是更新当前运行的内核版本。如果您要这样做,请查看此命令的命令行选项以了解如何更新所有版本。
一旦系统知道如何解密分区,/etc/fstab
在解密后,中的条目应该负责在启动时正确安装该分区。
重定向
正如我提到的,其他人已经写了一篇关于实现这一目标的具体步骤的文章。你会发现这些说明这里。我只想做几点说明。在作者的/etc/crypttab
文件中,他/她为源参数指定了磁盘的路径。我个人更喜欢指定 UUID,因为即使设备路径发生变化,它也会保持不变,但如果您确定设备路径永远不会改变,那么使用它就可以了。如果您选择使用 UUID,crypttab 文件中的行将更类似于:
part2_crypt UUID=<uuid> <path to key file> luks
或者
part2_crypt UUID=<uuid> <part1_crypt> luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived
当然,的值<part1_crypt>
将是此文件中列出的主加密磁盘的第一个参数(名称)。您可以通过运行以下命令找到 LUKS 加密磁盘的 UUID
sudo blkid | grep "crypto_LUKS"
在您的情况下可能不需要grepping keyctl
,并且根据我在 Ubuntu 20.04 上的经验,我不需要/etc/default/grub
像帖子的作者那样进行编辑。