我有使用 LUKS 加密的 LVM 分区。我的根分区是/dev/HDD/root
:
LVM group "HDD" (at /dev/HDD):
Encrypted LUKS device "root" at /dev/HDD/root
我正在尝试通过 grub 参数解密它GRUB_CMDLINE_LINUX
:
dolvm crypt_root=/dev/HDD/root root=/dev/mapper/root root_keydev=UUID=<usb-uuid> root_key=hdd.key
LUKS 的密钥位于 USB 设备上/hdd.key
但加载时却显示错误信息:
>> Scanning for and activating Volume Groups
Reading all physical volumes. This may take a while...
Found volume group "HDD" using metadata type lvm
3 logical volume(s) in volume group "HDD" now active
>> Using key device /dev/sdc2.
>> Removable device /dev/sdc2 mounted.
>> hdd.key on device /dev/sdc2 found
No key available with this passphrase.
!! Failed to open LUKS device /dev/HDD/root
!! Could not find the root in /dev/HDD/root.
!! Please specify another value or:
!! - press Enter for the same
!! - type "shell" for a shell
!! - type "q" to skip...
根据日志,找到了卷组,成功安装了带有密钥的设备,找到了设备上的密钥,但随后无法使用 LUKS 打开它。
然后我使用shell
选项手动修复它。带有密钥的设备已安装到/mnt/key
,因此我可以在这里找到它并使用此密钥打开 LUKS 设备:
cat /mnt/key/hdd.key | cryptsetup luksOpen /dev/HDD/root root
此命令打开 LUKS 设备/dev/mapper/root
,因此我可以退出 shell 并按q
跳过此错误。之后系统启动成功。
我的 grub 配置似乎有问题,因为可以打开 LUKS 设备并使用我的密钥手动安装它,所以我的问题是如何修复它以使用 grub2 在启动时自动打开 LUKS 设备?
答案1
问题是我使用密钥作为 LUKS 的密码而不是密钥文件。要将其转换为密钥文件,需要通过添加密钥文件cryptsetup
并删除其密码:
cat /bood/hdd.key | cryptsetup luksAddKey -d /bood/hdd.key /dev/root
cat /bood/hdd.key | cryptsetup luksRemoveKey /dev/root