加密分区上的 LVM 导致我丢失了 initramfs 根目录

加密分区上的 LVM 导致我丢失了 initramfs 根目录

我在我的电脑上安装了 Ubuntu 13.10 64 位。我有一个硬盘 (/dev/sda),带有 LVM 加密分区。

因此问题是重启后我无法启动 Ubuntu(它将我带入 initramfs 提示符并显示消息/dev/mapper/kubuntu....-root missing:)

所以我认为这是因为在启动过程中它无法使用 cryptsetup 打开 /dev/sda5。如果我进行 chrooting,我可以打开分区并挂载加密的根分区。我尝试在 grub 参数中添加:

cryptopts=target=sda5_crypt,source=/dev/sda5,lvm=vg-root

但在启动过程中的控制台中,我看到在 sda5 上未找到 LVM 卷?我还发现消息:

scripts/local_top/cryptroot:line 1 /sbin/cryptsetup: not found

有人知道哪里出了问题吗?

我尝试系统升级,创建了 cryptroot 文件,重新生成了 initram 文件。

答案1

cryptsetup 模块仅当“在 initramfs 阶段需要解锁设备(例如 root 或恢复设备)”时才添加到 initramfs 映像中(参见:conf-hook)。但目前只有当根设备不在(加密的)LVM 中时,此功能才可靠地起作用。

要强制将 cryptsetup 模块纳入 initramfs 映像,您必须进行CRYPTSETUP=y设置/etc/cryptsetup-initramfs/conf-hook

您还可以在添加选项cryptopts时删除 grub/kernel 参数:initramfs/etc/crypttab

sda5_crypt /dev/sda5 none luks,initramfs

我刚刚回答了类似的问题Unix 和 Linux,您可能也想去那里看看。

答案2

我昨天遇到了这个问题。我使用的是 BTRFS,Ubuntu 自动在文件系统上创建了我不知道的根和主子卷。我需要编辑我的文件/etc/fstab才能正确挂载这些卷。

提示:进入 initramfs shell 后,稍微操作一下,看看是否ls /root能恢复任何东西。这让我找到了答案。

相关内容