From e77827df6cf6a1b4e3d16416f915f169123321f2 Mon Sep 17 00:00:00 2001 From: Adphi Date: Wed, 29 Apr 2026 16:09:31 +0200 Subject: [PATCH] fix: fix centos / rhel family 8+ grub-bios boot Signed-off-by: Adphi --- grub_common.go | 4 +++- templates/centos.Dockerfile | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/grub_common.go b/grub_common.go index 6e41095..cb25d3f 100644 --- a/grub_common.go +++ b/grub_common.go @@ -32,6 +32,8 @@ GRUB_TIMEOUT=0 GRUB_CMDLINE_LINUX_DEFAULT="%s" GRUB_CMDLINE_LINUX="" GRUB_TERMINAL=console +GRUB_DISABLE_OS_PROBER=true +GRUB_ENABLE_BLSCFG=false ` type grubCommon struct { @@ -44,7 +46,7 @@ type grubCommon struct { func newGrubCommon(c Config, r OSRelease) *grubCommon { name := "grub" - if r.ID == "centos" { + if r.ID == ReleaseCentOS || r.ID == ReleaseAlmaLinux || r.ID == ReleaseRocky { name = "grub2" } return &grubCommon{ diff --git a/templates/centos.Dockerfile b/templates/centos.Dockerfile index 561c780..e584ef8 100644 --- a/templates/centos.Dockerfile +++ b/templates/centos.Dockerfile @@ -36,10 +36,27 @@ RUN dracut --no-hostonly --regenerate-all --force {{ if .Password }}RUN echo "root:{{ .Password }}" | chpasswd {{ end }} -{{- if not .Grub }} +{{- if .Grub }} +RUN set -e; \ + for linux in /usr/lib/modules/*/vmlinuz; do \ + [ -e "$linux" ] || continue; \ + kver="$(basename "$(dirname "$linux")")"; \ + cp "/usr/lib/modules/${kver}/vmlinuz" "/boot/vmlinuz-${kver}"; \ + done +RUN set -e; \ + for linux in /boot/*/*/linux; do \ + [ -e "$linux" ] || continue; \ + dir="$(dirname "$linux")"; \ + kver="$(basename "$dir")"; \ + initrd="${dir}/initrd"; \ + [ -e "$initrd" ] || continue; \ + ln -sf "${linux#/boot/}" "/boot/vmlinuz-${kver}"; \ + ln -sf "${initrd#/boot/}" "/boot/initramfs-${kver}.img"; \ + done +{{- else }} RUN cd /boot && \ - mv $(find / -name 'vmlinuz*') /boot/vmlinuz && \ - mv $(find . -name 'initramfs-*.img' -o -name initrd) /boot/initrd.img + mv $(find / -name 'vmlinuz*') /boot/vmlinuz && \ + mv $(find . -name 'initramfs-*.img' -o -name initrd) /boot/initrd.img {{- end }} RUN yum clean all && \