Arch Linux重启后卡在GRUB Shell,arch-chroot失败求助
Arch Linux重启后卡在GRUB Shell,arch-chroot失败求助
兄弟,我之前也碰到过类似的BTRFS加密+GRUB的坑,你现在的问题核心是挂载加密卷时没指定BTRFS子卷,加上fstab为空导致chroot时虚拟文件系统挂载失败,咱们一步步来搞定:
第一步:正确挂载加密BTRFS卷
先在Live USB环境下重新操作,别直接挂载整个加密卷,要指定根子卷:
- 先打开LUKS加密卷:
cryptsetup luksOpen /dev/nvme0n1p2 arch - 查看你的BTRFS子卷列表,确认根卷的名字(一般默认是
@):
输出里类似btrfs subvolume list /dev/mapper/archID 256 gen ... top level 5 path @的就是根子卷 - 挂载根子卷到
/mnt:mount -o subvol=@ /dev/mapper/arch /mnt - 如果有
@home这类其他子卷,也要对应挂载:mkdir -p /mnt/home mount -o subvol=@home /dev/mapper/arch /mnt/home
第二步:挂载虚拟文件系统(解决chroot失败的问题)
现在需要挂载proc、sys、dev这些系统必需的虚拟文件系统,不然chroot会报错:
mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts devpts /mnt/dev/pts
第三步:进入chroot环境
现在再执行arch-chroot就能成功了:
arch-chroot /mnt
第四步:修复空的fstab
既然你的fstab是空的,咱们重新生成它:
- 先获取设备UUID:
找到blkid/dev/nvme0n1p2的UUID=字段(这是LUKS加密卷的UUID) - 编辑
/etc/fstab,添加类似以下内容(根据你的子卷名调整):
注意把# LUKS加密卷映射 UUID=你的LUKS卷UUID /dev/mapper/arch crypt defaults 0 0 # 根文件系统 /dev/mapper/arch / btrfs defaults,subvol=@ 0 1 # Home子卷(如果有的话) /dev/mapper/arch /home btrfs defaults,subvol=@home 0 2你的LUKS卷UUID替换成实际的UUID值
第五步:修复GRUB引导
最后要重新安装GRUB并生成配置,避免重启后再卡GRUB:
- 如果是UEFI系统,先挂载EFI分区(假设是
/dev/nvme0n1p1,BIOS系统跳过这步):mkdir -p /efi mount /dev/nvme0n1p1 /efi - 安装GRUB:
- UEFI系统:
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB - BIOS系统:
grub-install /dev/nvme0n1
- UEFI系统:
- 生成GRUB配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
最后一步:退出并重启
完成后退出chroot,卸载所有挂载,然后重启:
exit # 按顺序卸载挂载点 umount /mnt/home /mnt/proc /mnt/sys /mnt/dev/pts /mnt/dev /mnt/efi /mnt # 关闭加密卷 cryptsetup luksClose arch # 重启 reboot
这样应该就能正常进入系统了,要是子卷名和默认不一样,记得对应调整就行。
备注:内容来源于stack exchange,提问作者hellmo_luciferrari
相关产品推荐
相关产品推荐

