如何解锁受密钥文件保护的分区(其中密钥文件位于受密码保护的分区上)?

如何解锁受密钥文件保护的分区(其中密钥文件位于受密码保护的分区上)?

我想在启动时使用位于 /dev/sda5 上的密钥文件自动解密 /dev/sdb3,/dev/sda5 是一个 (密码) 加密分区。“自动”是指“在启动时,在提示输入 /dev/sda5 密码后”。

我使用的是 Debian Strap,目前有以下设置:

在/etc/crypttab中:

sda5_crypt UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa none luks
sdb3_crypt UUID=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb /etc/sdb3_key luks

在 /etc/fstab 中:

/dev/mapper/lv_sda5-lv_rootfs               /               ext4            discard,noatime,nodiratime,errors=remount-ro    0       1
UUID=cccccccc-cccc-cccc-cccc-cccccccccccc   /boot           ext2            noatime,nodiratime                              0       2
/dev/mapper/lv_sdb3-lv_home                 /home           ext4            defaults                                        0       2
/dev/mapper/lv_sdb3-lv_swap                 none            swap            sw                                              0       0

从现在开始,我在启动时会提示输入密码来解密 /dev/sda5,然后我会收到以下消息,重复约 30 秒

警告:无法连接到 lvmetad。恢复设备扫描。

未找到卷组“lv_sdb3”

无法处理卷组 lv_sdb3

直到我最终得到

放弃等待暂停/恢复设备

/dev/mapper/lv_sda5-lv_rootfs:干净,...

我的 debian 启动完美,/home 和 SWAP 也正确安装。

我怎样才能正确实现这一目标?

编辑

问题似乎来自 lvm,与 /etc/crypttab、/etc/fstab 无关。从 /etc/crypttab 和 /etc/fstab 中删除 sdb3_crypt 条目不会改变错误消息循环。(我update-initramfsupdate-grub希望在 /boot/initrd 上重新执行该更改)

现在我想知道 initramfs 如何知道存在 lv_sdb3 卷组。我use_lvmetad = 0在 /etc/lvm/lvm.conf 中设置,运行pvscan --cache后只找到 lv_sda5 卷组,因为我没有打开 /dev/sdb3 LUKS 分区。那么 initramfs 在哪里读取有关 lv_sdb3 卷组的 /deprecated/ 信息?

答案1

转储 /boot/initrd 并zcat显示 lv_sdb3,以明文 ASCII 格式出现一次 RESUME=/dev/mapper/lv_sdb3-lv_swap

可以通过将 /etc/initramfs-tools/conf.d/resume 移至备份目录,然后update-initramfs -u -k all重写 /boot/initrd 来消除此问题。现在启动过程不会出错,也不会出现耗时的循环!

相关内容