我有带全盘加密的 Debian 12。Cryptsetup 使用 Linux 内核版本 6.1.0-28 解锁卷,但使用任何更高版本都会失败,如下所示。
Please unlock disk sdXY_crypt: **********
No key available with this passphrase.
cryptsetup: ERROR: sdXY_crypt: cryptsetup failed, bad password or options?
在内核 6.1.0-28 和 6.1.0-29 之间的时间段内,我安装了 VeraCrypt 供容器使用。我从未使用它来加密任何磁盘卷。据我所知,VeraCrypt 不会改变内核配置,但我提到这是导致问题的潜在原因。
问题是什么?如何排除故障并修复?
当您遇到加密卷问题时,强烈建议从克隆磁盘开始,以确保在故障排除或恢复期间不会使问题变得更加严重。
只要您可以使用其中一种启动/内核配置打开卷,您就可以确信卷及其标头/元数据没有损坏,问题出在其他地方。请考虑以下步骤来隔离问题(或根据您的直觉跳过其中一些步骤):
initramfs
。为此,请进入 GRUB 菜单,选择所需的启动项并按下e
键。在 GRUB 编辑模式下,找到内核行,并将其附加break
到包含内核参数的行末尾。进行此更改后,按Ctrl + x
或F10
以使用修改后的参数进行启动。initramfs
,以明文形式输入密码。这样可以确保cryptsetup
输入时获得正确的密码。检查 LUKS 元数据是否存在:
“模拟”
--test-passphrase
打开卷而不真正解锁它,并在此过程中输出详细的调试信息:就我的情况而言,键盘输入似乎会为某些键生成错误的键码/字符。这导致无法
cryptsetup
获取有效密码。根本原因是我定制了我的键盘布局,添加了带变音符号的 3 级字符(所谓的“程序员”键盘布局)作为新的键盘变体,并在 中配置了它
/etc/default/keyboard
。由于initramfs
使用/etc/default/keyboard
太多但出于某种原因甚至无法正确解释自定义us
布局中未修改的 1 级和 2 级字符,因此在下次内核更新后重新生成配置时启动过程中断initramfs
。讽刺的是,这并不影响我完全启动的系统的键盘配置。因此,通过更新并重新生成配置,
/etc/default/keyboard
问题得到了完全解决/etc/default/keyboard
initramfs
sudo update-initramfs -u -k $(uname -r)