Arch-Linux

initramfs - 錯誤:未找到設備“/dev/mapper/vg0-root”,跳過 fsck

  • December 14, 2018

啟動執行 Arch 的 Dell XPS 15 9560 後,由於找不到我的設備,我被放入緊急外殼

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從拱形 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 掛鉤自動發生,並且在重新啟動時,我必須再次執行此操作。

我做了什麼來解決這個問題

通過將所有busybox掛鉤更改為它們的systemd等效項來切換到systemd initramfs,並更改grubDEFAULT_CMDLINE_LINUX以反映sd-encrypt和sd-lvm2的語法。

然後我重置了我的 lvm.conf

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

我有一個類似的問題,邏輯卷在執行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

引用自:https://unix.stackexchange.com/questions/472489