grub2/0128-Try-to-emit-linux16-initrd16-and-linuxefi-initrdefi-.patch
Peter Jones ec4acbbd98 Update grub2 for f28
- Try to fix things for new compiler madness.
  I really don't know why gcc decided __attribute__((packed)) on a "typedef
  struct" should imply __attribute__((align (1))) and that it should have a
  warning that it does so.  The obvious behavior would be to keep the alignment
  of the first element unless it's used in another object or type that /also/
  hask the packed attribute.  Why should it change the default alignment at
  all?
- Merge in the BLS patches Javier and I wrote.
- Attempt to fix pmtimer initialization failures to not be super duper slow.

Signed-off-by: Peter Jones <pjones@redhat.com>
2018-02-28 10:08:00 -05:00

78 lines
2.2 KiB
Diff

From 3602fba26df0d9fc04bae72d26d866ec9d1e24a6 Mon Sep 17 00:00:00 2001
From: Peter Jones <pjones@redhat.com>
Date: Mon, 27 Oct 2014 09:22:55 -0400
Subject: [PATCH 128/206] Try to emit linux16/initrd16 and linuxefi/initrdefi
in 30-os_prober.
Resolves: rhbz#1108296
Signed-off-by: Peter Jones <pjones@redhat.com>
---
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
--
2.15.0