From 6cb89a7f64e4a5b1bd39d4fa9f588c8ecf3ea1f5 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Mon, 27 Oct 2014 09:22:55 -0400 Subject: [PATCH] Try to emit linux16/initrd16 and linuxefi/initrdefi in 30-os_prober. Resolves: rhbz#1108296 Signed-off-by: Peter Jones --- util/grub.d/30_os-prober.in | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in index 9b8f5968e2d..dc98eace934 100644 --- a/util/grub.d/30_os-prober.in +++ b/util/grub.d/30_os-prober.in @@ -141,6 +141,28 @@ for OS in ${OSPROBED} ; do # os-prober returns text string followed by optional counter CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' ' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')" + sixteenbit="" + linuxefi="linux" + initrdefi="initrd" + case "$machine" in + i?86|x86_64) + sixteenbit="16" + linuxefi="linuxefi" + initrdefi="initrdefi" + ;; + aarch64) + linuxefi="linux" + initrdefi="initrd" + esac + linux="linux${sixteenbit}" + initrd="initrd${sixteenbit}" + # there's no way to tell that the /other/ os is booting through UEFI, + # but if we are it's an okay bet... + if [ -d /sys/firmware/efi ]; then + linux=$linuxefi + initrd=$initrdefi + fi + gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2 case ${BOOT} in @@ -241,11 +263,11 @@ EOF save_default_entry | grub_add_tab printf '%s\n' "${prepare_boot_cache}" cat << EOF - linux ${LKERNEL} ${LPARAMS} + ${linux} ${LKERNEL} ${LPARAMS} EOF if [ -n "${LINITRD}" ] ; then cat << EOF - initrd ${LINITRD} + ${initrd} ${LINITRD} EOF fi cat << EOF @@ -261,11 +283,11 @@ EOF save_default_entry | sed -e "s/^/$grub_tab$grub_tab/" printf '%s\n' "${prepare_boot_cache}" | grub_add_tab cat << EOF - linux ${LKERNEL} ${LPARAMS} + ${linux} ${LKERNEL} ${LPARAMS} EOF if [ -n "${LINITRD}" ] ; then cat << EOF - initrd ${LINITRD} + ${initrd} ${LINITRD} EOF fi cat << EOF