使用 gpg 加密密钥文件在 LUKS 内的 LVM 上启动 Gentoo

使用 gpg 加密密钥文件在 LUKS 内的 LVM 上启动 Gentoo

我正在尝试在 LUKS 容器内的 LVM 逻辑卷上安装 Gentoo,该容器使用 GPG 使用密码加密的密钥文件进行加密。一切都很顺利,直到我尝试启动。我正在使用 genkernel 构建内核和 initramfs:

genkernel --lvm --luks --install --menuconfig --busybox all   

并使用 GRUB2 启动它。因此,在启动内核后,我得到了找到密钥文件的信息,但在下一行我得到了“无法打开 LUKS 设备...”的信息,然后出现了内核崩溃。有什么办法吗?

内核配置 -http://pastebin.com/YR7TfaVm

GRUB2 菜单项:

menuentry 'Gentoo'{
root='hd1,gpt1'
linux /kernel-genkernel-x86_64-3.17.7-gentoo initrd=/dev/ram0 crypt_root=/dev/disk/by-partuuid/PARTUUID_OF_LUKS_CONTAINTER_PARTION dolvm real_root=/dev/mapper/vg1-root rootfstype=ext4 real_init=/usr/lib/systemd/systemd root_keydev=/dev/disk/by-partuuid/PARTUUID_OF_MY_PENDRIVE_WITH_KEY root_key=luks-key.gpg
initrd /initramfs-genkernel-x86_64-3.17.7-gentoo
echo "initing..."
}

答案1

将内核版本更改为 3.10 并将 gpg 版本更改为旧版本后,我的问题得到了解决,这不需要 pinentry 即可工作,并且我是静态编译的。尽管在新版本中我检查了所有内容两次,但 pinentry 似乎总是存在问题。另外我认为 genkernel 没有自动包含 pinentry。我必须自己把它包括在内。

总结一下:

  • 检查你的 gpg 版本是否需要 pinentry (我的情况是我恢复到旧版本来制作 initrd )
  • 考虑更稳定的内核版本
  • 考虑静态编译 gpg
  • 生成initrd后检查所有库依赖项甚至如果你使用类似 genkernel 的东西

相关内容