启动期间无法在 LVM 上打开根 LUKS 设备

启动期间无法在 LVM 上打开根 LUKS 设备

我有使用 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

答案2

这里有一篇详细解释的文章来设置 LUKS 分区。

在 Red Hat Enterprise Linux 7 和变体中创建加密文件系统

此外,我们可能需要删除 LUKS,以防使用以下步骤。

如何从 Red Hat 6、7 Linux 及其变体中安全删除 Luks 加密磁盘

相关内容