升级到16.04版本时中断导致Cryptsetup故障。

我的计算机在从14.04升级到16.04时被中断。之后我重新启动并运行

sudo dpkg --configure -a

重新启动了一次。现在,在启动时提示输入密码时,无论我输入什么都不起作用。我已经检查了大写锁定和数字锁定,并且输入时非常小心,从未更换过不同的键盘。事实上,导航到GRUB并在那里输入时,我输入的每个字符都显示正常。
尝试从恢复模式运行会导致以下交互:
Please unlock disk sda5_crypt:

(我输入密码)
Failed to setup dm-crypt key mapping for device /dev/disk/by-uuid/[some numbers]

Check that kernel supports aes-xts-plain64 cipher (check syslog for more info).

cryptsetup: cryptsetup failed, bad password or options?

我不清楚如何在无法访问正常命令行的情况下解决这个(明显的)内核问题。
2个回答

虽然不完全解决了问题,但我最终从一个旧内核启动,其中sda5_crypt可以正常工作。

你卸载/重新安装了更新的内核,看看是否也安装了正确的加密模块吗?你正在运行的是哪个内核版本?(已安装并尝试运行?)我从4.4更新到48都没有遇到任何问题,使用了加密的家目录/磁盘。 - 0x0C4

当我在Ubuntu 14.04LTS上运行cryptsetup --help时,它在通常选项的末尾显示以下内容:
默认编译的密钥和密码参数: 最大密钥文件大小:8192kB,最大交互式密码长度512(字符) LUKS的默认PBKDF2迭代时间:1000(毫秒)
默认编译的设备密码参数: loop-AES:aes,密钥256位 plain:aes-cbc-essiv:sha256,密钥:256位,密码哈希:ripemd160 LUKS1:aes-xts-plain64,密钥:256位,LUKS头哈希:sha1,RNG:/dev/urandom
您可能想要检查您的内核中是否加载了aes模块,使用lsmod | grep aes命令。 http://crunchbang.org/forums/viewtopic.php?id=37276提供了有关当出现您提到的错误时需要哪些模块的有用信息。
在我的内核中,模块 kernel/arch/x86/crypto/aes-x86_64.ko 似乎提供了它。看起来它是内核的标准部分,所以我猜想它只是默认没有加载。在我的机器上,/proc/modules 中的依赖树显示 aes_x86_64 => aesni_intel,并且 aesni_intel 似乎没有任何依赖项,因此加载应该很简单。
希望这有所帮助。