由于lvmetad,Ubuntu无法启动

我按照本教程安装了Ubuntu 15.10:

https://thesimplecomputer.info/full-disk-encryption-with-ubuntu

重新启动计算机后,我进入了grub菜单并选择了Ubuntu。 不久之后,我收到了这个错误:

/run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. 

这些消息每秒都会在黑屏上加起来。 过了一会儿,我可以访问initramfs ash控制台。

我究竟做错了什么?

我今天在运行Ubuntu 15.10的笔记本电脑上看到了同样的错误,我一直保持最新状态,但直到我想测试当前内核(即最近可能发生了一次更改)才重新启动一个月。

无论如何,我发现在我的情况下,由于在遵循上述教程时出现设置故障,其根本原因实际上是“缺失”的交换分区。 如果是这种情况和/或您实际上正在使用lvm ,则可以跳过下面的步骤2。 当然,如果系统(或辅助数据)分区已损坏或无法找到,您可能还会看到上述错误消息(请参阅步骤3)。

步骤1:按照上述教程安装系统,启动分区

假设您的(ext2)启动分区是/ dev / sdX1,您的(加密)交换分区是/ dev / sdX2,您的(加密)数据分区是/ dev / sdX3,并且您已使用cryptsetup luksOpen /dev/sdX3 data成功解密后者cryptsetup luksOpen /dev/sdX3 data ,然后挂载它: mkdir /tmp/data; mount /dev/mapper/data /tmp/data mkdir /tmp/data; mount /dev/mapper/data /tmp/data

注意教程中的绑定挂载,并确保挂载/ dev / sdX1,以便可以从系统分区的/ boot目录访问它(这是至关重要的,因为我们必须执行update-initramfs )。

在下面,我们假设您已经成功执行了chroot /tmp/data/@ubuntu1510 (或者无论您调用挂载的系统分区)

第2步:摆脱上述错误消息

我正在使用btrfs(正如您可能已经从提到的子卷名称中猜到的那样),因此可以在不丢失function的情况下轻松地禁用lvmetad:

  • 编辑/etc/lvm/lvm.conf并将use_lvmetad=1更改为use_lvmetad=0
  • 执行update-initramfs -k *KERNEL_VERSION* -u ; sync update-initramfs -k *KERNEL_VERSION* -u ; sync

现在,您可以重新启动,错误消息应该消失。 但是,在我的情况下,下一条错误消息[1]向我指出了上面提到的潜在问题,所以当我们在它的时候,……

步骤3:确保/ etc / crypttab指向正确的,未损坏的分区

首先,运行sfdisk --list /dev/sdX并检查您的加密交换分区(在我的情况下,/ dev / sdX2)实际上是否显示为(正常)交换分区。 如果它(如我的情况)那样,这意味着启动(例如,使用救援磁盘)可能会使用可用的交换分区,从而覆盖与cryptsetup相关的元数据(密钥短语和UUID)。

接下来,查看/ dev / disk / by-uuid,并将加密分区的相应UUID与/ etc / crypttab中包含的UUID进行比较。 我在这一点上的猜测:在你的情况下,有一个不匹配。

如果在/ dev / disk / by-uuid下面找不到专用的加密交换分区,那是因为它目前正由救援系统使用。 在这种情况下,请执行以下操作:

  • 确保停止使用分区: swapoff -a
  • 重新格式化: mkfs.ext2 /dev/sdX2 (这是至关重要的 ,尤其是在使用GPT分区时[2],因为它解除了我之前提到的故障。可能导致分区在sfdisk列表中显示为“swap”类型是你/我在开始设置分区时错误地使用了mkswap /dev/sdX2 。)
  • 按照教程加密分区并设置密码; 然后,使用cryptsetup打开它并正确地重新格式化现在解密的分区(使用类似mkswap /dev/mapper/swap
  • 确保sfdisk --list /dev/sdX不会识别交换分区(在这种情况下,重复最后的步骤)

现在,重新检查/ etc / crypttab中列出的UUID是否与您在各自加密分区的/ dev / disk / by-uuid下面看到的一致。

同样,要使更改成为永久更改,您必须执行update-initramfs如上所示。

如果您满意,请确保将所有内容写入磁盘并重新启动系统(无需手动卸载所有内容)。 之后,你的问题应该消失了。

[1]也许我第一次没注意或第一个错误信息“掩盖”了第二个; 也就是说,只有在重新启动后(使用use_lvmetad=0 ),我use_lvmetad=0读取所有物理卷。这可能需要一段时间…… ”(重复多次),然后是“ ALERT!/ dev / disk / by-uuid / …不存在。 “ (应该注意的是, update-initramfs也抱怨缺少分区。)

[2]因为它们的类型是从分析它们的内容中扣除而不是最终由标志/字节指定的(这就是为什么没有简单的方法,例如,使用[g]parted更改GPT文件系统类型。)

这听起来有点滑稽,但我只是让它坐在那里,而我发现这个Q + Apost。 然后突然….我看到一个垃圾文本说“放弃……”然后它只是跳过它并加载到桌面! 无论如何,这是在Ubuntu 18中。

尝试rest15分钟。

编辑:它仍然启动,但重新启动有相同的错误 – 永久缓慢启动,直到修复。

在Ubuntu 17上安装Gnome并选择GDM作为我的默认显示管理器后,我遇到了这个问题。 我从其他答案中拼凑出来的以下步骤对我有用:

  • 在启动时,在看到Ubuntu徽标之前,请按Shift键以便获得GRUB启动菜单。
  • 从启动菜单中选择恢复模式
  • 从显示的菜单中选择放入根shell
  • 重新安装根文件系统,以便您可以通过键入以下内容对系统进行更改:

    mount -o rw,remount /

  • 运行以下命令:

    dpkg-reconfigure lightdm

  • 选择lightdm作为显示管理器,而不是gdm

  • 重启