Answers:
我终于找到了一种技巧,只需输入一个密码,并对我的所有物理磁盘进行加密。
我用口令加密第一个,使用存储在第一个硬盘驱动器上的密钥文件(/ root / mykeyfile)对第二个加密。
并使用/ etc / crypttab文件中的正确行,就可以了。
sda5_crypt UUID = fb07f1e8-a569-4db9-9fd7-fc1994e093b5无
sdb1_crypt UUID = 4c0687f0-d7af-4f2e-9c57-5ca8e909d492 / root / mykeyfile luks
在ubuntu上,可以使用从根派生的密钥作为其他文件系统上的附加密钥。这样的好处是可以将其他驱动器的密钥保留在文件系统本身之外。
在执行此操作之前,首先请确保/ tmp仅安装在ram上!我建议单用户模式进行此更改。
mount -t ramfs none /tmp
然后,您可以导出派生密钥:
# replace vda5_crypt with the cryptsetup name of your root luks
# have a look in /dev/mapper or 'pvdisplay' to find it...
/lib/cryptsetup/scripts/decrypt_derived vda5_crypt > /tmp/key
然后将其添加到您的其他设备:
# use your own disks here instead of sdb1 sdc1 sdd1 etc
cryptsetup luksAddKey /dev/sdb1 /tmp/key
cryptsetup luksAddKey /dev/sdc1 /tmp/key
cryptsetup luksAddKey /dev/sdd1 /tmp/key
rm /tmp/key
一旦根被解锁,ubuntu初始化脚本将能够使用派生密钥来解锁其余的块设备,并使其类似地在/ dev / mapper下可用。我不确定它们是否需要/ etc / crypttab条目-不先尝试它们,如果它们不出现,则将它们放入没有密钥的crypttab中,它应该将它们解锁。
(我还没有测试过任何一个。)
从理论上讲,您可以在自定义启动脚本中设置一个临时环境变量,然后初始化脚本会在您的解密过程中引用该临时环境变量。我实际上是几年前这样做的。
您的另一种选择是删除硬盘驱动器的现有初始化脚本,并编写一个自定义脚本,该脚本输入一次密码,然后继续进行两个解密过程。
或者,您可以将LVM卷扩展到第二个驱动器。如果我没记错的话,加密应该继续下去。