升级到 20.04 后:luks 在启动时无法打开我的磁盘;cryptroot/crypttab 为空,cryptsetup 无法识别 crypttab 条目

升级到 20.04 后:luks 在启动时无法打开我的磁盘;cryptroot/crypttab 为空,cryptsetup 无法识别 crypttab 条目

升级到 20.04 后,我的加密磁盘在启动时无法解密。我没有被要求输入任何密码,所以它显然找不到任何分区并启动到 initrd 提示符。

可能的原因是什么:/cryptroot/crypttabinitrd 映像中完全是空的。

/etc/crypttab我可以手动打开 luks 并 chroot 到系统中。这是我在真实根目录中的内容:

nvme0n1p3_crypt UUID=<some uuid> none luks

(所有位置的 UUID 都是正确的)

当我运行时update-initramfs -c -k all,输出是:

cryptsetup: WARNING: target 'nvme0n1p3_crypt' not found in /etc/crypttab

这有点奇怪,因为它正是该文件中唯一单个条目的目标名称。它还被列为/dev/mapper链接,../dm-0这似乎也是正确的。

我尝试将该设备重命名为crypt仅使用dmsetup rename ...,但这当然没有帮助。

我认为这是我的问题的根本原因。

答案1

顺便说一句,我已经修好了。这太奇怪了,如果没有人告诉我,我永远也不会发现。

问题出在文件上/etc/crypttab:它末尾需要一个 EOF!

哇哦!怎么会这样?这是过去 25 年来 Linux 第一次需要在文本文件中指定 EOF。天哪!

无论如何,经过一周多的测试,现在已经修复了。

答案2

以下是生成例程: https://salsa.debian.org/gpiccoli/cryptsetup/-/blob/master/debian/functions#L526

另一个陷阱(其他人可能会说这是有意的)是您的/etc/crypttabTARGET(= 名称)必须是您打算为其生成 initramfs 的根当前使用的 TARGET。

例如:如果您:

luks open
mount /dev/mapper/foo
chroot
update-initramfs

然后foo's etc/crypttab's TARGET 必须否则你会看到:

cryptsetup: WARNING: target 'foo' not found in /etc/crypttab

尽管用 几乎看不出来update-initramfs -v

相关内容