Grub Menu not update after dnf upgrade --refresh kernel 6.8.10 not visible but installed

I was facing Nvidia driver issue in kernel 6.8.9, then i upgraded to kernel 6.8.10, which somehow fixed driver issue on kernel 6.8.9, but grub is not showing kernel 6.8.10 for boot but showing removed kernel which should be removed after upgrading to latest kernel.but the kernel is showing in grub-customizer gui.

below are some images and outputs to understand the issue.

Note I already Tried

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

uname -r 
6.8.9-300.fc40.x86_64
dnf list installed kernel
Installed Packages
kernel.x86_64                                          6.8.9-300.fc40
rpm -q kernel-core
kernel-core-6.8.9-300.fc40.x86_64
kernel-core-6.8.10-300.fc40.x86_64
ls /boot
config-6.8.10-300.fc40.x86_64                            lost+found
config-6.8.9-300.fc40.x86_64                             symvers-6.8.10-300.fc40.x86_64.xz
efi                                                      symvers-6.8.9-300.fc40.x86_64.xz
grub2                                                    System.map-6.8.10-300.fc40.x86_64
initramfs-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e.img  System.map-6.8.9-300.fc40.x86_64
initramfs-6.8.10-300.fc40.x86_64.img                     vmlinuz-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e
initramfs-6.8.9-300.fc40.x86_64.img                      vmlinuz-6.8.10-300.fc40.x86_64
loader   
sudo ls /boot/loader/entries/
[sudo] password for sreyaz: 
5f391706b7cf43a0ba83c55ca1e9fd9e-0-rescue.conf
5f391706b7cf43a0ba83c55ca1e9fd9e-6.8.10-300.fc40.x86_64.conf
5f391706b7cf43a0ba83c55ca1e9fd9e-6.8.9-300.fc40.x86_64.conf
sudo cat /boot/efi/EFI/fedora/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###

### BEGIN /etc/grub.d/08_fallback_counting ###
insmod increment
# Check if boot_counter exists and boot_success=0 to activate this behaviour.
if [ -n "${boot_counter}" -a "${boot_success}" = "0" ]; then
  # if countdown has ended, choose to boot rollback deployment,
  # i.e. default=1 on OSTree-based systems.
  if  [ "${boot_counter}" = "0" -o "${boot_counter}" = "-1" ]; then
    set default=1
    set boot_counter=-1
  # otherwise decrement boot_counter
  else
    decrement boot_counter
  fi
  save_env boot_counter
fi
### END /etc/grub.d/08_fallback_counting ###

### BEGIN /etc/grub.d/10_linux_proxy ###
### END /etc/grub.d/10_linux_proxy ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-5036-7DAD' {
	insmod part_gpt
	insmod fat
	search --no-floppy --fs-uuid --set=root 5036-7DAD
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
# Other OS found, undo autohiding of menu unless menu_auto_hide=2
if [ "${orig_timeout_style}" -a "${menu_auto_hide}" != "2" ]; then
  set timeout_style=${orig_timeout_style}
  set timeout=${orig_timeout}
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/33_linux_proxy ###
menuentry "Fedora Linux (6.8.9-300.fc40.x86_64) 40 (Workstation Edition)" --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.8.9-300.fc40.x86_64-advanced-8317c641-2840-4a61-bfc2-905275a014fb' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	search --no-floppy --fs-uuid --set=root f14039e7-da71-4796-8724-f2c1b0a8ea82
	echo	'Loading Linux 6.8.9-300.fc40.x86_64 ...'
	linux	/vmlinuz-6.8.9-300.fc40.x86_64 root=UUID=8317c641-2840-4a61-bfc2-905275a014fb ro rootflags=subvol=root rhgb quiet pci=noaer rd.driver.blacklist=nouveau modprobe.blacklist=nouveau 
	echo	'Loading initial ramdisk ...'
	initrd	/initramfs-6.8.9-300.fc40.x86_64.img
}
menuentry "Fedora Linux (6.3.12-200.fc38.x86_64) 40 (Workstation Edition)" --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.3.12-200.fc38.x86_64-advanced-8317c641-2840-4a61-bfc2-905275a014fb' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod ext2
	search --no-floppy --fs-uuid --set=root f14039e7-da71-4796-8724-f2c1b0a8ea82
	echo	'Loading Linux 6.3.12-200.fc38.x86_64 ...'
	linux	/vmlinuz-6.3.12-200.fc38.x86_64 root=UUID=8317c641-2840-4a61-bfc2-905275a014fb ro rootflags=subvol=root rhgb quiet pci=noaer rd.driver.blacklist=nouveau modprobe.blacklist=nouveau 
	echo	'Loading initial ramdisk ...'
	initrd	/initramfs-6.3.12-200.fc38.x86_64.img
}
menuentry "Fedora Linux (0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e) 40 (Workstation Edition)" --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e-advanced-8317c641-2840-4a61-bfc2-905275a014fb' {
	load_video
	insmod gzio
	insmod part_gpt
	insmod ext2
	search --no-floppy --fs-uuid --set=root f14039e7-da71-4796-8724-f2c1b0a8ea82
	echo	'Loading Linux 0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e ...'
	linux	/vmlinuz-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e root=UUID=8317c641-2840-4a61-bfc2-905275a014fb ro rootflags=subvol=root rhgb quiet pci=noaer rd.driver.blacklist=nouveau modprobe.blacklist=nouveau 
	echo	'Loading initial ramdisk ...'
	initrd	/initramfs-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e.img
}





