From 1c722b306fd052e8efb32f7a4192827b41eb8e27 Mon Sep 17 00:00:00 2001 From: Jonathan Lebon Date: Mon, 20 Nov 2023 10:15:00 -0500 Subject: [PATCH] metal: add workaround for ppc64le PXE bug Work around #3370 as described in: https://bugzilla.redhat.com/show_bug.cgi?id=2209435#c6 --- mantle/platform/metal.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mantle/platform/metal.go b/mantle/platform/metal.go index a89369e8ae..14efdba1da 100644 --- a/mantle/platform/metal.go +++ b/mantle/platform/metal.go @@ -447,6 +447,20 @@ func (t *installerRun) completePxeSetup(kargs []string) error { `, t.kern.kernel, kargsStr, t.kern.initramfs)), 0777); err != nil { return errors.Wrap(err, "writing grub.cfg") } + + // workaround for https://github.com/coreos/coreos-assembler/issues/3370 + // see: https://bugzilla.redhat.com/show_bug.cgi?id=2209435#c6 + if coreosarch.CurrentRpmArch() == "ppc64le" { + subpath := filepath.Join(t.tftpdir, "boot/grub2/powerpc-ieee1275") + cp_cmd := exec.Command("/usr/lib/coreos-assembler/cp-reflink", subpath, subpath+"-2") + cp_cmd.Stderr = os.Stderr + if err := cp_cmd.Run(); err != nil { + return errors.Wrap(err, "running cp-reflink for pcp64le workaround") + } + if err := os.Rename(subpath+"-2", filepath.Join(subpath, "powerpc-ieee1275")); err != nil { + return errors.Wrap(err, "rename() for pcp64le workaround") + } + } default: panic("Unhandled boottype " + t.pxe.boottype) }