[RESPOND] AMD Framework 13 - Fedora 39 not setting latest kernel as default after upgrade

Not sure this is an AMD Framework specific issue, but everyone here seems very helpful.

This is first Fedora install that has exhibited this behaviour, and this is a complete fresh install of Fedora 39 with not dual boot or anything special.

After using “Software” to update what it want to update and restarting, should that update contain a kernel update it appears to be failing to set that kernel as the default and I am forced to run, in the latest case:

sudo grubby --set-default /boot/vmlinuz-6.6.6-200.fc39.x86_64

The only comparable case I’ve found searching is:

And my output of the requested commands above, note after I set the default kernel manually with the command above:

journalctl -eu default-kernel.service:

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
– No entries –

/etc/grub2/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=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/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_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 6fec77f7-29dd-491a-9698-eefb20f09849
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=boot D7B7-BF7A

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: systemd.

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=UUID=cdd15b5a-b312-4a23-8d09-f5f348ca5e22 ro rootflags=subvol=root rhgb quiet "
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 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/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/14_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/14_menu_show_once

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

END /etc/grub.d/30_os-prober

BEGIN /etc/grub.d/30_uefi-firmware

if [ “$grub_platform” = “efi” ]; then
menuentry ‘UEFI Firmware Settings’ $menuentry_id_option ‘uefi-firmware’ {
fwsetup
}
fi

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

/boot/grub2/grubenv

GRUB Environment Block

WARNING: Do not edit this file by tools other than grub-editenv!!!

saved_entry=5f36dde565ef4f7980415be783f7d316-6.6.6-200.fc39.x86_64
menu_auto_hide=1
boot_success=1
boot_indeterminate=0
##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

What does your /etc/default/grub file look like?

1 Like

Just to confirm, I’ve done nothing custom to this install it is purely a from the USB bootable stick with nothing custom or configured.

/etc/default/grub

GRUB_TIMEOUT=5
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”
GRUB_DISABLE_RECOVERY=“true”
GRUB_ENABLE_BLSCFG=true

1 Like

Saw the same on a fresh F39 install, I had been conditioned to “latest install becomes default” working out of the box over the years. Seems to be a bug, not intended change.

3 Likes

@dimitris - thank you, your reply was much more helpful than mine.

Thanks @dimitris I’ve created /etc/sysconfig/kernel which was missing (confirmed present on a normal Fedora 39 install on another machine) using:

sudo vi /etc/sysconfig/kernel

The above creates the file with root:root permissions as needed.

And copying and pasting in:

# UPDATEDEFAULT specifies if new-kernel-pkg should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-core

As you described in:

Let’s see what happens on the next kernel patch…

Will report back here on 6.6.7 or whatever appears next.

I don’t have the wit to know how to report this Pto Fedora directly, any pointers?

P.S. I’m hoping using grubby hasn’t wrecked a kernel update config equilibrium I am not aware of.

I don’t think so. I also messed with grubby before finding the fix above.

Already posted in the main Fedora 39 thread, but I am still having this issue even after creating the /etc/sysconfig/kernel file with the language above. Nothing works. After a reboot, it will still default to the oldest kernel. I have to hold esc and select the latest kernel every time. What am I missing?

OK so Fedora 39 Kernel 6.6.7 appeared today, updated through “Software”, installed, AND set itself to default as it should, so thank you @dimitris your solution of recreating /etc/sysconfig/kernel worked:

1 Like

Thank you @dimitris for the help, I’ll go ahead and mark this as resolved.

Appreciate the kudos, but it was @jwp that mentioned it in some other thread IIRC.

1 Like

Nice, that make sense - @jwp is awesome. :slight_smile:

@Matt_Hartley Any idea where and how this could be raised with Fedora directly? I’ve attempted to find the right “in” but they have quite a few methods and would like to contribute in some way.

It may have already been raised… but I haven’t even understood where I find that!

Since I have not been able to replicate it, best bet will be to file a bug report with Fedora directly.

Just as a datapoint, this is happening to me as well. I’ve just created /etc/sysconfig/kernel, hopefully will work next time, thanks all!

EDIT: It did work :tada:

1 Like

I’m also observing this issue on my freshly-installed Fedora 39, the solution for me was:

sudo grubby --info=ALL | grep ^kernel
sudo grubby --set-default-index=0 # change 0 to whatever 6.7 is

I was having this issue on a Framework 13 running Fedora 40. These steps resolved the issue and I’m on kernel 6.10 now.