### END /etc/grub.d/33_linux_proxy ###

### BEGIN /etc/grub.d/34_reset_boot_success ###
# Hiding the menu is ok if last boot was ok or if this is a first boot attempt to boot the entry
if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
  set menu_hide_ok=1
else
  set menu_hide_ok=0 
fi
# Reset boot_indeterminate after a successful boot
if [ "${boot_success}" = "1" ] ; then
  set boot_indeterminate=0
# Avoid boot_indeterminate causing the menu to be hidden more than once
elif [ "${boot_indeterminate}" = "1" ]; then
  set boot_indeterminate=2
fi
# Reset boot_success for current boot 
set boot_success=0
save_env boot_success boot_indeterminate
### END /etc/grub.d/34_reset_boot_success ###

### BEGIN /etc/grub.d/35_menu_auto_hide ###
if [ x$feature_timeout_style = xy ] ; then
  if [ "${menu_show_once}" ]; then
    unset menu_show_once
    save_env menu_show_once
    set timeout_style=menu
    set timeout=60
  elif [ "${menu_auto_hide}" -a "${menu_hide_ok}" = "1" ]; then
    set orig_timeout_style=${timeout_style}
    set orig_timeout=${timeout}
    if [ "${fastboot}" = "1" ]; then
      # timeout_style=menu + timeout=0 avoids the countdown code keypress check
      set timeout_style=menu
      set timeout=0
    else
      set timeout_style=hidden
      set timeout=1
    fi
  fi
fi
### END /etc/grub.d/35_menu_auto_hide ###

### BEGIN /etc/grub.d/36_menu_show_once ###
if [ x$feature_timeout_style = xy ]; then
  if [ "${menu_show_once_timeout}" ]; then
    set timeout_style=menu
    set timeout="${menu_show_once_timeout}"
    unset menu_show_once_timeout
    save_env menu_show_once_timeout
  fi
fi
### END /etc/grub.d/36_menu_show_once ###

### BEGIN /etc/grub.d/37_linux_xen ###

### END /etc/grub.d/37_linux_xen ###

### BEGIN /etc/grub.d/38_ppc_terminfo ###
### END /etc/grub.d/38_ppc_terminfo ###

### BEGIN /etc/grub.d/39_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
	menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
		fwsetup
	}
fi
### END /etc/grub.d/39_uefi-firmware ###

### BEGIN /etc/grub.d/40_fwupd ###
### END /etc/grub.d/40_fwupd ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/42_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/42_custom ###

cat /etc/default/grub    
GRUB_TIMEOUT="10"
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT="saved"
GRUB_DISABLE_SUBMENU="true"
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rhgb quiet pci=noaer rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG="false"
GRUB_THEME="/boot/grub2/themes/CyberEXS/theme.txt"

sudo cat /etc/dnf/dnf.conf
# see `man dnf.conf` for defaults and possible options

[main]
gpgcheck=True
installonly_limit=2
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True

# Custom Setting FOr Fastdownload and parallel download
max_parallel_downloads=3
fastestmirror=True
defaultyes = True

You should change GRUB_ENABLE_BLSCFG="false" back to GRUB_DISABLE_RECOVERY="true" and run grub2-mkconfig again.

This shows that at some point the user has modified that file, probably with grub2-mkconfig.

The default /boot/efi/EFI/fedora/grub.cfg file is only a pointer that redirects grub to the actual grub.cfg file located at /boot/grub2/grub.cfg. The default file looks similar to this and the UUID in the first line there should be the UUID for the /boot partition on your system.

# cat /boot/efi/EFI/fedora/grub.cfg
search --no-floppy --fs-uuid --set=dev dfeb394f-2d5c-4ff4-a974-105d8551d0a4
set prefix=($dev)/grub2

export $prefix
configfile $prefix/grub.cfg

If that file has been modified then any kernel update will not be seen during boot and the boot remains static.

