-
-
Save Tamal/73e65bfb0e883e438310c5fe81c5de14 to your computer and use it in GitHub Desktop.
$ # 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 |
Once in chroot /mnt/root
I cant run any command like ls or cd (it says command not found). Similarly I can't run grub2-mkconfig since it gives an error saying command not found. Please help
i keep getting this "chroot: failed to run command '/bin/bash': no such file or directory" error and yes i did search for solutions on stackoverflow, stackexchange, askubuntu, etc. and i know the bash file (in my case) is at /mnt/fedora-37/root/bin/bash so i tried
chroot /mnt/fedora-37 /bin/bash
and
chroot /mnt/fedora-37 /mnt/fedora-37/root/bin/bash
please help
Thanks, your "loop" what was I was missing 👍
With "loop" I mean:
for dir in /dev /proc /sys /run; do mount --bind $dir /mnt/$dir ; done
adding other steps i had to do to get this working correctly:
adding root folder to fedora doc instructions:
# mount -o bind /dev /mnt/root/dev
# mount -o bind /proc /mnt/root/proc
# mount -o bind /sys /mnt/root/sys
# mount -o bind /run /mnt/root/run
On UEFI systems, bind the efivars directory and mount the EFI system partition (e.g. /dev/sda1).
# mount -o bind /sys/firmware/efi/efivars /mnt/root/sys/firmware/efi/efivars
# mount /dev/sda1 /mnt/boot/efi
chroot: failed to run command '/bin/bash': no such file or directory
chroot /mnt/root /usr/bin/bash
then continue official docs
dnf reinstall shim-* grub2-efi-* grub2-common
etc
Thank you so much! You saved my weekend
You just saved me a lot of trouble.
Special shout out to this command:
$ # Copy grubx64.efi from Live USB, if required
$ cp -p /boot/efi/EFI/grubx64.efi /mnt/boot/efi/EFI/fedora
An windows 11 update deleted this file.
When I run this command "$ for dir in /dev /proc /sys /run; do mount --bind $dir /mnt/$dir ; done" it said "do" command unknwon.
I pasted it to chatgpt It created more detailed version with if statement. (As I was in live cd, I lost all command and chats with ai)
I created sh file and pasted ai generated command and gave permission (chmod +x ), then executed with sudo, then followed rest and finally after 3 days of troubleshooting it finaly worked, I do not know how to thank you, you saved hours of my work.
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.
https://gist.github.com/janie314/8cb525aab4adc606c4fc09961d299d64