![内核能够找到一个驱动器的密钥文件,但无法找到其他驱动器的密钥文件](https://linux22.com/image/211457/%E5%86%85%E6%A0%B8%E8%83%BD%E5%A4%9F%E6%89%BE%E5%88%B0%E4%B8%80%E4%B8%AA%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E6%89%BE%E5%88%B0%E5%85%B6%E4%BB%96%E9%A9%B1%E5%8A%A8%E5%99%A8%E7%9A%84%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6.png)
我的一个朋友有一台装有 GNU/Linux 的笔记本电脑。它有许多完全加密的磁盘,并且她随身携带包含 USB 闪存驱动器的未加密/boot
分区/boot/efi
。另外还有用于/boot
解密磁盘的密钥文件。她在启动时将 USB 闪存驱动器插入笔记本电脑。使用luksAddKey
的命令将密钥文件添加到笔记本电脑上的 luks-headers 中cryptsetup
。这是/etc/crypttab
操作系统的文件:
sda1_crypt UUID=c0c16c39-950d-4af6-956c-de187eb077c6 /boot/disk.key luks,discard
mmcblk0_crypt UUID=e4a9c0c2-8ddb-488a-9c5b-cece3ca3d2a2 /boot/disk.key luks
您可以在本示例中看到,两个磁盘的密钥文件是相同的。操作系统是基于 Debian 的,因此为了生成 ramdisk,-file/etc/cryptsetup-initramfs/conf-hook
包含任何密钥文件的路径:(/boot/*.key
这样运行后任何密钥文件都会包含在 ramdisk 中update-initramfs -u -k all
)。使用 使 ramdisk 没有警告和错误update-initramfs -u -k all
。
问题是,在启动过程中,内核成功解密了 sda1,但在尝试解密 mmcblk0 时出现以下错误:
cryptsetup: WARNING: mmcblk0_crypt keyfile '/boot/disk.key' not found
mmcblk0_crypt (starting)...Failed to open key file.
mmcblk0_crypt (failed) ...failed.
所以看起来它能够在前一秒找到解密 sda1 的密钥文件,但一秒后,它无法找到相同的密钥文件来解密 mmcblk0。此外,尝试对两个驱动器使用不同的密钥文件,但结果相同。这是说明问题的最小示例。
可能发生什么事?对于这个问题我们应该如何排查和解决呢?
编辑:我们没有grub.cfg
以任何方式修改。它具有默认设置。
Edit2:出于某种原因,如果我将 mmcblk0 的密钥文件移至/etc