From e0520ac619a852f55db20703a8af7ddf08718a0a Mon Sep 17 00:00:00 2001 From: Josue Hernandez Date: Tue, 30 Jun 2026 17:47:07 -0600 Subject: [PATCH] Wait for initrmafs and kernel to be installed before set default kernel Resolves: #RHEL-188168 Signed-off-by: Josue Hernandez --- 20-grub.install | 2 +- 95-set-boot-entry.install | 44 +++++++++++++++++++++++++++++++++++++++ grub2.spec | 9 +++++++- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 95-set-boot-entry.install diff --git a/20-grub.install b/20-grub.install index 699fff7..4172169 100755 --- a/20-grub.install +++ b/20-grub.install @@ -166,7 +166,7 @@ case "$COMMAND" in fi fi if [ -n "$NEWDEFAULT" ]; then - grub2-editenv - set "saved_entry=${NEWDEFAULT}" + grub2-editenv - set "tmp_saved_entry=${NEWDEFAULT}" fi # this probably isn't the best place to do this, but it will do for now. diff --git a/95-set-boot-entry.install b/95-set-boot-entry.install new file mode 100755 index 0000000..9f92f9f --- /dev/null +++ b/95-set-boot-entry.install @@ -0,0 +1,44 @@ +#!/bin/bash + +[[ -f /etc/default/grub ]] && . /etc/default/grub +[[ -f /etc/os-release ]] && . /etc/os-release + +COMMAND="$1" +KERNEL_VERSION="$2" +BOOT_DIR_ABS="$3" +KERNEL_IMAGE="$4" + +case "$COMMAND" in + add) + if [[ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]] || [[ ! -f /sbin/new-kernel-pkg ]]; then + entry=$(grub2-editenv list | grep tmp_saved_entry) + if [ -n "$entry" ]; then + BLS_ID=${entry##tmp_saved_entry=} + BLS_DIR="/boot/loader/entries" + BLS_TARGET="${BLS_DIR}/${BLS_ID}.conf" + + LINUX="$(grep '^linux[ \t]' "${BLS_TARGET}" | sed -e 's,^linux[ \t]*,,' | awk '{print $1}')" + INITRD="$(grep '^initrd[ \t]' "${BLS_TARGET}" | sed -e 's,^initrd[ \t]*,,' | awk '{print $1}')" + + ROOTPREFIX="" + [ -z "$(grub2-mkrelpath /boot)" ] && ROOTPREFIX="/boot" + + if [ -e "${ROOTPREFIX}${LINUX}" -a -n "${INITRD}" ]; then + if [ ! -e "${ROOTPREFIX}${INITRD}" ]; then + echo "Error: ${ROOTPREFIX}${INITRD} not found." + exit 1 + fi + if ! lsinitrd ${ROOTPREFIX}${INITRD} > /dev/null; then + echo "Error: ${ROOTPREFIX}${INITRD} appears to be corrupt." + exit 1 + fi + fi + + grub2-editenv - unset "tmp_saved_entry" + grub2-editenv - set "saved_entry=$BLS_ID" + fi + fi + ;; + *) + ;; +esac diff --git a/grub2.spec b/grub2.spec index f943be0..3cc0e55 100644 --- a/grub2.spec +++ b/grub2.spec @@ -17,7 +17,7 @@ Name: grub2 Epoch: 1 Version: 2.12 -Release: 49%{?dist} +Release: 50%{?dist} Summary: Bootloader with support for Linux, Multiboot and more License: GPL-3.0-or-later URL: http://www.gnu.org/software/grub/ @@ -40,6 +40,7 @@ Source14: sbat.ppc.csv Source15: grub-cc.macros Source16: grub-cc.cfg Source17: grub-cc-prefix-embedded.cfg +Source18: 95-set-boot-entry.install %include %{SOURCE1} %include %{SOURCE15} @@ -304,6 +305,7 @@ rm -vf ${RPM_BUILD_ROOT}/%{_sbindir}/grub2-macbless # Install kernel-install scripts install -d -m 0755 %{buildroot}%{_prefix}/lib/kernel/install.d/ install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE10} +install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE18} install -D -m 0755 -t %{buildroot}%{_prefix}/lib/kernel/install.d/ %{SOURCE3} install -d -m 0755 %{buildroot}%{_sysconfdir}/kernel/install.d/ # Install systemd user service to set the boot_success flag @@ -426,6 +428,7 @@ fi %dir %{_datarootdir}/grub/ %attr(0700,root,root) %dir %{_sysconfdir}/grub.d %{_prefix}/lib/kernel/install.d/20-grub.install +%{_prefix}/lib/kernel/install.d/95-set-boot-entry.install %{_prefix}/lib/kernel/install.d/99-grub-mkconfig.install %dir %{_datarootdir}/grub %exclude %{_datarootdir}/grub/* @@ -593,6 +596,10 @@ fi %endif %changelog +* Tue Jun 30 2026 Josue Hernandez - 2.12-50 +- Wait for initrmafs and kernel to be installed before set default kernel +- Resolves: #RHEL-188168 + * Mon Jun 15 2026 Rolv Apneseth - 2.12-49 - mdraid: fix metadata 1.0 detection in userspace utilities on IEEE1275 - grub-install: use search.fs_uuid for RAID1 on IEEE1275