缺少根 VG,已放入 initramfs shell

缺少根 VG,已放入 initramfs shell

我的 Linux Mint 17.1(64 位)在其操作系统驱动器(SSD)上使用 LVM。我一定做了“什么”来破坏我的系统,因为上次我重新启动时,启动失败。相反,我收到了消息“警报!/dev/mapper/mint--vg-root 不存在。正在进入 shell!”和一个 initramfs shell。我不知道如何继续。

我通常会进行正常的系统更新,但不使用自定义内核或类似的东西。我也很长一段时间没有重新启动,所以我不知道这是最近出现的问题还是只是因为需要重新启动而未被发现。

我既不了解 grub,也不了解 initramfs,也没有从此类事情中恢复的经验。当然,我迫切需要访问我的数据!

其他帖子说这可能是由于升级到不支持 lvm2 的内核造成的,并说可以使用这个或那个 Live DVD 来修复它。问题是,我无法再从 USB 或 DVD 启动,因为我仍然会出现在这个屏幕上。

我的下一步是断开 SSD,看看是否可以然后从其他媒体启动,但这并不是真正的解决方案。

假设我弄清楚如何从媒体启动,我能做什么?关于我的情况,我还需要告诉你什么吗?

截屏

更新:

“lvm lvs”“lvm pvs”说如下。我不知道当一切正常时这个输出应该是什么样子。这是否意味着他们都处于相似的(糟糕的)状态,或者是什么?

在此输入图像描述

我有一个 SSD,其中有两个 LV 用于根目录和交换,另一个 LV 基于两个独立驱动器上的两个 PV。LV 和 VG 的数量和命名与我预期的一样。

但是,我不知道如何阅读其他专栏。似乎所有卷都处于相似的状态(要么全部好,要么全部坏),但我可能是错的。

“fdisk -l”在我的 initramfs shell 上不可用,但我发现从媒体启动,因此这是从 LinuxMint 17.1 Live USB(与当前操作系统相同)运行时该命令的输出(安装卷后):

$ fdisk -l
$ fdisk -l /media/mint/verylonguuidstring
last_lba(): I don't know how to handle files with mode 40755
$ fdisk -v
fdisk (util-linux 2.20.1)
$

嗯,没有什么太大的结果。这是我偶尔使用的名为 REDO Backup & Restore 的 Live CD 的结果。这给出了更好的结果,或者至少是实际输出。

在此输入图像描述

至少,我的所有磁盘都可以安装并且看起来完好无损,所以只是启动就是问题所在。

更新!

我做了一件大胆的事,看起来很有效。在不同的介质上启动后,我安装了启动分区并修改了 /boot/grub/grub.cfg。在该文件中,“有问题的”标识符“/dev/mapper/mint--vg-root”出现了多次。我将它们全部更改为“/dev/mapper/ssd_vg-root_lv”,保存并重新启动。瞧!它有效,我现在可以将我的普通操作系统启动到我常用的桌面。唷!

只是,GRUB 选择屏幕仍然等待 10 秒,但我设法关闭“/etc/default/grub”中的“TIMEOUT”设置。

@Bratchley,@nkms,我非常感谢你们的支持!

答案1

确保您的“/boot/grub/grub.cfg”列出了正确的 VG 和 LV。在我的例子中,VG 名为“ssd_vg”,LV 名为“root_lv”,因此 grub.cfg 文件需要引用“/dev/mapper/ssd_vg-root_lv”(注意使用斜杠和破折号!)。

答案2

在 initramfs 类型中

 #/sbin/lvm vgchange -a y
 # vgchange -a y
 #exit

如果您无法解决问题,请输入此内容

  #ls /dev/mapper

您找到了 root(如 /dev/vgname/lvname)#reboot,然后在屏幕上选择一个内核,然后选择 e 在 /boot/vmlinuxxxxx root=uuid/dev 处编辑并粘贴 root 值(如 /dev/vgname/lvname) /xxx。然后ctrl+x启动

If problem repeats when reboot the server

      #/boot/grub/grub.cfg

在 /vm/vmlinuz root=写入您的完整 lv 路径

如果问题未解决,请尝试修复 initramfs,如下所示

1.进入服务器终端

  # sudo rmmod floppy

    #echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklis-floppy.conf
     #dpkg-reconfigure initramfs-tools
     #update-initramfs -u
     #update-grub
     #reboot

2.执行这个

       #/etc/initramfs-tools/scripts/local-top/forcelvm

包含以下内容:

       #!/bin/sh
       PREREQ=""
     prereqs()
        {
       echo "$PREREQ"
     }
     case $1 in
     prereqs)
     prereqs
    exit 0
      ;;
    esac
      . /scripts/functions
       lvm vgchange -ay

然后做

      # chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`
       # update-initramfs -u -k all
  1. 备份lvm2

     #apt-get install lvm2
     #cp /usr/share/initramfs-tools/scripts/local-top/lvm2  /tmp
    

    编辑lvm2

        #vi /usr/share/initramfs-tools/scripts/local-top/lvm2
    

    在 modprobe -q dm-mod 和 activate_vg "$ROOT" 之间添加以下行来初始化您的 lvm:

      lvm vgchange -ayactivate_vg "$ROOT" if you not find this line
    

在 exit 0 上方的文件末尾写入以下两行

       #lvm vgchange -ayactivate_vg "$ROOT"
       #activate_vg="$ROOT"

然后保存文件

        #update-initramfs -u
        #update-grub
        #reboot

答案3

在基于 Debian 的系统上,如果您的分区在运行update-initramfs命令之前经过 LUKS 加密,请确保cryptsetup-initramfs安装了该软件包。如果没有,请先安装:

apt-get install -y cryptsetup-initramfs

相关内容