I recently posted about this and found a temporary solution. My problem now is every time I upgrade my system either with GUI or dnf upgrade
I need to boot using grub terminal into the rescue kernel and re-generate my grub menu. How can I make this fix hold permanently?
Do you have the os-prober
package installed? I believe it should be if you are dual-booting.
Ideally, from your original post, you shouldnât need to disable BLS like you did, since the entries donât appear in grub.cfg when BLS is enabled, they are found under /boot/loader/entries.
I do have os-prober, should I re-enable BLS?
If it was me, I would keep it as the OS intended, which is BLS enabled. Then once itâs re-enabled check the files in the directory /boot/loader/entries
and youâll see everything inside these relating to booting your systems.
Once youâve removed the entry that you added to disable BLS, then run the command below:
grub2-mkconfig --update-bls-cmdline -o /boot/grub2/grub.cfg
it may or may not fix your problem, but at least you will be the default system configuration which pretty much everyone will be using so makes it easier to fix in the future than diverging by disabling it.
Thanks for the suggestion, but --update-bls-cmdline
is not an option on grub2-mkconfig for me. Is this a Rocky 9 option? I am on 8.10.
Ah yeah, it is most likely an EL9 thing, so yeah you can use the command without that part. So:
grub2-mkconfig -o /boot/grub2/grub.cfg
no need to set the BLS entry to true in the config file that you added to, just completely remove the line.
@Moksh has not confirmed whether the system boots with UEFI or with legacy mode.
On Rocky 8 that determines the proper location of the grub.cfg
In principle, remove/install of a kernel should merely modify related entry (whether BLS file or lines in grub.cfg) and not erase all existing entries. Furthermore, package transactions that do not include kernel packages should not affect entries at all.
The system boots UEFI
In that case:
grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
The UEFI (presumably) loads /boot/efi/EFI/rocky/grubx64.efi
which in turn reads /boot/efi/EFI/rocky/grub.cfg
Since the /boot/efi/EFI/rocky/grub.cfg in Rocky 8 is not a
âstub that includes /boot/grub2/grub.cfgâ, nothing reads the /boot/grub2/grub.cfg.
@jlehtone command for grub is correct, mine was from EL9. So use his to generate it. You can also find out by looking under /etc/ and there will be symlinks to the particular grub file that he mentioned. Either grub2-efi.cfg or grub2.cfg depending on whether UEFI or BIOSBOOT is used.
Thanks for the command @jlehtone but the main issue Iâm having is not necessarily in running that command it is that when I update the grub menu empties. Maybe Iâm not understanding what youâre asking me to do.
I do have grub2.cfg
[moksh@resolve etc]$ ls -l ./grub2.cfg
lrwxrwxrwx. 1 root root 22 Apr 8 08:13 ./grub2.cfg -> ../boot/grub2/grub.cfg
There should be two symlinks:
# symlinks -v /etc | grep grub
other_fs: /etc/grub2-efi.cfg -> ../boot/efi/EFI/almalinux/grub.cfg
dangling: /etc/grub2.cfg -> ../boot/grub2/grub.cfg
Note how one of the links is dangling â my system does not have file /boot/grub2/grub.cfg
That is by design; only one of the links should be valid on el8 system.
The first question is, does that command ensure that there are entries for each installed kernel?
Did you check (without reboot) after running the grub2-mkconfig that there are expected files with expected content?
Did you check before&after dnf up
which files were modified/added/removed?
ls -ltr /boot /boot/grub2 /boot/efi/EFI/rocky /boot/loader/entries
For Rocky9 or other EL9âs this is true, however for EL8 or Rocky 8 there is either one or the other:
[root@rocky8 etc]# ls -lha | grep grub
lrwxrwxrwx. 1 root root 30 Apr 8 17:13 grub2-efi.cfg -> ../boot/efi/EFI/rocky/grub.cfg
drwx------. 2 root root 4.0K Apr 11 09:48 grub.d
so depending on how system was installed with BIOS or UEFI, you get either the symlink to EFI or BIOS grub config. That said, I could probably install grub2-pc package and get the symlink to the other one.
yes it would be good to see the output of this command. It would even be nicer to see the contents of grub2.cfg posted because as already explained, some stuff appears in grub2.cfg and the remainder under /boot/loader/entries.
On AlmaLinux 8 the âgrub2-pcâ is required by kernel-core and therefore always installed (even on UEFI system). Rocky seems smarter on this detail.
Before running dnf upgrade
[moksh@resolve ~]$ symlinks -v /etc | grep grub
dangling: /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[moksh@resolve ~]$ cd /etc
[moksh@resolve etc]$ ls -lha | grep grub
lrwxrwxrwx. 1 root root 22 Apr 8 08:13 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-------. 1 root root 7.1K Apr 7 19:47 grub.cfg
drwx------. 2 root root 4.0K Apr 14 00:10 grub.d
[moksh@resolve etc]$ sudo ls -ltr /boot /boot/grub2 /boot/efi/EFI/rocky /boot/loader/entries
/boot:
total 476688
drwxr-xr-x. 3 root root 17 Mar 4 11:42 efi
drwxr-xr-x. 3 root root 21 Mar 4 11:43 loader
-rwxr-xr-x. 1 root root 10881352 Mar 4 11:45 vmlinuz-0-rescue-82a24f939aa14e6da0b496ef749bc8bd
-rw-------. 1 root root 131214050 Mar 4 11:45 initramfs-0-rescue-82a24f939aa14e6da0b496ef749bc8bd.img
-rw-------. 1 root root 52546535 Mar 4 12:32 initramfs-4.18.0-553.40.1.el8_10.x86_64.img.backup
-rw-------. 1 root root 4510017 Mar 10 04:43 System.map-4.18.0-553.44.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Mar 10 04:43 config-4.18.0-553.44.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Mar 10 04:43 vmlinuz-4.18.0-553.44.1.el8_10.x86_64
-rw-------. 1 root root 4510017 Mar 19 11:39 System.map-4.18.0-553.45.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Mar 19 11:39 config-4.18.0-553.45.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Mar 19 11:40 vmlinuz-4.18.0-553.45.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Mar 20 13:38 symvers-4.18.0-553.44.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.44.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 52551675 Mar 20 13:40 initramfs-4.18.0-553.44.1.el8_10.x86_64.img
-rw-------. 1 root root 29031936 Mar 21 00:02 initramfs-4.18.0-553.44.1.el8_10.x86_64kdump.img
lrwxrwxrwx. 1 root root 53 Mar 23 10:27 symvers-4.18.0-553.45.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.45.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 29150720 Mar 24 22:43 initramfs-4.18.0-553.45.1.el8_10.x86_64kdump.img
-rw-------. 1 root root 52548873 Mar 26 00:37 initramfs-4.18.0-553.45.1.el8_10.x86_64.img
-rw-------. 1 root root 4510017 Apr 3 07:38 System.map-4.18.0-553.47.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 3 07:38 config-4.18.0-553.47.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 3 07:38 vmlinuz-4.18.0-553.47.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Apr 7 19:53 symvers-4.18.0-553.47.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.47.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 54234120 Apr 7 19:55 initramfs-4.18.0-553.47.1.el8_10.x86_64.img
-rw-------. 1 root root 29154816 Apr 7 21:24 initramfs-4.18.0-553.47.1.el8_10.x86_64kdump.img
drwx------. 4 root root 107 Apr 17 23:02 grub2
/boot/loader/entries:
total 16
-rw-r--r--. 1 root root 346 Mar 10 04:43 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.44.1.el8_10.x86_64.conf
-rw-r--r--. 1 root root 346 Mar 19 11:40 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.45.1.el8_10.x86_64.conf
-rw-r--r--. 1 root root 346 Apr 3 07:38 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.47.1.el8_10.x86_64.conf
-rw-r--r--. 1 root root 393 Apr 14 00:10 82a24f939aa14e6da0b496ef749bc8bd-0-rescue.conf
/boot/efi/EFI/rocky:
total 12
-rw-------. 1 root root 8962 Apr 14 00:16 grub.cfg
/boot/grub2:
total 44
-rw-r--r--. 1 root root 68 Mar 4 11:46 device.map
drwxr-xr-x. 2 root root 25 Mar 4 11:46 fonts
drwxr-xr-x. 2 root root 8192 Mar 4 11:46 i386-pc
-rw-------. 1 root root 8962 Apr 7 21:23 grub.cfg.rpmsave
-rw-------. 1 root root 8962 Apr 14 00:16 grub.cfg
-rw-------. 1 root root 1024 Apr 17 23:02 grubenv
After running dnf upgrade
[moksh@resolve etc]$ symlinks -v /etc | grep grub
dangling: /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[moksh@resolve etc]$ ls -lha | grep grub
lrwxrwxrwx. 1 root root 22 Apr 8 08:13 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-------. 1 root root 7.1K Apr 7 19:47 grub.cfg
drwx------. 2 root root 4.0K Apr 14 00:10 grub.d
[moksh@resolve etc]$ sudo ls -ltr /boot /boot/grub2 /boot/efi/EFI/rocky /boot/loader/entries
/boot/efi/EFI/rocky:
total 12
-rw-------. 1 root root 8962 Apr 14 00:16 grub.cfg
/boot/grub2:
total 40
-rw-r--r--. 1 root root 68 Mar 4 11:46 device.map
drwxr-xr-x. 2 root root 25 Mar 4 11:46 fonts
drwxr-xr-x. 2 root root 8192 Mar 4 11:46 i386-pc
-rw-------. 1 root root 8962 Apr 7 21:23 grub.cfg.rpmsave
-rw-------. 1 root root 1024 Apr 17 23:07 grubenv
-rw-------. 1 root root 7170 Apr 17 23:07 grub.cfg
/boot:
total 448332
drwxr-xr-x. 3 root root 17 Mar 4 11:42 efi
drwxr-xr-x. 3 root root 21 Mar 4 11:43 loader
-rwxr-xr-x. 1 root root 10881352 Mar 4 11:45 vmlinuz-0-rescue-82a24f939aa14e6da0b496ef749bc8bd
-rw-------. 1 root root 131214050 Mar 4 11:45 initramfs-0-rescue-82a24f939aa14e6da0b496ef749bc8bd.img
-rw-------. 1 root root 52546535 Mar 4 12:32 initramfs-4.18.0-553.40.1.el8_10.x86_64.img.backup
-rw-------. 1 root root 4510017 Mar 19 11:39 System.map-4.18.0-553.45.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Mar 19 11:39 config-4.18.0-553.45.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Mar 19 11:40 vmlinuz-4.18.0-553.45.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Mar 23 10:27 symvers-4.18.0-553.45.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.45.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 29150720 Mar 24 22:43 initramfs-4.18.0-553.45.1.el8_10.x86_64kdump.img
-rw-------. 1 root root 52548873 Mar 26 00:37 initramfs-4.18.0-553.45.1.el8_10.x86_64.img
-rw-------. 1 root root 4510017 Apr 3 07:38 System.map-4.18.0-553.47.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 3 07:38 config-4.18.0-553.47.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 3 07:38 vmlinuz-4.18.0-553.47.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Apr 7 19:53 symvers-4.18.0-553.47.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.47.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 54234120 Apr 7 19:55 initramfs-4.18.0-553.47.1.el8_10.x86_64.img
-rw-------. 1 root root 29154816 Apr 7 21:24 initramfs-4.18.0-553.47.1.el8_10.x86_64kdump.img
-rw-------. 1 root root 4507711 Apr 16 04:47 System.map-4.18.0-553.50.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 16 04:47 config-4.18.0-553.50.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 16 04:47 vmlinuz-4.18.0-553.50.1.el8_10.x86_64
drwx------. 4 root root 107 Apr 17 23:02 grub2
lrwxrwxrwx. 1 root root 53 Apr 17 23:10 symvers-4.18.0-553.50.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.50.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 52551349 Apr 17 23:12 initramfs-4.18.0-553.50.1.el8_10.x86_64.img
/boot/loader/entries:
total 16
-rw-r--r--. 1 root root 421 Apr 17 23:07 82a24f939aa14e6da0b496ef749bc8bd-0-rescue.conf
-rw-r--r--. 1 root root 402 Apr 17 23:12 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.45.1.el8_10.x86_64.conf
-rw-r--r--. 1 root root 402 Apr 17 23:12 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.47.1.el8_10.x86_64.conf
-rw-r--r--. 1 root root 374 Apr 17 23:12 82a24f939aa14e6da0b496ef749bc8bd-4.18.0-553.50.1.el8_10.x86_64.conf
Following the last post I also ran the below!
[moksh@resolve etc]$ sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg
Generating grub configuration file ...
Found Windows 10 on /dev/nvme1n1p1
done
[moksh@resolve etc]$ sudo cat /etc/grub2.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=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/00_tuned ###
set tuned_params=""
set tuned_initrd=""
### END /etc/grub.d/00_tuned ###
### 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 ###
insmod part_msdos
insmod xfs
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root e56ad71c-f8a1-4b6c-be5b-9b43a1cab359
else
search --no-floppy --fs-uuid --set=root e56ad71c-f8a1-4b6c-be5b-9b43a1cab359
fi
insmod part_msdos
insmod xfs
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=boot e56ad71c-f8a1-4b6c-be5b-9b43a1cab359
else
search --no-floppy --fs-uuid --set=boot e56ad71c-f8a1-4b6c-be5b-9b43a1cab359
fi
# This section was generated by a script. Do not modify the generated file - all changes
# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.
#
# The blscfg command parses the BootLoaderSpec files stored in /boot/loader/entries and
# populates the boot menu. Please refer to the Boot Loader Specification documentation
# for the files format: https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/.
# The kernelopts variable should be defined in the grubenv file. But to ensure that menu
# entries populated from BootLoaderSpec files that use this variable work correctly even
# without a grubenv file, define a fallback kernelopts variable if this has not been set.
#
# The kernelopts variable in the grubenv file can be modified using the grubby tool or by
# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX
# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both
# the kernelopts variable in the grubenv file and the fallback kernelopts variable.
if [ -z "${kernelopts}" ]; then
set kernelopts="root=/dev/mapper/rl_resolve-root ro crashkernel=auto resume=/dev/mapper/rl_resolve-swap rd.lvm.lv=rl_resolve/root rd.lvm.lv=rl_resolve/swap rhgb quiet nouveau.modset=0 rd.driver.blacklist=nouveau "
fi
insmod blscfg
blscfg
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/10_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 then 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/10_reset_boot_success ###
### BEGIN /etc/grub.d/12_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/12_menu_auto_hide ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (on /dev/nvme1n1p1)' --class windows --class os $menuentry_id_option 'osprober-chain-3AA29E76A29E367B' {
savedefault
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1' 3AA29E76A29E367B
else
search --no-floppy --fs-uuid --set=root 3AA29E76A29E367B
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
# 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/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/35_fwupd ###
### END /etc/grub.d/35_fwupd ###
### BEGIN /etc/grub.d/40_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/40_custom ###
### 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 ###
Quick update, since there was a new kernel update recently. I am now having the problem again. Info below.
[moksh@resolve etc]$ symlinks -v /etc | grep grub
dangling: /etc/grub2.cfg -> ../boot/grub2/grub.cfg
This one is the most problematic since below command had no result.
[moksh@resolve etc]$ ls -lha | grep grub
[moksh@resolve etc]$ sudo ls -ltr /boot /boot/grub2 /boot/efi/EFI/rocky /boot/loader/
/boot/loader/:
total 4
drwx------. 2 root root 4096 May 6 14:51 entries
/boot/efi/EFI/rocky:
total 12
-rw-------. 1 root root 8833 Apr 23 23:13 grub.cfg
/boot:
total 448296
drwxr-xr-x. 3 root root 17 Mar 4 11:42 efi
drwxr-xr-x. 3 root root 21 Mar 4 11:43 loader
-rwxr-xr-x. 1 root root 10881352 Mar 4 11:45 vmlinuz-0-rescue-82a24f939aa14e6da0b496ef749bc8bd
-rw-------. 1 root root 131214050 Mar 4 11:45 initramfs-0-rescue-82a24f939aa14e6da0b496ef749bc8bd.img
-rw-------. 1 root root 52546535 Mar 4 12:32 initramfs-4.18.0-553.40.1.el8_10.x86_64.img.backup
-rw-------. 1 root root 4510017 Apr 3 07:38 System.map-4.18.0-553.47.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 3 07:38 config-4.18.0-553.47.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 3 07:38 vmlinuz-4.18.0-553.47.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Apr 7 19:53 symvers-4.18.0-553.47.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.47.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 54234120 Apr 7 19:55 initramfs-4.18.0-553.47.1.el8_10.x86_64.img
-rw-------. 1 root root 29154816 Apr 7 21:24 initramfs-4.18.0-553.47.1.el8_10.x86_64kdump.img
-rw-------. 1 root root 4507711 Apr 16 04:47 System.map-4.18.0-553.50.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 16 04:47 config-4.18.0-553.50.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 16 04:47 vmlinuz-4.18.0-553.50.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 Apr 17 23:10 symvers-4.18.0-553.50.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.50.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 52551349 Apr 17 23:12 initramfs-4.18.0-553.50.1.el8_10.x86_64.img
-rw-------. 1 root root 29109760 Apr 17 23:25 initramfs-4.18.0-553.50.1.el8_10.x86_64kdump.img
-rw-------. 1 root root 4507711 Apr 30 13:35 System.map-4.18.0-553.51.1.el8_10.x86_64
-rw-r--r--. 1 root root 202338 Apr 30 13:35 config-4.18.0-553.51.1.el8_10.x86_64
-rwxr-xr-x. 1 root root 10881352 Apr 30 13:35 vmlinuz-4.18.0-553.51.1.el8_10.x86_64
lrwxrwxrwx. 1 root root 53 May 6 14:50 symvers-4.18.0-553.51.1.el8_10.x86_64.gz -> /lib/modules/4.18.0-553.51.1.el8_10.x86_64/symvers.gz
-rw-------. 1 root root 52559051 May 6 14:51 initramfs-4.18.0-553.51.1.el8_10.x86_64.img
drwx------. 4 root root 107 May 6 14:51 grub2
/boot/grub2:
total 44
-rw-r--r--. 1 root root 68 Mar 4 11:46 device.map
drwxr-xr-x. 2 root root 25 Mar 4 11:46 fonts
drwxr-xr-x. 2 root root 8192 Mar 4 11:46 i386-pc
-rw-------. 1 root root 8962 Apr 7 21:23 grub.cfg.rpmsave
-rw-------. 1 root root 1024 May 6 12:53 grubenv
-rw-------. 1 root root 8833 May 6 14:51 grub.cfg
[moksh@resolve ~]$
I would be inclined to update the symlink for /etc/grub2.cfg and point it to the EFI one under /boot/efi/EFI/rocky/grub.cfg and then see if it fixes your problem. Since itâs dangling itâs not pointing to anything, and so your grub is not updating as it should be.
Usually though, there should be an /etc/grub2-efi.cfg which points to the correct grub.cfg file. Seems like your system is messed up for some strange reason, either by changes youâve made with the symlink in the past when trying to fix this, or a mismash between whether itâs meant to be an MBR symlink which would be /etc/grub2.cfg or EFI symlink /etc/grub2-efi.cfg.
Fix the symlink, and then see what happens after the next kernel update.
After running the below
[moksh@resolve ~]$ sudo ln -sfv /boot/efi/EFI/rocky/grub.cfg /etc/grub2.cfg
'/etc/grub2.cfg' -> '/boot/efi/EFI/rocky/grub.cfg'
The symlinks command is still showing that its dangling.
[moksh@resolve ~]$ symlinks -v /etc | grep grub
dangling: /etc/grub2.cfg -> /boot/efi/EFI/rocky/grub.cfg
Any idea why?
At this time you had file /boot/efi/EFI/rocky/grub.cfg
(Note also that content of /boot/loader/entries
is more interesting than content of /boot/loader
)
A symbolic link is a file that has name of another file in it. In this case the symlink /etc/grub2.cfg
stores name /boot/efi/EFI/rocky/grub.cfg
The symbolic link is dangling, when real file with that name does not exist.
In other words, there does not seem to exist file /boot/efi/EFI/rocky/grub.cfg
in your system,
despite you had one earlier.
Another point in the earlier output is that there was only one file in /boot/efi/EFI/rocky/
â the grub.cfg
.
If the machine does use EFI to load bootloader, then there should be more files in that directory â unless the EFI uses bootloader that is somewhere else.
What is the output of
sudo efibootmgr -v