initramfs - 錯誤:未找到設備“/dev/mapper/vg0-root”,跳過 fsck
啟動執行 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,並更改grub
DEFAULT_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 磁碟:所以:
- 確保
use_lvmetad=1
在/etc/lvm/lvm.conf
- 如果您將選項更改為
use_lvmetad=1
,請重新生成 ramdisk:mkinitcpio -p linux