Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Setting up chroot from a live image in Fedora. Regenerate grub2 for Fedora.
$ # Use Live CD to boot
$ sudo su # Switch to root
$ fdisk -l # Get names of root, boot & EFI partition names. you can also use blkid
$ mount /dev/mapper/fedora_localhost--live-root /mnt # mount root partition
$ cat /mnt/etc/fedora-release
Fedora release 31 (Thirty One)
$ mount /dev/nvme0n1p2 /mnt/boot # mount boot partition
$ mount /dev/nvme0n1p1 /mnt/boot/efi # mount EFI partition
# Note: If you are not able to mount EFI partition ('Input/Output error'),
# You may have to repair ESP file system or format ESP.
# fsck.vfat /dev/nvme0n1p1
# mkfs.vfat /dev/nvme0n1p1
# If formatted then we may have to update UUID at /etc/fstab
$ ls /mnt/boot/efi # should show all OS names under EFI
$ # mount the virtual filesystems that the system uses to communicate with processes and devices
$ for dir in /dev /proc /sys /run; do mount --bind $dir /mnt/$dir ; done
$ # enter chroot
$ chroot /mnt
$ # Now you can do all the work e.g. fix grub
$ dnf reinstall grub2-efi shim -y
$ grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg # Regenerate grub2
$ # Check /etc/fstab UUID, update if necessary [Hint: lsblk -f would show partition UUIDs]
$ # All things done; now exit from chroot
$ exit
$ # Check BIOS boot details [ Note: this command won't work if you are inside chroot. ]
$ efibootmgr -v
$ # In case you need to create new entry in BIOS
$ efibootmgr -c -d /dev/nvme0n1p1 -p 1 -L Fedora -l '\EFI\fedora\grubx64.efi' # or, shimx64.efi
$ # To delete entry from efibootmgr use: efibootmgr -b <#entry> -B
$ # Copy grubx64.efi from Live USB, if required
$ cp -p /boot/efi/EFI/grubx64.efi /mnt/boot/efi/EFI/fedora
$ exit
$ # Now you can reboot
Copy link

supercoder3000 commented May 1, 2021

Thanks! The entry about the efibootmgr helped me to figure out what went wrong with my fedora 34 installation.

Copy link

jimmysawczuk commented Jul 5, 2021

This was exactly what I needed, thank you!

Copy link

falstaff1288 commented Feb 5, 2022

Very useful!

Copy link

tobikris commented Feb 18, 2022

Thanks for this writeup - for my usecase I needed to interleave this with some commands to decrypt my luks partition. I documented this in my fork:

Copy link

janie314 commented Jul 17, 2022

Hi! Thanks for a great Bash script. I did find that some directory paths had to be adjusted for one line to work with a current Fedora live USB. I forked and adjusted slightly if you're interested in looking and possibly merging in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment