initramfs - 错误:未找到设备“/dev/mapper/vg0-root”,跳过 fsck

initramfs - 错误:未找到设备“/dev/mapper/vg0-root”,跳过 fsck

启动运行 Arch 的 Dell XPS 15 9560 后,我被置于紧急 shell 中,因为找不到我的设备

starting version 239

A password is required to access the luks volume:
mount: /new_root: special device /dev/mapper/vg0-root does not exist.
ERROR: device '/dev/mapper/vg0-root' not found, Skipping fsck.
mount: /new_root: special device /dev/mapper/vg0-root does not exist.
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs ]#

输出lvm pvs

[rootfs ]# lvm pvs
  WARNING: Not using lvmetad bacause config setting use_lvmetad=0
  WARNING: To avoid corruption, rescan devices to make changes visible (pvscan --cache)
  PV               VG  Fmt  Attr PSize    PFree
  /dev/mapper/luks vg0 lvm2 a--  <237.74g    0

输出lvm lvs

[rootfs ]# lvm lvs
  WARNING: Not using lvmetad bacause config setting use_lvmetad=0
  WARNING: To avoid corruption, rescan devices to make changes visible (pvscan --cache)
  LV   VG  Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root vg0 -wi------- <221.74g
  swap vg0 -wi-------   16.00g

该输出确实令人困惑,因为它显示 vg0-root 和 vg0-swap 都存在,但它们只是没有出现在 dev 下,包括在执行cryptsetup luksOpen /dev/nvme0n1p3 luks

我的猜测是我的 mkinitcpio.conf 缺少一个钩子,但这是我的 mkinitcpio.conf

HOOKS=(base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck)

我不认为这与 5 天前有什么不同,上次启动得很好。我今天早些时候确实跑过一次pacman -Syu,但我不确定如何找出这里到底出了什么问题。

mkinitcpio -p linux从 arch USB chroot 到驱动器时​​可以正常工作

编辑:

添加root=/dev/mapper/luks到我的GRUB_CMDLINE_LINUX,现在得到错误mount: /new_root: unknown filesystem type LVM2_member'

lvm vgchange -ay vg0

mount /dev/mapper/vg0-root /new_root

exit

允许我启动到我的系统,但这应该通过 lvm2 挂钩自动发生,并且在重新启动时,我必须再次执行此操作。

答案1

我做了什么来解决这个问题

通过将所有 busybox 挂钩更改为其 systemd 等效项,切换到 systemd initramfs,并更改 grubDEFAULT_CMDLINE_LINUX以反映 sd-encrypt 和 sd-lvm2 的语法。

然后我重置我的lvm.conf

sudo rm /etc/lvm/lvm.conf && sudo pacman -S lvm2

答案2

我遇到了类似的问题,逻辑卷在执行时显示为不活动lvscan

我之前所做的唯一更改是/etc/lvm/lvm.conf禁用use_lvmetad.

为了从这种情况中恢复,我运行了:

rm /etc/lvm/lvm.conf && pacman -S lvm2

但我认为值得尝试重新启用use_lvmetad和重新生成 ram 磁盘:

所以:

  1. 确保use_lvmetad=1/etc/lvm/lvm.conf
  2. 如果您要将选项更改为use_lvmetad=1,请重新生成 ramdisk:

    mkinitcpio -p linux
    

相关内容