我有以下设置:一个 LUKS 加密 SSD,其上使用 LVM 形成典型的 Linux 分区(/、/home/ 等)。此设置在启动时通过密码解锁。我正在使用 Debian Jessie。
由于空间不足,我想向 LVM 添加另一个 PV,当然应该在启动时对其进行 LUKS 加密和解密 - 使用从第一个 PV 派生的密钥或使用与第一个 PV 相同的密码。
这意味着LVM(包括/、/home/等)跨越两个LUKS加密的SSD(当然每个SSD包含一个实际加密的分区,而不是SSD本身,但我认为这是显而易见的。)。
由于 Systemd 已经集成,似乎不可能在启动时解锁这种设置 - 所有找到的指令都派生密钥(或其他),而 Systemd 无法再执行这些操作,因为密钥派生脚本在启动时不再执行(或指令)只是失败)。
有人知道这是否以及如何实际工作吗?
否则我必须更改我的设置以拥有一个单独的根分区(在 LVM 之外),以便可以在启动后安装其余部分,或者在 lvm 内拥有 luks。但这都是我最后想选择的选项。
谢谢!
答案1
方法一 我发现,由于 Systemd 是在 *buntu 桌面中实现的,因此它将解锁所有附加的 LUKS 分区如果
- 您要解锁的所有分区都使用相同的密码
- 第一次输入正确的根分区密码。如果输入错误,则需要为每个其他 LUKS 分区重新输入
这在 Ubuntu Server 16.04 中对我不起作用
方法二 使用 gnome-disk-utility (GUI) 应用程序...
- 选择加密的LUKS分区
- 单击齿轮按钮(其他分区选项)
- 编辑加密选项
- 禁用自动加密选项
- 启用启动时解锁
- (可选)更改名称。这将在 /dev/mapper/ 下标记未锁定的分区
- 输入密码。该实用程序将为您以这种方式设置的每个分区在 /etc/luks-keys/ 中创建一个密钥文件
- (可选)手动或使用磁盘实用程序将未锁定的分区添加到 fstab
- update-initramfs(不确定是否需要)
- 更新grub
方法三使用 keyutils。
我没有测试过这个。从https://www.redpill-linpro.com/techblog/2016/08/12/btrfs-and-encryption.html
- 对两个加密卷使用相同的密码。
- 启动到新安装的系统:
~# apt-get install keyutils
并将 keyscript=decrypt_keyctl 选项添加到 /etc/crypttab 中列出的两个加密卷中。- 然后发出:
~# update-initramfs -u -k all
更新您的 initramfs 以包含 keyutils。 - 然后重新启动并检查输入的密码是否已缓存并用于解锁两个加密卷。