Skip to content

CLOS-2842: Cover centos/cloudlinux EFI paths in hybrid BIOS+UEFI handling#61

Merged
prilr merged 2 commits into
cloudlinux:cloudlinuxfrom
prilr:CLOS-2842-elevate-actor-add_upgrade_boot_entry-fai
May 12, 2026
Merged

CLOS-2842: Cover centos/cloudlinux EFI paths in hybrid BIOS+UEFI handling#61
prilr merged 2 commits into
cloudlinux:cloudlinuxfrom
prilr:CLOS-2842-elevate-actor-add_upgrade_boot_entry-fai

Conversation

@prilr
Copy link
Copy Markdown
Collaborator

@prilr prilr commented May 11, 2026

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

prilr and others added 2 commits May 6, 2026 08:30
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>
@prilr prilr merged commit 1fb81f2 into cloudlinux:cloudlinux May 12, 2026
1 check passed
@prilr prilr deleted the CLOS-2842-elevate-actor-add_upgrade_boot_entry-fai branch May 12, 2026 20:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants