Chroot to Reinstall GRUB

Ezra Linux

mount

ext4

sudo mkdir -p /mnt/chroot
sudo mount /dev/sdb3 /mnt/chroot

sudo mkdir -p /mnt/chroot/boot
sudo mount /dev/sdb2 /mnt/chroot/boot/efi

sudo mkdir -p /mnt/chroot/boot/efi
sudo mount /dev/sdb1 /mnt/chroot/boot/efi

for i in /sys /proc /run /dev; do sudo mount --rbind "$i" "/mnt/chroot$i"; done

sudo chroot /mnt/chroot

btrfs

Check subvolume IDs:

sudo mkdir -p /mnt/chroot
sudo mount /dev/sdb3 /mnt/chroot

sudo btrfs subvolume list /mnt/chroot

You should get something like this:

ID 256 gen 1558 top level 5 path root
ID 257 gen 1558 top level 5 path home

What we need here is root, now continue:

# sudo mkdir -p /mnt/chroot
sudo mount -o subvol=root /dev/sdb3 /mnt/chroot

sudo mkdir -p /mnt/chroot/boot
sudo mount /dev/sdb2 /mnt/chroot/boot/efi

sudo mkdir -p /mnt/chroot/boot/efi
sudo mount /dev/sdb1 /mnt/chroot/boot/efi

for i in /sys /proc /run /dev; do sudo mount --rbind "$i" "/mnt/chroot$i"; done

sudo chroot /mnt/chroot

chroot

Inside chroot:

debian/ubuntu:

grub-install --efi-directory=/boot/efi --bootloader-id=YOUR_BOOTLOADER_ID --recheck
update-grub
exit

fedora:

dnf install grub2-efi grub2-efi-modules shim
grub2-install --efi-directory=/boot/efi --bootloader-id=YOUR_BOOTLOADER_ID --recheck
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"
exit

umount

for i in /sys /proc /run /dev; do sudo umount "/mnt/chroot$i"; done
sudo umount "/mnt/chroot/boot/efi"
sudo umount "/mnt/chroot/boot"
sudo umount "/mnt/chroot"