Grub doesn't detect Fedora after installing a grub theme

This also is correct, provided this is the only boot config you have written.
How did you install the theme?
Did you directly edid something under /boot/ ?

You could use your Live System to save your Data, make a backup of your old home directory and install fresh.

Maybe this guide will help you installing a new boot loader:

But before trying anything, I’d backup my data.
See little how-to below

The backup could work like this:

Here the commands in case you want to backup data:

# First switch to root
sudo su -

# Show file system to find your disk to backup
lsblk -f

# Mount the file system, in my case it's the btrfs volume /dev/vda3
mount  /dev/vda3  /mnt/

# Check what's there
ls -ahl /mnt/

# Now copy your data to an external disk
cp -vr  /mnt/home/  /some/external/disk/

# or use rsync https://linuxhint.com/rsync_copy_files/

Then you may want to try to fix your boot process first or try a new install.

calimari

huben has some good advice but I’d also check your /boot/loader/entries folder - that has one .conf file for each linux kernel. In the grub.cfg, they are loaded by the

insmod blscfg

command.
Other OSes are specified in the old-fashioned way by being referenced directly from grub.cfg. So if the theme has screwed your /boot/loader/entries directory, you’d see exactly your symptoms.

If that directory and its files are missing, hopefully, you can find and replace those files. If not, try a dnf reinstall of the latest kernel via the live USB route to access your linux. That should recreate the .conf file for that kernel. Make sure that that directory exists before the kernel reinstall - and check it afterwards for the .conf file.

I would guess that sda1 and sda7 in your post #16 are both efi.

I would also venture that sda1 was the windows efi partition and sda7 was created during the linux install with grub for linux in that partiiton.

Now your issue is the grub theme you installed was placed on the windows efi partition (sda1) and you cannot access the grub partition for linux (sda7).

This type problem crops up when you have more than one efi partition especially when you install 3rd party software (the grub theme).

Now you need to go through the recovery steps to merge the boot loaders from both efi partitions and delete the extra partition so it does not interfere again.

A quick google search for “how to merge 2 efi partitions in fedora” gives several methods to solve this issue.

GitHub - vinceliuice/grub2-themes: Modern Design theme for Grub2 here’s what I used to install the theme, the guide was provided in the README.md file. Didn’t edit anything at all. And yeah, thanks for the advice, I’ll back up my files.

/boot/loader/entries/ exists, and there are 3 files in there, 1 more than in the live usb /boot/loader/entries/ directory.

Yes, as computersavvy and Jonathan S said, there are several scenarios possible.

You have two efi partitions. This usually works fine. However since you installed a custom theme, something went wrong and you may have installed grub a second time into the windows efi partition (sda1). I believe I’ve seen a setup where you could select several Linux Bootloader in the Bios/UEFI-Setup. You can verify if you also have several listed and try them.

The files you found under /etc/grub2.cfg and /etc/grub2-efi.cfg are generated from templates for the actual written bootloader. It is composed of files in /etc/grub.d/ and /etc/default/grub.
The bootloader is written to /boot/grub2/.

There are several files written that after all should point your sd8

sda8      btrfs    fedora_fedora-80xh     1339ff31-2770-40c5-8983-e26f24c962ce

see “/boot/efi/EFI/fedora/grub.cfg” for example.
However it is not recommended to manually edit there.
After you backed up, you can try however.

Jonathan S advice seems promising.
You also can try to merge them.

However I belive what bootloader is being taken should be set in your BIOS/UEFI Settings.

I tried searching for that, but there seems to be no clear answer. I tried a few different guides, but neither seemed to work.

I’ll try that, thanks. Honestly, if that doesn’t work, I’ll probably just end up reinstalling. I’ve taken a backup of everything important I have, and that should probably it. I’m no expert, and I might end up accidentally breaking something important while editing those files. Thanks anyways for all your help though :slight_smile:

When booted to fedora you can use efibootmgr to see the uefi bios boot order. It can also be used to modify the boot order and default boot loader.

I also looked at the install.sh that you used to install the grub theme and there are errors in it.
The way it was written works well for the older grub.cfg location used for Fedora 33 and earlier and runs

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

if that file exists, which is not correct for Fedora 34 and later.
Fedora 34 places the grub.cfg file at /boot/grub2/grub.cfg.

A clean new install of F34 does not create /boot/efi/EFI/fedora/grub.cfg so the theme install will work properly, but upgrading to F34 from F33 or earlier will leave the existing grub.cfg file at that location which then causes the error.

