9d85b1d
From 53e38c3eefd1e5f41bf1f3b5bc7bae4e5b667ff1 Mon Sep 17 00:00:00 2001
9d85b1d
From: Peter Jones <pjones@redhat.com>
9d85b1d
Date: Mon, 27 Oct 2014 09:22:55 -0400
9d85b1d
Subject: [PATCH 154/154] Try to emit linux16/initrd16 and linuxefi/initrdefi
9d85b1d
 in 30-os_prober.
9d85b1d
9d85b1d
Resolves: rhbz#1108296
9d85b1d
9d85b1d
Signed-off-by: Peter Jones <pjones@redhat.com>
9d85b1d
---
9d85b1d
 util/grub.d/30_os-prober.in | 30 ++++++++++++++++++++++++++----
9d85b1d
 1 file changed, 26 insertions(+), 4 deletions(-)
9d85b1d
9d85b1d
diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
9d85b1d
index 9f955ab..908a09d 100644
9d85b1d
--- a/util/grub.d/30_os-prober.in
9d85b1d
+++ b/util/grub.d/30_os-prober.in
dea2713
@@ -135,6 +135,29 @@ for OS in ${OSPROBED} ; do
9d85b1d
     LONGNAME="${LABEL}"
9d85b1d
   fi
9d85b1d
 
9d85b1d
+  sixteenbit=""
9d85b1d
+  linuxefi="linux"
9d85b1d
+  initrdefi="initrd"
dea2713
+  machine=`uname -m`
9d85b1d
+  case "$machine" in
9d85b1d
+    i?86|x86_64)
9d85b1d
+      sixteenbit="16"
9d85b1d
+      linuxefi="linuxefi"
9d85b1d
+      initrdefi="initrdefi"
9d85b1d
+      ;;
9d85b1d
+    aarch64)
9d85b1d
+      linuxefi="linux"
9d85b1d
+      initrdefi="initrd"
9d85b1d
+  esac
9d85b1d
+  linux="linux${sixteenbit}"
9d85b1d
+  initrd="initrd${sixteenbit}"
9d85b1d
+  # there's no way to tell that the /other/ os is booting through UEFI,
9d85b1d
+  # but if we are it's an okay bet...
9d85b1d
+  if [ -d /sys/firmware/efi ]; then
9d85b1d
+    linux=$linuxefi
9d85b1d
+    initrd=$initrdefi
9d85b1d
+  fi
9d85b1d
+
9d85b1d
   gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2
9d85b1d
 
9d85b1d
   case ${BOOT} in
dea2713
@@ -235,11 +258,11 @@ EOF
9d85b1d
 	    save_default_entry | grub_add_tab
9d85b1d
 	    printf '%s\n' "${prepare_boot_cache}"
9d85b1d
 	    cat <<  EOF
9d85b1d
-	linux ${LKERNEL} ${LPARAMS}
9d85b1d
+	${linux} ${LKERNEL} ${LPARAMS}
9d85b1d
 EOF
9d85b1d
             if [ -n "${LINITRD}" ] ; then
9d85b1d
           cat << EOF
9d85b1d
-	initrd ${LINITRD}
9d85b1d
+	${initrd} ${LINITRD}
9d85b1d
 EOF
9d85b1d
             fi
9d85b1d
         cat << EOF
dea2713
@@ -255,11 +278,11 @@ EOF
9d85b1d
 	save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
9d85b1d
 	printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
9d85b1d
 	cat <<  EOF
9d85b1d
-		linux ${LKERNEL} ${LPARAMS}
9d85b1d
+		${linux} ${LKERNEL} ${LPARAMS}
9d85b1d
 EOF
9d85b1d
         if [ -n "${LINITRD}" ] ; then
9d85b1d
             cat << EOF
9d85b1d
-		initrd ${LINITRD}
9d85b1d
+		${initrd} ${LINITRD}
9d85b1d
 EOF
9d85b1d
         fi
9d85b1d
         cat << EOF
9d85b1d
-- 
9d85b1d
1.9.3
9d85b1d