我正在尝试在 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 的东西