CLOS-2842: Cover centos/cloudlinux EFI paths in hybrid BIOS+UEFI handling#61
Merged
prilr merged 2 commits intoMay 12, 2026
Conversation
Replace the format-string expression that yielded ' enforcing=0 rd.plymouth=0 plymouth.enable=0' (leading space) with an explicit list-join that filters out empty parts. The output is now identical when debug/network are enabled and differs only by the absence of a leading space when both are off. Note: this change is defensive cleanup, not the customer-facing fix for CLOS-2842 / ZD 226456. Testing on the customer's grubby version (8.28-26.el7) shows the leading space is benign - subprocess passes it as one argv element and grubby strips it. The actual root cause of the customer's stage 3 -> stage 3 loop is addressed in the follow-up commit that extends hybrid BIOS+UEFI handling to centos/cloudlinux/almalinux EFI paths. Add a unit test for the non-debug (production) path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ling
On hybrid BIOS+UEFI systems, AddUpgradeBootEntry must update both
/boot/grub2/grub.cfg AND the EFI-side grub.cfg, otherwise the upgrade
boot entry may not become the actual boot default. The actor only
checked /boot/efi/EFI/redhat/grub.cfg, which is the RHEL subdirectory.
CloudLinux 7 hybrid setups use /boot/efi/EFI/centos/grub.cfg (inherited
from CentOS); CloudLinux 8+ uses /boot/efi/EFI/cloudlinux/grub.cfg.
Neither was covered, so the EFI-side config went stale and reboot
landed on the old kernel - the failure mode in CLOS-2842 / ZD 226456
("stage 3 -> stage 3 loop"). The customer's manual fix in that ticket
explicitly regenerated /boot/efi/EFI/centos/grub.cfg, which is what we
now make the actor do automatically.
Extract the path detection into a tested helper and broaden the check
to redhat, centos, cloudlinux, almalinux (first match wins). Add
parametrized unit tests covering all six branches.
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1667028
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
azheregelya
approved these changes
May 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On hybrid BIOS+UEFI systems, AddUpgradeBootEntry must update both
/boot/grub2/grub.cfgAND the EFI-sidegrub.cfg, otherwise the upgrade boot entry may not become the actual boot default. The actor only checked/boot/efi/EFI/redhat/grub.cfg, which is the RHEL subdirectory.CloudLinux 7 setups use
/boot/efi/EFI/centos/grub.cfg(inherited from CentOS); CloudLinux 8+ uses/boot/efi/EFI/cloudlinux/grub.cfg.Neither was covered, so the EFI-side config went stale and reboot landed on the old kernel - the failure mode in reported CLOS-2842 ("stage 3 -> stage 3 loop"). The original manual workaround explicitly regenerated
/boot/efi/EFI/centos/grub.cfg, which is what we now make the actor do automatically.