我想在启动时使用位于 /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-initramfs
并update-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 来消除此问题。现在启动过程不会出错,也不会出现耗时的循环!