LUKS initramfs 启动问题:“/dev/mapper/ubuntu-root 不存在。”如何使用备份修复它?

LUKS initramfs 启动问题:“/dev/mapper/ubuntu-root 不存在。”如何使用备份修复它?

第一次提问,对 Ubuntu/Linux 还比较陌生。搜索功能不太好用。请原谅下面的文章 - 我认为这个问题有点独特...

我在笔记本电脑上运行 12.04(带有 UEFI BIOS),并使用备用 CD 设置了全盘加密。我最近使用 dd 将整个硬盘驱动器的映像备份到外部 USB 硬盘驱动器。最近在笔记本电脑上做了一些更改,我尝试插入外部 USB 克隆以将文件复制到其中。尽管收到密码提示,并且它在磁盘实用程序中显示为逻辑卷组,但它实际上不会安装外部驱动器,说它“不是可安装的文件系统”。在我的台式机上试了一下,它安装得很好(一旦我安装了 lvm2)。

使用 pvdisplay,我注意到外部驱动器和笔记本电脑内置驱动器具有相同的 UUID(呃,这是一个克隆!)。因此,在桌面上,我使用 pvchange -u 更改外部驱动器的 uuid。将其插入笔记本电脑,唉,仍然没有成功。我放弃了,关掉了笔记本电脑(驱动器仍插着),去吃晚饭。回来后,从现在关闭的笔记本电脑上拔下外部驱动器,尝试启动。问题!

它启动后会正常进入密码提示界面。输入密码,经过漫长的等待后,进入 initramfs 提示,并显示错误:“警告!/dev/mapper/ubuntu-root 不存在。”糟糕。

如果我重新启动,并重新插入外部驱动器,它会启动,似乎从 USB 驱动器运行 root 权限。我尝试过解决方案这里,而是输入 /dev/sda3(以及更多变体)。没有 bingo,仍然收到完全相同的消息。我使用 LUKS 和 LVM 的事实似乎使事情变得复杂。我想我在某个地方弄乱了一个配置文件,可能是因为插入了两个具有相同 UUID 的驱动器(愚蠢!),现在它认为 /root 在外部驱动器上。我不知道如何恢复它。

答案1

我修好了!为了供后代参考,方法如下:

问题是,当我将正在运行的系统的克隆插入其中时,我“混淆”了系统,不知道该写入哪个驱动器,并以某种方式破坏了原始内部驱动器的卷组元数据。幸运的是,我仍然拥有我制作的克隆中的元数据。

这意味着我可以插入工作备份,解锁它,然后使用 vgcfgbackup 复制其元数据。

~$ sudo vgcfgbackup -f /tmp/trousers
  Volume group "ubuntu" successfully backed up.

这将在 /tmp 中创建一个名为 trousers 的包含元数据的文本文件(您可以随意命名,没有区别)

然后,我卸下并拔下正常运行的备份克隆,并插入损坏的内部驱动器。像我进行备份一样将其解锁,然后运行:

 sudo vgcfgrestore -f /tmp/trousers ubuntu
  Restored volume group ubuntu

执行此操作后,卷组在磁盘实用程序中突然恢复活力,并且堵塞的内部结构被解除,可再次安装和读取!

这里的关键点是“ubuntu”是原始卷组的名称。您可以通过在 gedit 中打开“trousers”文件并查看“creation_time”下面一行的条目来验证这一点。

还值得注意的是,这只在备份是原始内部的精确克隆时才有效,因此 VG 元数据文件具有所有正确的 UUID。实际上,我第一次收到一条错误消息,因为我最初手动更改了外部驱动器上的一个 UUID。我不得不在原始内部上使用 pvdisplay 来找到它的 UUID,然后手动编辑“trousers”文件以使其工作。

无论如何,希望有一天能对某人有所帮助。

相关内容