找不到 LVM 根目录并返回到 initramfs

找不到 LVM 根目录并返回到 initramfs

当我启动时,屏幕上显示:

Gave up waiting for root device

然后列出了常见问题:

ALERT! /dev/mapper/ubuntu--vg-root does npt exist. Dropping to a shell!

然后我得到一个 initramfs 提示。

没有备份可以修复吗?

我不记得我到底做了什么让它停止工作......

(我的硬盘未加密。)

答案1

Ubuntu 的 LVM 自动检测对我来说也不起作用。为了解决这个问题,我编写了一个脚本

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

内容如下:

#!/bin/sh
PREREQ=""
prereqs()
{
   echo "$PREREQ"
}
case $1 in
prereqs)
   prereqs
   exit 0
   ;;
esac
. /scripts/functions
# Begin real processing below this line

# This was necessary because ubuntu's LVM autodetect is completely broken. This
# is the only line they needed in their script. It makes no sense.
# How was this so hard for you to do, Ubuntu?!?!?
lvm vgchange -ay

然后

# chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`

为了更好的衡量,

# update-initramfs -u -k all

这解决了所有问题,并且在系统更新后仍然存在。

答案2

尝试临时解决方法

初始化内存文件系统提示类型:

vgchange -ay

示例输出:

卷组“vg1000”中的逻辑卷现在处于活动状态

其次是:

exit

如果你有根分区的 LVM 快照,那就是一个错误#360237。我通过移除/删除该快照解决了这个问题。

如果你的情况不是这样,请尝试修复此问题

另一个相关的错误:#1396213#29858#1163406

答案3

1

在 initramfs 中,输入:

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

如果您无法解决该问题,请输入以下内容:

ls /dev/mapper 现在,您应该已经找到了根(如 /dev/vgname/lvname)。

重新启动然后在屏幕上选择一个内核并选择 e 来编辑并粘贴根值(如 /dev/vgname/lvname):

/boot/vmlinuxxxxx root=uuid/dev/xxx。然后,最后按 Ctrl+X 进行启动。

如果重启服务器后问题再次出现

#/boot/grub/grub.cfg at /vm/vmlinuz root=write 你的完整 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 执行此命令

#/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

备份 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" 如果你找不到此行

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

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

然后保存文件

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

答案4

  1. 备份

    /usr/share/initramfs-tools/scripts/local-top/lvm2
    
  2. 编辑

    /usr/share/initramfs-tools/scripts/local-top/lvm2
    
  3. modprobe -q dm-mod和之间activate_vg "$ROOT" 添加此行以初始化你的 lvm:

    lvm vgchange -ayactivate_vg "$ROOT"
    
  4. 重建你的 initramfs:

    sudo update-initramfs -u
    
  5. 重建你的 grub cfg:

     sudo update-grub
    

享受! :-)

相关内容