Recovery involves the following steps.

  1. sudo rm /boot/grub2/grub.cfg /boot/efi/EFI/fedora/grub.cfg
  2. sudo dnf reinstall grub2-common (which will replace both those files with the proper content.)
  3. Then reboot.

The correct way to to use grub2-mkconfig is to use it as sudo grub2-mkconfig -o /boot/grub2/grub.cfg so it only modifies the proper file.

1 Like

ok so i did the

sudo rm /boot/grub2/grub.cfg /boot/efi/EFI/fedora/grub.cf

sudo dnf reinstall grub2-common
and this and now i am directly booting into fedora 3.8.10 kernel and grub is not showing boot option during startup.

also

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
[sudo] password for sreyaz: 
Generating grub configuration file ...
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

all other kernel are seems missing
but
result.

rpm -q kernel-core                           
kernel-core-6.8.9-300.fc40.x86_64
kernel-core-6.8.10-300.fc40.x86_64

Did you do the change recommended by @vekruse ?

That is change ‘GRUB_ENABLE_BLSCFG=false’ to GRUB_ENABLE_BLSCFG=true then run the grub2-mkconfig command again.

On systems that are dual boot with windows the grub menu should automatically show but without the GRUB_ENABLE_BLSCFG=true that may not happen.

To see all kernels that are properly installed I use dnf list installed kernel.

You may only have 2 kernels installed depending upon how the system was installed or upgraded.

Well somehow faced a new issue after restarting
Now the grub loader is showing but only with windows kernel some how fedora kernel is not listed there now.

Are you still booting into fedora?

No but i can boot into windows grub is showing only windows


here are the partitions details now grub is showing but fedora kernel is missing i can only boot into windows

Now we need to attempt recovery by booting with a live install media USB device.

Please do so then let us know so we can work out the steps.

Ok I am booting into live media now

The first step will be to run lsblk -f so the detailed partitioning is shown.

here are the result

[liveuser@localhost-live ~]$ lsblk -f
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0
     squash 4.0                                                             
loop1
     ext4   1.0   Anaconda
                        2074eb84-624c-4790-83b6-8f3e4a82ae85                
├─live-rw
│    ext4   1.0   Anaconda
│                       2074eb84-624c-4790-83b6-8f3e4a82ae85    1.6G    79% /
└─live-base
     ext4   1.0   Anaconda
                        2074eb84-624c-4790-83b6-8f3e4a82ae85                
loop2
                                                                            
└─live-rw
     ext4   1.0   Anaconda
                        2074eb84-624c-4790-83b6-8f3e4a82ae85    1.6G    79% /
sda                                                                         
├─sda1
│    ntfs         Extra Space
│                       D4E02AD8E02AC09A                                    
├─sda2
│    ntfs         HDD softwears
│                       01D766AC506F79D0                                    
├─sda3
│    ntfs         Misc  AA005ABE005A9165                                    
└─sda4
     ntfs         Study 94083024083007AE                                    
sdb                                                                         
└─sdb1
     vfat   FAT32 FEDORA-WS-L
                        1C09-08A1                              12.6G    13% /run/initramfs/live
zram0
                                                                            [SWAP]
nvme0n1
                                                                            
├─nvme0n1p1
│    vfat   FAT32       5036-7DAD                                           
├─nvme0n1p2
│                                                                           
├─nvme0n1p3
│    ntfs         Windows and SSD
│                       E244370F4436E647                                    
├─nvme0n1p4
│    ntfs               01D9B0FDC06FFF00                                    
├─nvme0n1p5
│    ext4   1.0         f14039e7-da71-4796-8724-f2c1b0a8ea82                
└─nvme0n1p6
     btrfs        fedora_localhost-live
                        8317c641-2840-4a61-bfc2-905275a014fb 


still here ?

also i had timeshift installed, even though i dont know how to use that yet, if that helps

Ok, that looks like nvme0n1p1,p5,&p6 are the ones of concern for fedora.

Lets first mount the installed file systems.

  1. su
  2. mount -t btrfs -o subvol=root,compress=zstd:1 /dev/nvme0n1p6 /mnt
  3. for file in sys run proc dev sys/firmware/efi/efivars ; do mount -o bind /$file /mnt/$file ; done
  4. chroot /mnt
  5. mount -a
  6. now the mount command should show all the mounts just done.

let me know when that is accomplished

[liveuser@localhost-live ~]$ su
[root@localhost-live liveuser]# mount -t btrfs -o subvol=root,compress=zstd:1 /dev/nvme0n1p6 /mnt
[root@localhost-live liveuser]# for file in sys run proc dev ; do mount -o bind /$file /mnt/$file ; done
[root@localhost-live liveuser]# chroot /mnt
root@localhost-live:/# mount -a
root@localhost-live:/# mount
/dev/nvme0n1p6 on / type btrfs (rw,relatime,seclabel,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/root)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,size=1597432k,nr_inodes=819200,mode=755,inode64)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=989059,mode=755,inode64)
/dev/nvme0n1p5 on /boot type ext4 (rw,relatime,seclabel)
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro)
/dev/nvme0n1p6 on /home type btrfs (rw,relatime,seclabel,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/home)

