启动运行 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 磁盘:
所以:
- 确保
use_lvmetad=1
在/etc/lvm/lvm.conf
如果您要将选项更改为
use_lvmetad=1
,请重新生成 ramdisk:mkinitcpio -p linux