Fix BLS entries not corrected before grub2-mkconfig on RHEL 8

This commit is contained in:
Andrew Lukoshko 2026-03-13 00:16:44 +00:00
parent 8c8c06c38c
commit 59020e9560
2 changed files with 71 additions and 1 deletions

View File

@ -0,0 +1,67 @@
From 881bb46fcbefac0be9e7540b078a4dbe4f0f5891 Mon Sep 17 00:00:00 2001
From: Andrew Lukoshko <alukoshko@almalinux.org>
Date: Fri, 13 Mar 2026 01:12:40 +0100
Subject: [PATCH] Fix BLS entries not corrected before grub2-mkconfig on RHEL 8
On RHEL 8-based distributions, grub2-mkconfig uses the
grub.d/10_linux_bls script which reads Boot Loader Specification
(BLS) entries from /boot/loader/entries/ and inlines them as
menuentry blocks directly in grub.cfg. This is different from
RHEL 9+ where grub.d/10_linux uses the blscfg command to load
BLS entries at boot time.
When kiwi builds a disk image, kernel packages are installed into
a chroot (the image root). The BLS entries created by the kernel
scriptlets at that point contain:
- linux/initrd paths prefixed with the build host's image root
path (e.g. /var/tmp/kiwi-build/build/image-root/boot/vmlinuz-...)
- an options line from the build host's /proc/cmdline
Previously, kiwi corrected these BLS entries only *after* running
grub2-mkconfig. On RHEL 9+ this works fine because grub.cfg just
contains blscfg and reads the (now corrected) BLS entries at boot
time. On RHEL 8, however, grub2-mkconfig had already inlined the
*uncorrected* BLS entries into grub.cfg, resulting in wrong kernel
paths and boot options that caused the image to fail to boot.
This commit adds calls to _fix_grub_loader_entries_boot_cmdline()
and _fix_grub_loader_entries_linux_and_initrd_paths() before
grub2-mkconfig, so that BLS entries are corrected before they get
inlined into grub.cfg. The existing post-grub2-mkconfig calls are
retained because grub2-mkconfig itself may re-create or modify BLS
entries on some distributions.
Fixes boot failure on AlmaLinux 8 ppc64le GenericCloud images built
with kiwi where grub.cfg contained build-root paths like:
linux /var/tmp/kiwi-build/build/image-root/boot/vmlinuz-4.18.0-...
instead of:
linux /vmlinuz-4.18.0-...
---
kiwi/bootloader/config/grub2.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/kiwi/bootloader/config/grub2.py b/kiwi/bootloader/config/grub2.py
index 58f0c6e5..58568755 100644
--- a/kiwi/bootloader/config/grub2.py
+++ b/kiwi/bootloader/config/grub2.py
@@ -281,6 +281,16 @@ class BootLoaderConfigGrub2(BootLoaderConfigBase):
self.boot_directory_name, 'grub.cfg'
]
)
+ # Fix BLS entries before running grub2-mkconfig. On RHEL 8
+ # the grub.d/10_linux_bls script reads BLS entries and inlines
+ # them as menuentry blocks in grub.cfg rather than emitting a
+ # blscfg command. BLS entries created during package install in
+ # the kiwi image root contain the build host path prefix in
+ # linux/initrd paths and the host /proc/cmdline in options.
+ # Those must be corrected before grub2-mkconfig reads them.
+ self._fix_grub_loader_entries_boot_cmdline()
+ self._fix_grub_loader_entries_linux_and_initrd_paths()
+
# Disable os-prober, it takes information from the host it
# runs on which is not necessarily matching with the image
os.environ.update({'GRUB_DISABLE_OS_PROBER': 'true'})
--
2.43.7

View File

@ -26,6 +26,8 @@ Patch0001: 0001-run-grub-mkconfig-with-os-prober-disable.patch
Patch0002: 0002-Fixed-missing-selinux-context-setup-for-live-ISOs.patch
## From https://git.almalinux.org/almalinux/kiwi-el8/commit/f5799d404d79476ffce6253a7ab7fbe510f4673e
Patch0003: 0003-Backport-zipl-bootloader-support-from-upstream-kiwi.patch
## From https://git.almalinux.org/almalinux/kiwi-el8/commit/881bb46fcbefac0be9e7540b078a4dbe4f0f5891
Patch0004: 0004-Fix-BLS-entries-not-corrected-before-grub2-mkconfig.patch
# Fedora-specific patches
## Use buildah instead of umoci by default for OCI image builds
@ -575,8 +577,9 @@ done
# Empty metapackage
%changelog
* Fri Mar 13 Andrew Lukoshko <alukoshko@almalinux.org> - 9.25.22-2
* Fri Mar 13 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 9.25.22-2
- Backport zipl bootloader support from upstream kiwi v10
- Fix BLS entries not corrected before grub2-mkconfig on RHEL 8
* Thu Mar 12 2026 Neal Gompa <ngompa@fedoraproject.org> - 9.25.22-1
- Update to 9.25.22