Problem with update to fedora 30

Hello,

After the update from fedora 29 to fedora 30 by the command line(dnf…) method,

my PC does not boot anymore, it gives me the following grub message:

“minimal BASH like line editing is supported"

How to fix this problem ?

Best Regards

myagfedora

Hi myagfedora

This looks like grub has dumped you to the command prompt.

I presume you see this grub prompt as well:
grub>

The most likely cause is that there is an invalid or missing grub.cfg file.
That’s the file that tells grub the entries to display on its menu - so if it’s missing, grub will give you just a command prompt.

There are two ways to solve it. The details for both differ a bit depending on whether you have EFI or not, but both depend on there being a file called grub.cfg.rpmsave, which is the file under which the upgrade saved the previous grub.cfg.
Note that quotes (as in say ‘ls’) are NOT to be typed.

ONE

The first way involves booting directly via the grub command prompt.

Non-EFI

Type ‘ls’ and you get something like this:

grub> ls
(hd0) (hd0,msdos2) (hd0,msdos1)

Type ‘ls (hd0,msdos1)/’ hopefully you’ll see a listing of your /boot directory, so vmlinuz… initramfs… etc. If not, run through the other partitions ‘ls (hd0,msdos2)’, etc until you find this directory.

I’ll assume it’s (hd0,msdos1), amend the following as necessary. Now ‘ls (msdos1)/grub2’ and you should see your /boot/grub2 directory, so grub.cfg (assuming it’s invalid and not missing), grub.cfg.rpmsave, etc.

So we’ve found the grub.cfg.rpmsave and can get grub to load it and therefore show the menu that we had before the upggrade.

Now ‘configfile (hd0,msdos1)/grub2/grub.cfg.rpmsave’ and pressing enter, up will pop the menu and hopefully you can boot the PC.

EFI

Same as non-EFI except that this time the partitions will be called (hd0,gpt1) etc - rather than (hd0,msdos1) etc

And instead of searching for a directory containing vmlinuz etc, we’re searching for a partition that has an EFI directory (that’s EFI in capital letters).

Assuming ‘ls (hd0,gpt1)/’ shows the EFI directory, use ‘ls (hd0,gpt1)/EFI/fedora’ and you should find the grub.cf.rpmsave as before.
Use ‘configfile (hd0,gpt1)/EFI/fedora/grub.cfg.rpmsave’ to get the old menu.

TWO

The second way involves booting a live USB (or live CD) and finding the grub.cfg.rpmsave and copying it to grub.cfg so that grub will boot that old menu as in the first method.

Once the live USB/CD is booted, get up a terminal and log in as root (su -).
Use ‘fdisk -l’ to work out the the boot partition or EFI partition. It’s usually /dev/sda1 but it can vary.

Assuming it’s /dev/sda1,

mount /dev/sda1 /mnt

Now for non-EFI:
cd /mnt/grub2
And for EFI:
cd /mnt/EFI/fedora

mv grub.cfg grub.cfg.new [assuming it’s not missing - it’s probably not worth saving but to be on the safe side]
cp grub.cfg.rpmsave grub.cfg

Now you should be able to boot the machine.

PERMANENTLY SOLVING IT

Once you’re booted into the PC, you’ll need to solve the problem by regenerating the grub.cfg. You need to be root to do this.

Non-EFI:
grub2-mkconfig -o /boot/grub2/grub.cfg

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

1 Like

Hi jonathans,
Thanks for your answer.
Obviously my grub.cfg is corrupted for some strange reason.
I could find a grub.cfg and even a grub.cfg.rpmsave with the following command:
grub> ls (hdo,msdos1)/grub2
Then I could boot my PC with the following command:
grub> configfile (hd0,msdos1)/grub2/grub.cfg.rpmsave
Then I wanted to solve the problem permanently but it did not work.
As root I used the famous grub2-mkconfig:
grub2-mkconfig -o /boot/grub2/grub.cfg
It built a new grub.cfg but I still have the same problem.
Maybe the new grub.cfg created is still corrupted.
do you want me to send you my grub.cfg ?
Best regards.

myagfedora

Hi myagfedora

Fedora 30 changed the boot method of Grub so that it uses the Bootloader Spec (BLS). You can read about it on the Fedora Magazine here:

I noticed after my reply that this issue is listed on the common Fedora 30 bugs page:

https://fedoraproject.org/wiki/Common_F30_bugs#GRUB_boot_menu_is_not_populated_after_an_upgrade

(Notice that you can usually get away with just ‘configfile /grub2/grub.cfg.rpmsave’, without the (hdo,msdos1).)

So I’d first check that your kernel files are listed:
ls -l /boot/loader/entries

The entries look something like:
de90851cc18b488aa6aad83c40ada5b2-5.0.16-300.fc30.x86_64.conf
where the first long string is specific to your PC.

If the entries look okay, reinstall grub (with grub2-install /dev/X) as mentioned on the common bugs page. Since your grub.cfg is on (hdo,msdos1), the command should be:
grub2-install /dev/sda
BUT CHECK first using ‘fdisk -l’ or ‘lsblk --fs’ that /dev/sda is correct.

See if that solves it.

If not, you can revert to the old style of grub.cfg by editing /etc/default/grub and changing the line:
GRUB_ENABLE_BLSCFG=true
to
GRUB_ENABLE_BLSCFG=false.
which means Grub won’t use the new BLS method.

After that edit, repeat:
grub2-mkconfig -o /boot/grub2/grub.cfg
and grub.cfg will be the old format, the same format as grub.cfg.rpmsave, which you know works.

Welcome to the community @jonathans @myagfedora.

Could you please edit your posts and use the formatting tools to make them more readable when you have a minute to spare. If you’ve not had a chance yet, the introductory posts in #start-here will give you a brief summary of how to do so, among other things related to Discourse. :+1:

Hello,
I have just checked my kernel entries with the following command:
ls -l /boot/loader/entries

and it sems to be empty.
I think I should first solve this problem ( how do I solve it ?).

Than I can revert to the old style of grub.cfg by editing /etc/default/grub and changing the line:
GRUB_ENABLE_BLSCFG=true
to
GRUB_ENABLE_BLSCFG=false.

Best Regards.

myagfedora

Try running:

grub2-switch-to-blscfg

as root, of course.

1 Like

Hello,
Thanks for your help.

grub2-switch-to-blscfg solved the problem
in /boot/loader/entries (now I have some entries)

but it just starts booting till it 's just dumping a bug report in order to boot, I had to use:

grub> configfile /grub2/grub.cfg.bak

then I updated my system from FC29 to FC30 with the following commands:

dnf -y update --refresh
dnf -y install dnf-plugin-system-upgrade
dnf -y system-upgrade download --refresh --releasever=30
dnf -y system-upgrade reboot

After the update same problem as at the begining,
I mean giving me this message:

minimal BASH like line editing is supported"

What really solve the problem was reverting to the old style of
grub.cfg by editing /etc/default/grub and changing the line:

GRUB_ENABLE_BLSCFG=true

to

GRUB_ENABLE_BLSCFG=false

then

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

I think we can close the post.

Best Regards.
myagfedora

1 Like