我的电脑在从 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?
我不清楚如果无法访问正常命令行,如何修复这个(明显的)内核问题。
答案1
虽然这并不能完全解决所提出的问题,但我最终从 sda5_crypt 工作的旧内核启动。
答案2
当我从 Ubuntu 14.04LTS 运行 cryptsetup --help 时,它在常用选项的末尾显示以下内容:-
默认编译的密钥和密码参数: 最大密钥文件大小:8192kB,最大交互式密码长度 512(字符) LUKS 的默认 PBKDF2 迭代时间:1000(毫秒) 默认编译的设备密码参数: loop-AES: aes,密钥 256 位 普通: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 似乎没有任何依赖关系,因此应该很容易加载。
希望有帮助