$ sudo journalctl -u bootloader-update.service --since "4 days ago" --no-pager
Feb 14 20:14:21 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 14 20:14:21 mershl-t495 bootupctl[1087]: cp: cannot stat 'BOOT': No such file or directory
Feb 14 20:14:21 mershl-t495 bootupctl[1041]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 14 20:14:21 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 14 20:14:21 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 14 20:14:21 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot a6a83e83692347e381abf1d036e1f4d7 --
Feb 15 17:45:41 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 15 17:45:41 mershl-t495 bootupctl[1083]: cp: cannot stat 'BOOT': No such file or directory
Feb 15 17:45:41 mershl-t495 bootupctl[1037]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 15 17:45:41 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 15 17:45:42 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 15 17:45:42 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot fcd2e5dd4af5406182ac6bc0e281db6d --
Feb 16 14:31:35 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 14:31:36 mershl-t495 bootupctl[1110]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 14:31:36 mershl-t495 bootupctl[1065]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 14:31:36 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 14:31:36 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 14:31:36 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot 529352b881d34d54ad5c4e2ed7dabd43 --
Feb 16 18:19:17 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 18:19:17 mershl-t495 bootupctl[1091]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 18:19:17 mershl-t495 bootupctl[1046]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 18:19:17 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 18:19:17 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 18:19:17 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot 2c411be63f054e3a9a0acbb2b2c64908 --
Feb 16 22:11:57 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 22:11:57 mershl-t495 bootupctl[1085]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 22:11:57 mershl-t495 bootupctl[1038]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 22:11:57 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 22:11:57 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 22:11:57 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot f68bf4caabd148c8b6af3ce04a6253c8 --
Feb 16 22:25:52 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 22:25:52 mershl-t495 bootupctl[1144]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 22:25:52 mershl-t495 bootupctl[1071]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 22:25:52 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 22:25:52 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 22:25:52 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot f4441423a4e44e73840c34d53dbadd8a --
Feb 16 22:33:27 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 22:33:27 mershl-t495 bootupctl[1155]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 22:33:27 mershl-t495 bootupctl[1068]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 22:33:27 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 22:33:27 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 22:33:27 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot eb6068de86424c4fad9c58e824b005e6 --
Feb 16 22:41:32 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 16 22:41:33 mershl-t495 bootupctl[1110]: cp: cannot stat 'BOOT': No such file or directory
Feb 16 22:41:33 mershl-t495 bootupctl[1038]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 16 22:41:33 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 16 22:41:33 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 16 22:41:33 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot 28387053c11842afb0bbc1cb073d5400 --
Feb 17 17:29:59 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 17 17:29:59 mershl-t495 bootupctl[1178]: cp: cannot stat 'BOOT': No such file or directory
Feb 17 17:29:59 mershl-t495 bootupctl[1050]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 17 17:29:59 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 17 17:29:59 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 17 17:29:59 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot feb5ef247bba404795648e8dfc738753 --
Feb 18 17:33:34 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 18 17:33:34 mershl-t495 bootupctl[1126]: cp: cannot stat 'BOOT': No such file or directory
Feb 18 17:33:34 mershl-t495 bootupctl[1062]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 18 17:33:34 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 18 17:33:34 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 18 17:33:34 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
-- Boot e82e84893f764ac488f50f9c023768ee --
Feb 18 17:50:16 mershl-t495 systemd[1]: Starting bootloader-update.service - Update bootloader on boot...
Feb 18 17:50:16 mershl-t495 bootupctl[1143]: cp: cannot stat 'BOOT': No such file or directory
Feb 18 17:50:16 mershl-t495 bootupctl[1067]: error: Failed adopt and update: applying filesystem changes: Failed to copy BOOT to .btmp.BOOT
Feb 18 17:50:16 mershl-t495 systemd[1]: bootloader-update.service: Main process exited, code=exited, status=1/FAILURE
Feb 18 17:50:16 mershl-t495 systemd[1]: bootloader-update.service: Failed with result 'exit-code'.
Feb 18 17:50:16 mershl-t495 systemd[1]: Failed to start bootloader-update.service - Update bootloader on boot.
[...]
Starting bootloader-update.service - Update bootloader on boot...
Adopted and updated: EFI: grub2-efi-ia32-1:2.12-23.fc42.x86_64,grub2-efi-x64-1:2.12-23.fc42.x86_64,shim-ia32-15.8-3.x86_64,shim-x64-15.8-3.x86_64
ostree repo 'sysroot.bootloader' config option is not set yet
Marking bootloader as BLS capable...
'/boot/grub2/grub.cfg' is not a symlink, nothing to migrate
Setting 'sysroot.bootloader' to 'none' in ostree repo config...
Static GRUB config migration completed successfully
Finished bootloader-update.service - Update bootloader on boot.
Arg, this is not resolved yet. It looks like the GRUB config is stored in the ESP instead of /boot/grub2 and thus we donβt update it as part of the migration. It notably does not include the part that enables BLS configs.
Iβve installed a βfreshβ Silverblue 33, updated it to F42 and only got part of this issue and this did not prevent me from updating further so this is weird.
$ 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=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=""
export tuned_params
set tuned_initrd=""
export 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 ###
### 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/15_ostree ###
menuentry 'Fedora Linux 42.20250216.n.0 (Silverblue Prerelease) (ostree:0)' --class gnu-linux --class gnu --class os --unrestricted 'ostree-0-05941402-a9ac-408c-872e-8aad27cc2a97' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 05941402-a9ac-408c-872e-8aad27cc2a97
linuxefi /ostree/fedora-a4958ac9848c7f5abe8fdc4b4875404dea7415afa016f3d18111fdf3fa90f718/vmlinuz-6.14.0-0.rc1.15.fc42.x86_64 rhgb quiet root=UUID=74f20a30-4294-4fee-a9cf-fc63ce99220a rootflags=subvol=root ostree=/ostree/boot.0/fedora/a4958ac9848c7f5abe8fdc4b4875404dea7415afa016f3d18111fdf3fa90f718/0 selinux=0 rw
initrdefi /ostree/fedora-a4958ac9848c7f5abe8fdc4b4875404dea7415afa016f3d18111fdf3fa90f718/initramfs-6.14.0-0.rc1.15.fc42.x86_64.img
}
menuentry 'Fedora Linux 41.20250216.0 (Silverblue) (ostree:1)' --class gnu-linux --class gnu --class os --unrestricted 'ostree-1-05941402-a9ac-408c-872e-8aad27cc2a97' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 05941402-a9ac-408c-872e-8aad27cc2a97
linuxefi /ostree/fedora-2f6ca3a8412e77175ee7cefc89773968f11a0faadd7c834f2a1e939bd565397a/vmlinuz-6.12.13-200.fc41.x86_64 rhgb quiet root=UUID=74f20a30-4294-4fee-a9cf-fc63ce99220a rootflags=subvol=root ostree=/ostree/boot.0/fedora/2f6ca3a8412e77175ee7cefc89773968f11a0faadd7c834f2a1e939bd565397a/0 selinux=0 rw
initrdefi /ostree/fedora-2f6ca3a8412e77175ee7cefc89773968f11a0faadd7c834f2a1e939bd565397a/initramfs-6.12.13-200.fc41.x86_64.img
}
### END /etc/grub.d/15_ostree ###
### 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/25_bli ###
if [ "$grub_platform" = "efi" ]; then
if [ ! insmod bli ]; then
echo "bli module not available"
fi
fi
### END /etc/grub.d/25_bli ###
### 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
if [ fwsetup --is-supported ]; then
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
fi
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 ###