this post was submitted on 27 Jul 2024
3 points (100.0% liked)

Linux 101 stuff. Questions are encouraged, noobs are welcome!

1198 readers
1 users here now

Linux introductions, tips and tutorials. Questions are encouraged. Any distro, any platform! Explicitly noob-friendly.

founded 2 years ago
MODERATORS
 

Well, wasn't expecting this...

I rebooted my laptop, and it keeps booting to the grub shell.

I was going to arch-chroot into it and update grub, and rebuild intarimfs, however, I guess I don't know how to with BTRFS subvolumes that are LUKS encrypted.

I would appreciate any help, and am willing to learn.

I could even jump on a call of some kind if anyone has time to help...


Arch

BTRFS encrypted with LUKS (No LVM)

GRUB


I live booted into the live usb

cryptsetup luksOpen /dev/nvme0n1p2 arch
mount /dev/mapper/arch /mnt
arch-chroot /mnt

Output:

mount: /mnt/proc: mount point does not exist
dmesg(1) may have more information after failed mount system call.
=> ERROR: failed to setup chroot /mnt

So I browsed /mnt and it lists subvolumes. However, I am not sure how to go about arch-chrooting into this.

top 2 comments
sorted by: hot top controversial new old
[โ€“] Hellmo_Luciferrari@lemm.ee 0 points 8 months ago (1 children)

I cannot take credit for finding the solution. Someone on a discord chat I found was able to help me. The fix:

1 Open a terminal:

Unlock the LUKS partition:

cryptsetup luksOpen /dev/nvme0n1p2 arch

2 Mount the BTRFS filesystem: Since BTRFS has subvolumes, you need to mount the correct subvolume:

mount -o subvol=@ /dev/mapper/arch /mnt

3 Mount the necessary virtual filesystems:


mount --types proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev

4 Bind the boot partition (if separate): If you have a separate boot partition, you need to mount it too:

mount /dev/nvme0n1p1 /mnt/boot

5 Chroot into your system:

arch-chroot /mnt

6 Fix your fstab: Ensure that your /etc/fstab file inside the chroot environment is correctly set up. You might need to generate a new one using genfstab:

genfstab -U /mnt >> /mnt/etc/fstab

7 Update GRUB: Reinstall and update GRUB to ensure it is correctly installed:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

Exit the chroot environment:

exit

Unmount all the filesystems:

bash

umount -R /mnt
cryptsetup luksClose arch

8 Reboot:

reboot
[โ€“] Rooki@lemmy.world -1 points 8 months ago

Thanks for sharing the solution!