输入正确密码执行cryptsetup open失败,提示“No key available with this passphrase.”求助
首先先给你吃颗定心丸:既然正常启动时GRUB能成功打开Slot 0,说明你的LUKS加密容器本身没坏,密码也没问题——问题肯定出在LiveUSB环境的操作细节上。我给你梳理几个排查和解决步骤:
1. 先确认LiveUSB的键盘布局是否正确
你说自己一直用en_US QWERTY键盘,但EndeavourOS的LiveUSB有时候可能默认不是美式键盘(比如部分地区的镜像会用当地布局),这会导致你输入的密码实际和你以为的不一样。
解决方法:
在Live终端里先执行:
loadkeys us
切换到美式键盘布局,然后再重新执行cryptsetup命令试试。
2. 用完整的cryptsetup命令(别漏了映射名)
你之前的命令sudo cryptsetup open /dev/nvme1n1p2其实不完整——cryptsetup需要你指定一个映射名称(比如cryptroot),否则可能会出现异常。正确的命令应该是:
sudo cryptsetup -v open /dev/nvme1n1p2 cryptroot
加上-v参数可以看到详细的执行日志,方便排查问题。输入密码后看具体的错误提示,如果还是密码不对,再回到第一步确认键盘布局。
3. 验证目标分区确实是LUKS加密容器
有时候可能会不小心选错分区,比如误选了EFI分区或者swap分区。用下面的命令确认:
sudo blkid /dev/nvme1n1p2
如果输出里有TYPE="crypto_LUKS",说明你选的分区是对的;如果没有,那你需要重新确认哪个是你的LUKS加密根分区(用lsblk看分区大小和类型,一般根分区是最大的那个)。
4. 查看LUKS密钥槽状态
执行下面的命令查看密钥槽的激活状态:
sudo cryptsetup luksDump /dev/nvme1n1p2
找到Slot 0的部分,确认它的状态是ENABLED——既然GRUB能打开它,这里肯定是ENABLED的,这一步只是再次验证容器本身没问题。
最后补充
等你成功打开LUKS容器后,接下来挂载BTRFS子卷的时候,别忘了指定你原来的子卷(比如/@),命令大概是:
sudo mount /dev/mapper/cryptroot /home/liveuser/m -o subvol=@
不过这是后话,先解决cryptsetup的问题就行。
备注:内容来源于stack exchange,提问作者alles1232