If the file grub.cfg already exists under the /boot/efi/ path it will cause the install of your theme to improperly place the updated grub.cfg file in that location rather than in /boot/grub2/ .

4 Likes

Nice find :+1:

JV

I agree with huben - that is a good catch. :slight_smile:

calimari

Above, you posted the contents of /boot/grub2/grub.cfg, which looks correct, but you appear to be loading (as JV says) /boot/efi/EFI/fedora/grub.cfg.

You could try using the ‘configfile’ command of grub to load your /boot/grub2/grub.cfg.
To run the grub configfile command, press c to go to the grub commandline and type:

configfile /grub2/grub.cfg

Note that there is no preceding /boot - that is implicit.

If that loads the grub menu as it was, then you’re in luck - just load Fedora, back up your /boot/grub2.grub.cfg (to say /boot/grub2/grub.cfg.bak) and run:

grub2-mkconfig -o /boot/grub2/grub.cfg

If desperate, you can always use configfile to load the .bak file.

This trick has saved my bacon on a production server. :wink:

I installed a grub2 theme yesterday and on rebooting, grub wasn’t detecting Fedora. :slightly_smiling_face:

Did end up installing MX Linux because someone recommended it :frowning: @jerrymdaniel could use this though

Well, that seems to be fixed now.

I run into the same issue, fedora boot entry disappeared and only windows boot menu shows up, it’s probably caused by the grub theme installation. I tried grub configfile <grub config on disk> and grub2-mkconfig to re-regenerate the config file, however they don’t work for me. I’m providing my steps how I recovered my fedora boot entry for your reference:

  1. In grub boot menu, press “c” to enter grub command line:
  2. List disk partitions with ls command
grub> ls
hd2,gpt1 hd2,gpt2 ...
  1. Find out the root partition by check the partitions one by one, for example, my root partition is (hd2,gpt2).
grub> ls (hd2,gpt2)
root
  1. Now you should be able to find out the kernel boot opts on your root partition.
grub> cat (hd2,gpt2)/root/etc/grub2.cfg  # or other grub2 config files in your root partition
   ...
   set kernelopts="root=UUID=... ro rootflags=subvol=root"
   ...
  1. Now use the kernel boot opts to boot up your fedora by manual.
grub> linux (hd2,gpt6)/root/boot/vmlinuz-5.14.xxxx root=UUID=... ro rootflags=subvol=root
grub> initrd (hd2,gpt6)/root/boot/initramfs-5.14.xxxx
grub> boot
  1. Now you enter your fedora os, you can try grub2-mkconfig or other possible solutions, these don’t work for me, and seems I recovered my fedora boot entry by reinstalling the grub2 and shim rpms, because I tried many thing, I’m not pretty sure it was fixed by the reinstalling of grub2 and shim rpms, but it worth a try if everything else don’t work for you.
$ sudo dnf reinstall grub* shim*
 Package                                  
========================
Reinstalling:
 grub2-common        
 grub2-efi-ia32
 grub2-efi-ia32-cdboot
 grub2-efi-x64           
 grub2-efi-x64-cdboot    
 grub2-efi-x64-modules   
 grub2-pc               
 grub2-pc-modules
 grub2-tools
 grub2-tools-efi         
 grub2-tools-extra       
 grub2-tools-minimal     
 grubby                  
 shim-ia32       
 shim-x64

Note: grub2-efi-x64-modules is probably an important rpm need to be installed and reinstall it, so it’s better that you have all these rpms installed and then reinstall them.
7. After reinstalling the grub and shim rpms, reboot, you should see your fedora boot entries again.

2 Likes

Hi everyone, I have the same issue, I added a string on GRUB_CMDLINE_LINUX_DEFAULT for fixing my keyboard
And the Fedora entry has disappeared.
I updated the grub configuration using sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg, is this command correct?
I’m going to try and see if I can solve it with the solution above.

Try this
sudo grub2-mkconfig -o /etc/grub2.cfg

More info
https://fedoraproject.org/wiki/GRUB_2#Updating_the_GRUB_configuration_file

Ok, thank you.
And how can I restore the original /boot/efi/EFI/fedora/grub.cfg file? Because I made some mess.

delete /boot/efi/EFI/fedora/grub.cfg then run sudo dnf reinstall grub2-efi

1 Like