That looks great.
Now to try the first repair steps
ls /boot
ls -l /boot/efi/EFI/fedora
dnf list installed kernel*
ls /boot/loader/entries/

results :

root@localhost-live:/# ls /boot
config-6.8.10-300.fc40.x86_64                            lost+found
config-6.8.9-300.fc40.x86_64                             symvers-6.8.10-300.fc40.x86_64.xz
efi                                                      symvers-6.8.9-300.fc40.x86_64.xz
grub2                                                    System.map-6.8.10-300.fc40.x86_64
initramfs-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e.img  System.map-6.8.9-300.fc40.x86_64
initramfs-6.8.10-300.fc40.x86_64.img                     vmlinuz-0-rescue-5f391706b7cf43a0ba83c55ca1e9fd9e
initramfs-6.8.9-300.fc40.x86_64.img                      vmlinuz-6.8.10-300.fc40.x86_64
loader                                                   vmlinuz-6.8.9-300.fc40.x86_64

root@localhost-live:/# ls -l /boot/efi/EFI/fedora
total 17629
-rwx------. 1 root root     112 Mar 19 15:00 BOOTIA32.CSV
-rwx------. 1 root root     110 Mar 19 15:00 BOOTX64.CSV
-rwx------. 1 root root 2960704 Apr 12 15:00 gcdia32.efi
-rwx------. 1 root root 3968320 Apr 12 15:00 gcdx64.efi
-rwx------. 1 root root    7843 Jul  8  2023 grib.cfg
-rwx------. 1 root root     159 Jun  1  2024 grub.cfg
-rwx------. 1 root root    7005 Jun  1  2024 grub.cfg.rpmsave
-rwx------. 1 root root 2960704 Apr 12 15:00 grubia32.efi
-rwx------. 1 root root 3968320 Apr 12 15:00 grubx64.efi
-rwx------. 1 root root  673992 Mar 19 15:00 mmia32.efi
-rwx------. 1 root root  848080 Mar 19 15:00 mmx64.efi
-rwx------. 1 root root  949424 Mar 19 15:00 shim.efi
-rwx------. 1 root root  747681 Mar 19 15:00 shimia32.efi
-rwx------. 1 root root  949424 Mar 19 15:00 shimx64.efi

root@localhost-live:/#  dnf list installed kernel*
Installed Packages
kernel.x86_64                                                         6.8.9-300.fc40                                             @updates
kernel-core.x86_64                                                    6.8.9-300.fc40                                             @updates
kernel-core.x86_64                                                    6.8.10-300.fc40                                            @updates
kernel-devel.x86_64                                                   6.8.9-300.fc40                                             @updates
kernel-devel.x86_64                                                   6.8.10-300.fc40                                            @updates
kernel-devel-matched.x86_64                                           6.8.10-300.fc40                                            @updates
kernel-headers.x86_64                                                 6.8.3-300.fc40                                             @fedora 
kernel-modules.x86_64                                                 6.8.9-300.fc40                                             @updates
kernel-modules.x86_64                                                 6.8.10-300.fc40                                            @updates
kernel-modules-core.x86_64                                            6.8.9-300.fc40                                             @updates
kernel-modules-core.x86_64                                            6.8.10-300.fc40                                            @updates
kernel-modules-extra.x86_64                                           6.8.9-300.fc40                                             @updates
kernel-modules-extra.x86_64                                           6.8.10-300.fc40                                            @updates
kernel-srpm-macros.noarch                                             1.0-23.fc40                                                @fedora 
root@localhost-live:/#  ls /boot/loader/entries/
5f391706b7cf43a0ba83c55ca1e9fd9e-0-rescue.conf                5f391706b7cf43a0ba83c55ca1e9fd9e-6.8.9-300.fc40.x86_64.conf
5f391706b7cf43a0ba83c55ca1e9fd9e-6.8.10-300.fc40.x86_64.conf

I see one missing kernel package in that listing.
Please try dnf reinstall kernel-6.8.9
That should be reinstalled since it is currently missing.
After doing that then please run dnf reinstall kernel* to reinstall all the current kernel packages. Since you have nvidia installed it may require a wait of 5 minutes or more for the drivers to be rebuilt.

Finally repeat the grub2-mkconfig -o /boot/grub2/grub.cfg command.

Once that has completed then exit with exit and try rebooting to the normal installed OS.