From 54a7b87bbe4eeab1d9152b4e110f63de951469c4 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:23:14 +0200 Subject: [PATCH 01/20] remove unused grub-2.00-beta4-wronly.patch --- grub-2.00-beta4-wronly.patch | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 grub-2.00-beta4-wronly.patch diff --git a/grub-2.00-beta4-wronly.patch b/grub-2.00-beta4-wronly.patch deleted file mode 100644 index 90b9c59..0000000 --- a/grub-2.00-beta4-wronly.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 8e4aea82c6aba6b8b5ca68d74abafa3fe9486c36 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Thu, 19 Apr 2012 14:17:38 -0400 -Subject: [PATCH] Open device O_WRONLY in grub_util_biosdisk_write. - -revision 4225 introduced an error wherein the device we intend -to write to from e.g. grub2-bios-setup is opened read-only. The -immediate following write(2) call then fails with -EBADF. - ---- - grub-core/kern/emu/hostdisk.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/grub-core/kern/emu/hostdisk.c b/grub-core/kern/emu/hostdisk.c -index ea7eb3d..19748df 100644 ---- a/grub-core/kern/emu/hostdisk.c -+++ b/grub-core/kern/emu/hostdisk.c -@@ -1081,7 +1081,7 @@ grub_util_biosdisk_write (grub_disk_t disk, grub_disk_addr_t sector, - { - int fd; - grub_disk_addr_t max = ~0ULL; -- fd = open_device (disk, sector, O_RDONLY, &max); -+ fd = open_device (disk, sector, O_WRONLY, &max); - if (fd < 0) - return grub_errno; - --- -1.7.10 - From a6e7ffd3f08f49bf9843c60dc546a5ad1d513e64 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:28:36 +0200 Subject: [PATCH 02/20] update README.Fedora --- README.Fedora | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/README.Fedora b/README.Fedora index 3313a5a..efa29ad 100644 --- a/README.Fedora +++ b/README.Fedora @@ -38,9 +38,14 @@ GRUB 2 in Fedora ---------------- The Fedora installer (anaconda) will make sure grub2 is installed for new and -updated systems. It will write /etc/default/grub and run grub2-mkconfig to -create /boot/grub2/grub.cfg, and it will run grub2-install to install the boot -loader in the MBR and in /boot/grub2/ . +updated systems. It will run grub2-install to install the boot loader in the +MBR and in /boot/grub2/, and it will write /etc/default/grub and run +grub2-mkconfig to create /boot/grub2/grub.cfg. + +The active boot loader will not be changed when the GRUB 2 package is updated. +A new boot loader can be installed with something like: + + grub2-install /dev/sda grubby will patch grub.cfg (through /etc/grub2.cfg) when new kernels are installed. The GRUB 2 configuration system in /etc/default/grub and /etc/grub.d/ @@ -49,26 +54,17 @@ grub.cfg with: grub2-mkconfig -o /boot/grub2/grub.cfg -The active boot loader will not be changed when the GRUB 2 package is updated. -A new boot loader can be installed with something like: - - grub2-install /dev/sda - Documentation ------------- -The GRUB 2 manual can be found on http://www.gnu.org/software/grub/manual/ . +The GRUB 2 manual can be found in grub.html or on +http://www.gnu.org/software/grub/manual/ . Support channels ---------------- If you find a bug in this package, report them to the Red Hat Bugzilla [2]. For talk about using grub2, use IRC channel #grub on freenode Network [3]. -You can meet this package maintainer there (nick lkundrak). [2] http://bugzilla.redhat.com/ [3] http://freenode.net/ - --- -Lubomir Rintel -Fedora Project From c3c573eb67b17a496b7d5bcdda399b2baeae7c0f Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 03/20] drop grub-1.99-handle-fwrite-return.patch fixed upstream revno: 4320 committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Thu 2012-05-10 09:39:11 +0200 message: * util/grub-menulst2cfg.c (main): Check return value of fwrite. * util/grub-mklayout.c (write_file): Likewise. New argument fname. All users updated. --- grub-1.99-handle-fwrite-return.patch | 59 ---------------------------- grub2.spec | 1 - 2 files changed, 60 deletions(-) delete mode 100644 grub-1.99-handle-fwrite-return.patch diff --git a/grub-1.99-handle-fwrite-return.patch b/grub-1.99-handle-fwrite-return.patch deleted file mode 100644 index 8cbced6..0000000 --- a/grub-1.99-handle-fwrite-return.patch +++ /dev/null @@ -1,59 +0,0 @@ -From de1c35857ee803653d3ffd94eb5d3f3b45ab000e Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Wed, 2 Mar 2011 11:29:28 -0500 -Subject: [PATCH] Don't ignore fwrite's return since we build with -Wno-unused. - ---- - util/grub-mklayout.c | 7 ++++--- - 1 files changed, 4 insertions(+), 3 deletions(-) - -diff --git a/util/grub-mklayout.c b/util/grub-mklayout.c -index 04501cb..beea3eb 100644 ---- a/util/grub-mklayout.c -+++ b/util/grub-mklayout.c -@@ -324,6 +324,7 @@ write_file (FILE *out, struct grub_keyboard_layout *layout) - { - grub_uint32_t version; - unsigned i; -+ int rc; - - version = grub_cpu_to_le32 (GRUB_KEYBOARD_LAYOUTS_VERSION); - -@@ -342,10 +343,10 @@ write_file (FILE *out, struct grub_keyboard_layout *layout) - layout->keyboard_map_shift_l3[i] - = grub_cpu_to_le32(layout->keyboard_map_shift_l3[i]); - -- fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1, -+ rc = fwrite (GRUB_KEYBOARD_LAYOUTS_FILEMAGIC, 1, - GRUB_KEYBOARD_LAYOUTS_FILEMAGIC_SIZE, out); -- fwrite (&version, sizeof (version), 1, out); -- fwrite (layout, 1, sizeof (*layout), out); -+ rc = fwrite (&version, sizeof (version), 1, out); -+ rc = fwrite (layout, 1, sizeof (*layout), out); - } - - static void --- -1.7.3.1 - -diff --git a/util/grub-menulst2cfg.c b/util/grub-menulst2cfg.c -index 513af47..308f8e9 100644 ---- a/util/grub-menulst2cfg.c -+++ b/util/grub-menulst2cfg.c -@@ -34,6 +34,7 @@ main (int argc, char **argv) - size_t bufsize = 0; - char *suffix = xstrdup (""); - int suffixlen = 0; -+ int rc; - - if (argc >= 2 && argv[1][0] == '-') - { -@@ -111,7 +112,7 @@ main (int argc, char **argv) - if (entryname) - fprintf (out, "}\n\n"); - -- fwrite (suffix, 1, suffixlen, out); -+ rc = fwrite (suffix, 1, suffixlen, out); - - free (buf); - free (suffix); diff --git a/grub2.spec b/grub2.spec index 0e2d802..eeba680 100644 --- a/grub2.spec +++ b/grub2.spec @@ -50,7 +50,6 @@ Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{tarversion}.tar.xz Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 -Patch0: grub-1.99-handle-fwrite-return.patch Patch1: grub-1.99-grub_test_assert_printf.patch Patch2: grub-1.99-just-say-linux.patch Patch3: grub2-handle-initramfs-on-xen.patch From 670545d7258aeda3edb13edbcc734308721f5efc Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 04/20] drop grub-1.99-grub_test_assert_printf.patch fixed upstream revno: 4377 author: Peter Jones committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Sun 2012-05-27 14:26:18 +0200 message: The old code gives arguments to a printf function which can't work correctly, and the compiler complains. * grub-core/tests/example_functional_test.c (example_test): Add missing text. * grub-core/tests/lib/test.c (add_failure): Rewrite. * include/grub/test.h (grub_test_assert_helper): New declaration. (grub_test_assert): Use grub_test_assert_helper. --- grub-1.99-grub_test_assert_printf.patch | 167 ------------------------ grub2.spec | 1 - 2 files changed, 168 deletions(-) delete mode 100644 grub-1.99-grub_test_assert_printf.patch diff --git a/grub-1.99-grub_test_assert_printf.patch b/grub-1.99-grub_test_assert_printf.patch deleted file mode 100644 index f6fa68d..0000000 --- a/grub-1.99-grub_test_assert_printf.patch +++ /dev/null @@ -1,167 +0,0 @@ -From e51968bcd089db5efd5e33043e6e23592f696371 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Wed, 2 Mar 2011 13:13:44 -0500 -Subject: [PATCH] Make get_test_assert() correctly format its output. - -The old code gives arguments to a printf function which can't work -correctly, and the compiler complains. ---- - grub-core/tests/example_functional_test.c | 2 +- - grub-core/tests/lib/test.c | 88 +++++++++++++++++++++++++++-- - include/grub/test.h | 10 ++- - 3 files changed, 90 insertions(+), 10 deletions(-) - -diff --git a/grub-core/tests/example_functional_test.c b/grub-core/tests/example_functional_test.c -index 5259881..0c69749 100644 ---- a/grub-core/tests/example_functional_test.c -+++ b/grub-core/tests/example_functional_test.c -@@ -24,7 +24,7 @@ static void - example_test (void) - { - /* Check if 1st argument is true and report with default error message. */ -- grub_test_assert (1 == 1); -+ grub_test_assert (1 == 1, "1 equal 1 expected"); - - /* Check if 1st argument is true and report with custom error message. */ - grub_test_assert (2 == 2, "2 equal 2 expected"); -diff --git a/grub-core/tests/lib/test.c b/grub-core/tests/lib/test.c -index 06d78b7..8453d5b 100644 ---- a/grub-core/tests/lib/test.c -+++ b/grub-core/tests/lib/test.c -@@ -42,22 +42,75 @@ typedef struct grub_test_failure *grub_test_failure_t; - grub_test_t grub_test_list; - static grub_test_failure_t failure_list; - --static void --add_failure (const char *file, -- const char *funp, -- grub_uint32_t line, const char *fmt, va_list args) -+static grub_test_failure_t -+failure_start(const char *file, const char *funp, grub_uint32_t line); -+static grub_test_failure_t -+failure_start(const char *file, const char *funp, grub_uint32_t line) - { - grub_test_failure_t failure; - - failure = (grub_test_failure_t) grub_malloc (sizeof (*failure)); - if (!failure) -- return; -+ return NULL; - - failure->file = grub_strdup (file ? : ""); -+ if (!failure->file) -+ { -+ grub_free(failure); -+ return NULL; -+ } -+ - failure->funp = grub_strdup (funp ? : ""); -+ if (!failure->funp) -+ { -+ grub_free(failure->file); -+ grub_free(failure); -+ return NULL; -+ } -+ - failure->line = line; -- failure->message = grub_xvasprintf (fmt, args); - -+ failure->message = NULL; -+ -+ return failure; -+} -+ -+static void -+failure_append_vtext(grub_test_failure_t failure, const char *fmt, va_list args); -+static void -+failure_append_vtext(grub_test_failure_t failure, const char *fmt, va_list args) -+{ -+ char *msg = grub_xvasprintf(fmt, args); -+ if (failure->message) -+ { -+ char *oldmsg = failure->message; -+ -+ failure->message = grub_xasprintf("%s%s", oldmsg, msg); -+ grub_free(oldmsg); -+ } -+ else -+ { -+ failure->message = msg; -+ } -+} -+ -+static void -+failure_append_text(grub_test_failure_t failure, const char *fmt, ...) -+{ -+ va_list args; -+ -+ va_start(args, fmt); -+ failure_append_vtext(failure, fmt, args); -+ va_end(args); -+} -+ -+static void -+add_failure (const char *file, -+ const char *funp, -+ grub_uint32_t line, const char *fmt, va_list args) -+{ -+ grub_test_failure_t failure = failure_start(file, funp, line); -+ failure_append_text(failure, fmt, args); - grub_list_push (GRUB_AS_LIST_P (&failure_list), GRUB_AS_LIST (failure)); - } - -@@ -100,6 +153,29 @@ grub_test_nonzero (int cond, - } - - void -+grub_test_assert_helper (int cond, const char *file, const char *funp, -+ grub_uint32_t line, const char *condstr, -+ const char *fmt, ...) -+{ -+ va_list ap; -+ grub_test_failure_t failure; -+ -+ if (cond) -+ return; -+ -+ failure = failure_start(file, funp, line); -+ failure_append_text(failure, "assert failed: %s ", condstr); -+ -+ va_start(ap, fmt); -+ -+ failure_append_vtext(failure, fmt, ap); -+ -+ va_end(ap); -+ -+ grub_list_push (GRUB_AS_LIST_P (&failure_list), GRUB_AS_LIST (failure)); -+} -+ -+void - grub_test_register (const char *name, void (*test_main) (void)) - { - grub_test_t test; -diff --git a/include/grub/test.h b/include/grub/test.h -index 5d1ba75..d876f57 100644 ---- a/include/grub/test.h -+++ b/include/grub/test.h -@@ -54,10 +54,14 @@ void grub_test_nonzero (int cond, const char *file, - __attribute__ ((format (printf, 5, 6))); - - /* Macro to fill in location details and an optional error message. */ -+void grub_test_assert_helper (int cond, const char *file, -+ const char *func, grub_uint32_t line, -+ const char *condstr, const char *fmt, ...) -+ __attribute__ ((format (printf, 6, 7))); -+ - #define grub_test_assert(cond, ...) \ -- grub_test_nonzero(cond, GRUB_FILE, __FUNCTION__, __LINE__, \ -- ## __VA_ARGS__, \ -- "assert failed: %s", #cond) -+ grub_test_assert_helper(cond, GRUB_FILE, __FUNCTION__, __LINE__, \ -+ #cond, ## __VA_ARGS__); - - void grub_unit_test_init (void); - void grub_unit_test_fini (void); --- -1.7.3.1 - diff --git a/grub2.spec b/grub2.spec index eeba680..f2dd2a3 100644 --- a/grub2.spec +++ b/grub2.spec @@ -50,7 +50,6 @@ Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{tarversion}.tar.xz Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 -Patch1: grub-1.99-grub_test_assert_printf.patch Patch2: grub-1.99-just-say-linux.patch Patch3: grub2-handle-initramfs-on-xen.patch Patch4: grub-1.99-Fix-tests-of-zeroed-partition.patch From 7ef969cae5911e2cfcd6df68a14316ab5bc9d478 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 05/20] drop grub2-handle-initramfs-on-xen.patch fixed upstream revno: 4319 committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Thu 2012-05-10 02:36:23 +0200 message: * util/grub.d/20_linux_xen.in: Update initrd list based on 10_linux.in counterpart. --- grub2-handle-initramfs-on-xen.patch | 16 ---------------- grub2.spec | 1 - 2 files changed, 17 deletions(-) delete mode 100644 grub2-handle-initramfs-on-xen.patch diff --git a/grub2-handle-initramfs-on-xen.patch b/grub2-handle-initramfs-on-xen.patch deleted file mode 100644 index 38a7df9..0000000 --- a/grub2-handle-initramfs-on-xen.patch +++ /dev/null @@ -1,16 +0,0 @@ -From: Marko Ristola -Date: 2011-08-07 07:43:01 EDT -Subject: [PATCH] Xen also uses initramfs not initrd filename - -diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in ---- a/util/grub.d/20_linux_xen.in 2011-05-17 17:10:29 +0000 -+++ b/util/grub.d/20_linux_xen.in 2011-09-14 19:02:23 +0000 -@@ -154,6 +154,7 @@ - for i in "initrd.img-${version}" "initrd-${version}.img" \ - "initrd-${version}" "initrd.img-${alt_version}" \ - "initrd-${alt_version}.img" "initrd-${alt_version}" \ -+ "initramfs-${version}.img" "initramfs-${alt_version}" \ - "initramfs-genkernel-${version}" \ - "initramfs-genkernel-${alt_version}" ; do - if test -e "${dirname}/${i}" ; then - diff --git a/grub2.spec b/grub2.spec index f2dd2a3..6b24284 100644 --- a/grub2.spec +++ b/grub2.spec @@ -51,7 +51,6 @@ Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 Patch2: grub-1.99-just-say-linux.patch -Patch3: grub2-handle-initramfs-on-xen.patch Patch4: grub-1.99-Fix-tests-of-zeroed-partition.patch Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch From 2f2c551902788f26fcc67a25d640315a8e570946 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 06/20] drop grub-1.99-Fix-tests-of-zeroed-partition.patch fixed upstream revno: 4325 committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Fri 2012-05-11 21:07:39 +0200 message: Use grub-probe and not cmp to check that disk is empty. * util/grub-install.in: Use grub-probe for zero-check. * util/grub-probe.c (PRINT_ZERO_CHECK): New enum value. (probe): Handle PRINT_ZERO_CHECK. (argp_parser): Handle -t zero_check. --- grub-1.99-Fix-tests-of-zeroed-partition.patch | 25 ------------------- grub2.spec | 1 - 2 files changed, 26 deletions(-) delete mode 100644 grub-1.99-Fix-tests-of-zeroed-partition.patch diff --git a/grub-1.99-Fix-tests-of-zeroed-partition.patch b/grub-1.99-Fix-tests-of-zeroed-partition.patch deleted file mode 100644 index 343c378..0000000 --- a/grub-1.99-Fix-tests-of-zeroed-partition.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c8f67c2ee40815c075f1d6e5b3d6b504fbe204f5 Mon Sep 17 00:00:00 2001 -From: Mark Hamzy -Date: Sun, 25 Mar 2012 09:22:34 -0500 -Subject: [PATCH] Fix tests of zeroed partition - ---- - util/grub-install.in | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/util/grub-install.in b/util/grub-install.in -index 9c1d133..e8638af 100644 ---- a/util/grub-install.in -+++ b/util/grub-install.in -@@ -750,7 +750,7 @@ elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ] - exit 1 - fi - -- if [ "$(file -s "${install_device}" -b | awk '{ print $1 }')" = ELF ] || [ $(cmp /dev/zero "${install_device}" &>/dev/null) ]; then -+ if [ "$(file -s "${install_device}" -b | awk '{ print $1 }')" = ELF ] || (cmp -s -n $(blockdev --getsize64 ${install_device}) /dev/zero "${install_device}"); then - # Change boot device to the harddisk root - boot_device="$ofpath" - dd if="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" of="${install_device}" status=noxfer || { --- -1.7.7.2 - diff --git a/grub2.spec b/grub2.spec index 6b24284..84de407 100644 --- a/grub2.spec +++ b/grub2.spec @@ -51,7 +51,6 @@ Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 Patch2: grub-1.99-just-say-linux.patch -Patch4: grub-1.99-Fix-tests-of-zeroed-partition.patch Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch Patch8: grub2-2.0-no-png-in-texi.patch From 25349df6ac9d8061492f0a2a315da1ae79fd1cc8 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 07/20] drop grub2-2.0-no-png-in-texi.patch fixed upstream revno: 4355 author: Jordan Uggla committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Tue 2012-05-22 09:15:28 +0200 message: * docs/grub-dev.texi: Remove dot from .png. --- grub2-2.0-no-png-in-texi.patch | 25 ------------------------- grub2.spec | 1 - 2 files changed, 26 deletions(-) delete mode 100644 grub2-2.0-no-png-in-texi.patch diff --git a/grub2-2.0-no-png-in-texi.patch b/grub2-2.0-no-png-in-texi.patch deleted file mode 100644 index b8b6058..0000000 --- a/grub2-2.0-no-png-in-texi.patch +++ /dev/null @@ -1,25 +0,0 @@ -From e3c5e7e3accaced35b3e3ee367068d14bbce91bf Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Thu, 10 May 2012 16:31:29 -0400 -Subject: [PATCH] Specifying .png in @image doesn't work - leaving it out - ---- - docs/grub-dev.texi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi -index 51b4787..ddde5e9 100644 ---- a/docs/grub-dev.texi -+++ b/docs/grub-dev.texi -@@ -1689,7 +1689,7 @@ right edges of two adjacent glyphs. The @strong{device width} field determines - the effective leading value that is used to render the font. - - @end itemize --@image{font_char_metrics,,,,.png} -+@image{font_char_metrics,,,,} - - An illustration of how the various font metrics apply to characters. - --- -1.7.10.1 - diff --git a/grub2.spec b/grub2.spec index 84de407..d5c88d2 100644 --- a/grub2.spec +++ b/grub2.spec @@ -53,7 +53,6 @@ Source5: theme.tar.bz2 Patch2: grub-1.99-just-say-linux.patch Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch -Patch8: grub2-2.0-no-png-in-texi.patch Patch9: grub-2.00-Fix-module-trampoline-for-ppc.patch Patch10: grub-2.00-add-fw_path-search.patch Patch11: grub-2.00-Add-fwsetup.patch From 539e69ed2fd3a3678f089ed7dbfbb18b4f0402a4 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Fri, 1 Jun 2012 18:38:29 +0200 Subject: [PATCH 08/20] drop grub-2.00-Fix-module-trampoline-for-ppc.patch fixed upstream revno: 4348 author: Benjamin Herrenschmidt committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Mon 2012-05-21 22:40:34 +0200 message: * grub-core/kern/powerpc/dl.c (trampoline_template): Use r12 instead of r0. --- grub-2.00-Fix-module-trampoline-for-ppc.patch | 120 ------------------ grub2.spec | 1 - 2 files changed, 121 deletions(-) delete mode 100644 grub-2.00-Fix-module-trampoline-for-ppc.patch diff --git a/grub-2.00-Fix-module-trampoline-for-ppc.patch b/grub-2.00-Fix-module-trampoline-for-ppc.patch deleted file mode 100644 index 60cde3a..0000000 --- a/grub-2.00-Fix-module-trampoline-for-ppc.patch +++ /dev/null @@ -1,120 +0,0 @@ -Return-Path: benh@au1.ibm.com -Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO - zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by - zmail14.collab.prod.int.phx2.redhat.com with LMTP; Sun, 13 May 2012 - 23:43:23 -0400 (EDT) -Received: from localhost (localhost.localdomain [127.0.0.1]) - by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id A92D5F0BC1 - for ; Sun, 13 May 2012 23:43:23 -0400 (EDT) -Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1]) - by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id KDt5yD-zSoXe for ; - Sun, 13 May 2012 23:43:23 -0400 (EDT) -Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) - by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 951A2F0843 - for ; Sun, 13 May 2012 23:43:23 -0400 (EDT) -Received: from mx1.redhat.com (ext-mx12.extmail.prod.ext.phx2.redhat.com [10.5.110.17]) - by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q4E3hNWo019302 - for ; Sun, 13 May 2012 23:43:23 -0400 -Received: from bastion.fedoraproject.org (bastion02.phx2.fedoraproject.org [10.5.126.11]) - by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q4E3hLtl006033 - for ; Sun, 13 May 2012 23:43:21 -0400 -Received: by bastion02.phx2.fedoraproject.org (Postfix) - id 1B8B34040D; Mon, 14 May 2012 03:43:21 +0000 (UTC) -Delivered-To: pjones@fedoraproject.org -Received: from mx2.redhat.com (ext-mx01.rdu.redhat.com [10.11.45.6]) - by bastion02.phx2.fedoraproject.org (Postfix) with ESMTP id AF73B402BC - for ; Mon, 14 May 2012 03:43:20 +0000 (UTC) -Received: from e23smtp06.au.ibm.com (e23smtp06.au.ibm.com [202.81.31.148]) - by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id q4E3h5JZ014320 - for ; Sun, 13 May 2012 23:43:11 -0400 -Received: from /spool/local - by e23smtp06.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted - for from ; - Mon, 14 May 2012 03:37:12 +1000 -Received: from d23relay03.au.ibm.com (202.81.31.245) - by e23smtp06.au.ibm.com (202.81.31.212) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; - Mon, 14 May 2012 03:37:09 +1000 -Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) - by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q4E3gcbg60358704 - for ; Mon, 14 May 2012 13:42:38 +1000 -Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) - by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q4E3gb1m003356 - for ; Mon, 14 May 2012 13:42:37 +1000 -Received: from ozlabs.au.ibm.com (ozlabs.au.ibm.com [9.190.163.12]) - by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q4E3gbsI003349; - Mon, 14 May 2012 13:42:37 +1000 -Received: from [10.61.2.137] (haven.au.ibm.com [9.190.164.82]) - (using SSLv3 with cipher AES256-SHA (256/256 bits)) - (Client did not present a certificate) - by ozlabs.au.ibm.com (Postfix) with ESMTPSA id B60A073A09; - Mon, 14 May 2012 13:42:37 +1000 (EST) -Message-ID: <1336966957.6727.15.camel@pasglop> -Subject: [PATCH] grub: Fix module trampoline for powerpc -From: Benjamin Herrenschmidt -To: Brent Baude , pjones@fedoraproject.org -Cc: hamzy@us.ibm.com, Josh Boyer -Date: Mon, 14 May 2012 13:42:37 +1000 -Organization: IBM Australia -Content-Type: text/plain; charset="UTF-8" -Content-Transfer-Encoding: 7bit -Mime-Version: 1.0 -x-cbid: 12051317-7014-0000-0000-0000011BC8AA -X-RedHat-Spam-Score: -5.01 (RCVD_IN_DNSWL_HI,T_RP_MATCHES_RCVD) -X-RedHat-Spam-Score: -5.011 (RCVD_IN_DNSWL_HI,SPF_PASS,T_RP_MATCHES_RCVD) -X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 -X-Scanned-By: MIMEDefang 2.68 on 10.5.110.17 -X-Scanned-By: MIMEDefang 2.67 on 10.11.45.6 - -[ --- snip --- ] - -Not sure who to send that to, I picked Peter as he's in -the rpm log as author of the of the powerpc patches, -feel free to do whatever with that one, it should ultimately -go to upstream grub I suppose ... - -Without this, grub doesn't work for me at all with fc17 beta - -[ --- snip --- ] - -The trampoline generated by grub powerpc's dl.c to call from -modules into the main grub code uses r0 as a scratch register. - -However, nowadays, gcc can (and will) generate function calls -to spill registers to the stack (well, it's even stupid enough -to do it when there's only one register to save ! go figure....) - -Those calls happen during the function prolog, before the -return address has been saved on the stack, typically it's held -in r0 at this stage. Since those calls will hit the trampoline -in grub, which clobbers r0, this will clobber the return address -and cause a crash. - -This patch changes the trampolines to use r12 instead which -is safe to use in our case. - -Note: It might be better to actually link those low level gcc -support functions statically into the modules but that's beyond -the level of grub hacking I'm prepared to do today. - -Signed-off-by: Benjamin Herrenschmidt ---- -diff --git a/grub-core/kern/powerpc/dl.c b/grub-core/kern/powerpc/dl.c -index b8a2b50..0a8ec85 100644 ---- a/grub-core/kern/powerpc/dl.c -+++ b/grub-core/kern/powerpc/dl.c -@@ -89,9 +89,9 @@ struct trampoline - - static const struct trampoline trampoline_template = - { -- 0x3c000000, -- 0x60000000, -- 0x7c0903a6, -+ 0x3d800000, -+ 0x618c0000, -+ 0x7d8903a6, - 0x4e800420, - }; - - - diff --git a/grub2.spec b/grub2.spec index d5c88d2..2a3996d 100644 --- a/grub2.spec +++ b/grub2.spec @@ -53,7 +53,6 @@ Source5: theme.tar.bz2 Patch2: grub-1.99-just-say-linux.patch Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch -Patch9: grub-2.00-Fix-module-trampoline-for-ppc.patch Patch10: grub-2.00-add-fw_path-search.patch Patch11: grub-2.00-Add-fwsetup.patch Patch12: grub-2.00-ppc-no-tree-scanning.patch From 1c11a98761311ff5c122ba02fb31281a87fcb059 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:07 +0200 Subject: [PATCH 09/20] drop grub-2.00-ppc-no-tree-scanning.patch fixed upstream revno: 4334 committer: Vladimir 'phcoder' Serbinenko branch nick: grub timestamp: Sun 2012-05-13 20:29:23 +0200 message: * grub-core/disk/ieee1275/ofdisk.c (scan): Don't scan device tree if GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS is set. * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS on IBM hardware. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New enum value GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS. --- grub-2.00-ppc-no-tree-scanning.patch | 59 ---------------------------- grub2.spec | 1 - 2 files changed, 60 deletions(-) delete mode 100644 grub-2.00-ppc-no-tree-scanning.patch diff --git a/grub-2.00-ppc-no-tree-scanning.patch b/grub-2.00-ppc-no-tree-scanning.patch deleted file mode 100644 index f0558f7..0000000 --- a/grub-2.00-ppc-no-tree-scanning.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 03f6e77635f4f311a2c7bdd581f6202fa52feef7 Mon Sep 17 00:00:00 2001 -From: Valdimir Serbinenko -Date: Sun, 13 May 2012 18:23:02 +0000 -Subject: [PATCH] Don't scan device tree if flag is set. - -Don't scan device tree if GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS is -set. - -=== modified file 'grub-core/disk/ieee1275/ofdisk.c' ---- - grub-core/disk/ieee1275/ofdisk.c | 3 ++- - grub-core/kern/ieee1275/cmain.c | 3 +++ - include/grub/ieee1275/ieee1275.h | 2 ++ - 3 files changed, 7 insertions(+), 1 deletion(-) - -diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c -index 56fed0a..6b734f7 100644 ---- a/grub-core/disk/ieee1275/ofdisk.c -+++ b/grub-core/disk/ieee1275/ofdisk.c -@@ -159,7 +159,8 @@ scan (void) - } - - grub_devalias_iterate (dev_iterate_alias); -- grub_ieee1275_devices_iterate (dev_iterate); -+ if (!grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS)) -+ grub_ieee1275_devices_iterate (dev_iterate); - } - - static int -diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c -index 9e80757..e04ce5b 100644 ---- a/grub-core/kern/ieee1275/cmain.c -+++ b/grub-core/kern/ieee1275/cmain.c -@@ -88,6 +88,9 @@ grub_ieee1275_find_options (void) - if (rc >= 0 && !grub_strcmp (tmp, "Emulated PC")) - is_qemu = 1; - -+ if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0) -+ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS); -+ - if (grub_strncmp (tmp, "PowerMac", sizeof ("PowerMac") - 1) == 0) - grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS); - -diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h -index fb85db9..99a4bc1 100644 ---- a/include/grub/ieee1275/ieee1275.h -+++ b/include/grub/ieee1275/ieee1275.h -@@ -116,6 +116,8 @@ enum grub_ieee1275_flag - 1 address cell is used on PowerMacs. - */ - GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS, -+ -+ GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS - }; - - extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag); --- -1.7.10.1 - diff --git a/grub2.spec b/grub2.spec index 2a3996d..8b39a5b 100644 --- a/grub2.spec +++ b/grub2.spec @@ -55,7 +55,6 @@ Patch5: grub-1.99-ppc-terminfo.patch Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch Patch10: grub-2.00-add-fw_path-search.patch Patch11: grub-2.00-Add-fwsetup.patch -Patch12: grub-2.00-ppc-no-tree-scanning.patch Patch13: grub-2.00-Dont-set-boot-on-ppc.patch Patch14: grub-2.00-ignore-gnulib-gets-stupidity.patch From 4ae29c92c0e8c666599750c6768591f1d0488ca7 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:07 +0200 Subject: [PATCH 10/20] update grub-2.00-Add-fwsetup.patch to beta6 --- grub-2.00-Add-fwsetup.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grub-2.00-Add-fwsetup.patch b/grub-2.00-Add-fwsetup.patch index b564b29..051a9e1 100644 --- a/grub-2.00-Add-fwsetup.patch +++ b/grub-2.00-Add-fwsetup.patch @@ -29,9 +29,9 @@ index ce52576..29ebcbd 100644 + * include/grub/efi/api.h: add define for OsIndications variable + * include/grub/efi/efi.h: export grub_efi_set_variable + - 2012-04-18 Vladimir Serbinenko + 2012-05-31 Vladimir Serbinenko - * configure.ac: Bump to beta5. + * configure.ac: Bump to beta6. diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def index 000cf0d..d0c06d5 100644 --- a/grub-core/Makefile.core.def From fa2c25cfff6b2a398902458fdc659636e8bfab7a Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:16 +0200 Subject: [PATCH 11/20] update grub-2.00-Dont-set-boot-on-ppc.patch to beta6 --- grub-2.00-Dont-set-boot-on-ppc.patch | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/grub-2.00-Dont-set-boot-on-ppc.patch b/grub-2.00-Dont-set-boot-on-ppc.patch index 11869af..c2051f4 100644 --- a/grub-2.00-Dont-set-boot-on-ppc.patch +++ b/grub-2.00-Dont-set-boot-on-ppc.patch @@ -14,7 +14,7 @@ index 293b756..2503aa0 100644 --- a/util/grub-install.in +++ b/util/grub-install.in @@ -818,14 +818,16 @@ elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ] - fi + } fi - "$nvsetenv" boot-device "$boot_device" || { @@ -25,16 +25,16 @@ index 293b756..2503aa0 100644 - echo " setenv boot-device $boot_device" 1>&2 - exit 1 - } -+ if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ]; then -+ "$nvsetenv" boot-device "$boot_device" || { ++ if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ]; then ++ "$nvsetenv" boot-device "$boot_device" || { + # TRANSLATORS: The %s will be replaced by an external program name. -+ gettext_printf "\`%s' failed.\n" "$nvsetenv" 1>&2 -+ gettext "You will have to set \`boot-device' variable manually. At the IEEE1275 prompt, type:" 1>&2 -+ echo 1>&2 -+ echo " setenv boot-device $boot_device" 1>&2 -+ exit 1 -+ } -+ fi ++ gettext_printf "\`%s' failed.\n" "$nvsetenv" 1>&2 ++ gettext "You will have to set \`boot-device' variable manually. At the IEEE1275 prompt, type:" 1>&2 ++ echo 1>&2 ++ echo " setenv boot-device $boot_device" 1>&2 ++ exit 1 ++ } ++ fi fi elif [ x"${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = xmips-arc ]; then dvhtool -d "${install_device}" --unix-to-vh "{grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" grub From b6c9f4d5b7a8c7a0b69eae958fd5555ce08a980b Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:48 +0200 Subject: [PATCH 12/20] drop grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch The patch do longer apply cleanly and is non-trivial to update. Upstreams comment on Bug 815318: Actually this whole thread results from a simple misconception as to how to install GRUB on HFS(+) in the first place. Usual way is to mount it on /boot/grub and use grub-install *without* disk argument --- ...-support-for-PowerMac-HFS-partitions.patch | 94 ------------------- grub2.spec | 1 - 2 files changed, 95 deletions(-) delete mode 100644 grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch diff --git a/grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch b/grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch deleted file mode 100644 index 4cad3e7..0000000 --- a/grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch +++ /dev/null @@ -1,94 +0,0 @@ -From f2dc76d4d82ac9bbe5ccb4e8ccc49c14e8574c20 Mon Sep 17 00:00:00 2001 -From: Fedora Ninjas -Date: Wed, 25 Apr 2012 13:09:15 +0200 -Subject: [PATCH 2/2] add support for PowerMac HFS partitions - -Signed-off-by: Fedora PPC secondary arch maintainer ---- - util/grub-install.in | 67 ++++++++++++++++++++++++++++++++------------------ - 1 files changed, 43 insertions(+), 24 deletions(-) - -diff --git a/util/grub-install.in b/util/grub-install.in -index 26be9d9..f1f9bae 100644 ---- a/util/grub-install.in -+++ b/util/grub-install.in -@@ -757,33 +757,52 @@ elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ] - - # If a install device is defined, copy the core.elf to PReP partition. - else -- if [ "$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t msdos_parttype)" != "41" ]; then -- gettext "The chosen partition is not a PReP partition." 1>&2 -- echo 1>&2 -- exit 1 -- fi -- -+ if [ "$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t msdos_parttype)" = "41" ]; then - if [ "$(file -s "${install_device}" -b | awk '{ print $1 }')" = ELF ] || (cmp -s -n $(blockdev --getsize64 ${install_device}) /dev/zero "${install_device}"); then -- # Change boot device to the harddisk root -- boot_device="$ofpath" -- dd if="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" of="${install_device}" status=noxfer || { -- gettext "Failed to copy Grub to the PReP partition." 1>&2 -- echo 1>&2 -- exit 1 -- } -+ # Change boot device to the harddisk root -+ boot_device="$ofpath" -+ dd if="${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" of="${install_device}" status=noxfer || { -+ gettext "Failed to copy Grub to the PReP partition." 1>&2 -+ echo 1>&2 -+ exit 1 -+ } - else -- gettext "The PReP partition is not empty. If you are sure you want to use it, run dd to clear it:" 1>&2 -- echo 1>&2 -- echo " dd if=/dev/zero of=${install_device}" -- exit 1 -+ gettext "The PReP partition is not empty. If you are sure you want to use it, run dd to clear it:" 1>&2 -+ echo 1>&2 -+ echo " dd if=/dev/zero of=${install_device}" -+ exit 1 - fi -- dev="`echo "${install_device}" | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`" -- boot_device="`$ofpathname "$dev"`" || { -- # TRANSLATORS: "device tree path" is the name of the device -- # for IEEE1275 -- gettext_printf "Couldn't find IEEE1275 device tree path for %s.\nYou will have to set \`boot-device' variable manually.\n" "$dev" 1>&2 -- exit 1 -- } -+ dev="`echo "${install_device}" | sed -e 's/\/dev\///' -e 's/[0-9]\+//'`" -+ boot_device="`$ofpathname "$dev"`" || { -+ # TRANSLATORS: "device tree path" is the name of the device -+ # for IEEE1275 -+ gettext_printf "Couldn't find IEEE1275 device tree path for %s.\nYou will have to set \`boot-device' variable manually.\n" "$dev" 1>&2 -+ exit 1 -+ } -+ else -+ hmount ${install_device} >/dev/null 2>&1 -+ if [ $? -eq 0 ]; then -+ humount "${install_device}" -+ # Change boot device to the harddisk root -+ boot_device="$ofpath" -+ hmount "${install_device}" -+ hcopy "${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform/core.${imgext}" ":" || { -+ gettext "Failed to copy Grub to the HFS partition." 1>&2 -+ gettext "Maybe the HFS partition is not empty. If you are sure you want to use it, run hformat to clear it:" 1>&2 -+ echo 1>&2 -+ echo " hformat ${install_device}" -+ exit 1 -+ } -+ humount "${install_device}" -+ # We're on PowerMac, it's either /dev/sdaX or /dev/hdaX: -+ dev="`echo "${install_device}" | sed -e 's/\/dev\/.da//'`" -+ boot_device="hd:${dev},core.${imgext}" -+ else -+ gettext "The chosen partition is neither a PReP nor a HFS partition." 1>&2 -+ echo 1>&2 -+ exit 1 -+ fi -+ fi - fi - - "$nvsetenv" boot-device "$boot_device" || { --- -1.7.6.5 - diff --git a/grub2.spec b/grub2.spec index 8b39a5b..ec37982 100644 --- a/grub2.spec +++ b/grub2.spec @@ -52,7 +52,6 @@ Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 Patch2: grub-1.99-just-say-linux.patch Patch5: grub-1.99-ppc-terminfo.patch -Patch7: grub-2.00~beta4-add-support-for-PowerMac-HFS-partitions.patch Patch10: grub-2.00-add-fw_path-search.patch Patch11: grub-2.00-Add-fwsetup.patch Patch13: grub-2.00-Dont-set-boot-on-ppc.patch From 437155f5eaeafe163d98638ccb84a2b04e192e1c Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:48 +0200 Subject: [PATCH 13/20] grub-2.00~beta6 --- grub2.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grub2.spec b/grub2.spec index ec37982..25d8dce 100644 --- a/grub2.spec +++ b/grub2.spec @@ -33,13 +33,13 @@ %endif -%global tarversion 2.00~beta5 +%global tarversion 2.00~beta6 %undefine _missing_build_ids_terminate_build Name: grub2 Epoch: 1 Version: 2.0 -Release: 0.32.beta5%{?dist} +Release: 0.32.beta6%{?dist} Summary: Bootloader with support for Linux, Multiboot and more Group: System Environment/Base From 5e9c41e4fe56f4886ee120bea0cd6a5f539a3bb0 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Mon, 4 Jun 2012 02:29:21 +0200 Subject: [PATCH 14/20] add grub-2.00-ieee1276.patch backport upstream rev 4405 --- grub-2.00-ieee1276.patch | 16 ++++++++++++++++ grub2.spec | 1 + 2 files changed, 17 insertions(+) create mode 100644 grub-2.00-ieee1276.patch diff --git a/grub-2.00-ieee1276.patch b/grub-2.00-ieee1276.patch new file mode 100644 index 0000000..b637868 --- /dev/null +++ b/grub-2.00-ieee1276.patch @@ -0,0 +1,16 @@ +From: Valdimir Serbinenko +Subject: Check for ieee1275 and not ieee1276. + +upstream rev 4404 + +--- a/util/grub-install.in 2012-05-31 11:38:21 +0000 ++++ b/util/grub-install.in 2012-06-01 20:43:10 +0000 +@@ -738,7 +738,7 @@ + elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "powerpc-ieee1275" ]; then + + # If a install device is defined, copy the core.elf to PReP partition. +- if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "powerpc-ieee1276" ] && [ -n "${install_device}" ]; then ++ if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "powerpc-ieee1275" ] && [ -n "${install_device}" ]; then + if [ "$("${grub_probe}" -m "${device_map}" -d "${install_device}" -t msdos_parttype)" != "41" ]; then + gettext "The chosen partition is not a PReP partition." 1>&2 + echo 1>&2 diff --git a/grub2.spec b/grub2.spec index 25d8dce..36944cb 100644 --- a/grub2.spec +++ b/grub2.spec @@ -50,6 +50,7 @@ Source0: ftp://alpha.gnu.org/gnu/grub/grub-%{tarversion}.tar.xz Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 +Patch0: grub-2.00-ieee1276.patch Patch2: grub-1.99-just-say-linux.patch Patch5: grub-1.99-ppc-terminfo.patch Patch10: grub-2.00-add-fw_path-search.patch From 7045ce64ed3d72796e9c0105577383b71dae81df Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Mon, 4 Jun 2012 02:29:21 +0200 Subject: [PATCH 15/20] add grub-2.00-no-canon.patch (#737370) backport upstream rev 4408: Don't canonicalise /dev/root and /dev/dm-*. --- grub-2.00-no-canon.patch | 29 +++++++++++++++++++++++++++++ grub2.spec | 1 + 2 files changed, 30 insertions(+) create mode 100644 grub-2.00-no-canon.patch diff --git a/grub-2.00-no-canon.patch b/grub-2.00-no-canon.patch new file mode 100644 index 0000000..14082a7 --- /dev/null +++ b/grub-2.00-no-canon.patch @@ -0,0 +1,29 @@ +From: Valdimir Serbinenko +Subject: Don't canonicalise /dev/root and /dev/dm-*. + +upstream rev 4408 + +--- a/util/getroot.c 2012-05-28 15:43:12 +0000 ++++ b/util/getroot.c 2012-06-02 12:36:27 +0000 +@@ -1036,10 +1036,16 @@ + { + char *tmp = *cur; + int root, dm; +- *cur = canonicalize_file_name (tmp); +- if (*cur == NULL) +- grub_util_error (_("failed to get canonical path of %s"), tmp); +- free (tmp); ++ if (strcmp (*cur, "/dev/root") == 0 ++ || strncmp (*cur, "/dev/dm-", sizeof ("/dev/dm-") - 1) == 0) ++ *cur = tmp; ++ else ++ { ++ *cur = canonicalize_file_name (tmp); ++ if (*cur == NULL) ++ grub_util_error (_("failed to get canonical path of %s"), tmp); ++ free (tmp); ++ } + root = (strcmp (*cur, "/dev/root") == 0); + dm = (strncmp (*cur, "/dev/dm-", sizeof ("/dev/dm-") - 1) == 0); + if (!dm && !root) + diff --git a/grub2.spec b/grub2.spec index 36944cb..c865c80 100644 --- a/grub2.spec +++ b/grub2.spec @@ -51,6 +51,7 @@ Source3: README.Fedora Source4: http://unifoundry.com/unifont-5.1.20080820.pcf.gz Source5: theme.tar.bz2 Patch0: grub-2.00-ieee1276.patch +Patch1: grub-2.00-no-canon.patch Patch2: grub-1.99-just-say-linux.patch Patch5: grub-1.99-ppc-terminfo.patch Patch10: grub-2.00-add-fw_path-search.patch From 7f44b9b44425a1ee28dcae3682219c34b2501b41 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:55:15 +0200 Subject: [PATCH 16/20] add grub-2.00-linux-mbr.patch - fix upstream bug #36490 backport upstream rev 4405 bug #36490: grub-probe doesn't work with fat32 file systems --- grub-2.00-linux-mbr.patch | 82 +++++++++++++++++++++++++++++++++++++++ grub2.spec | 2 +- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 grub-2.00-linux-mbr.patch diff --git a/grub-2.00-linux-mbr.patch b/grub-2.00-linux-mbr.patch new file mode 100644 index 0000000..ec579bb --- /dev/null +++ b/grub-2.00-linux-mbr.patch @@ -0,0 +1,82 @@ +From: Valdimir Serbinenko +Subject: Fix MBR remapping workaround. + +upstream rev 4405 + +--- a/grub-core/kern/emu/hostdisk.c 2012-05-27 11:19:09 +0000 ++++ b/grub-core/kern/emu/hostdisk.c 2012-06-02 11:48:44 +0000 +@@ -1067,27 +1067,18 @@ + if (fd < 0) + return grub_errno; + ++#ifdef __linux__ ++ if (sector == 0) ++ /* Work around a bug in Linux ez remapping. Linux remaps all ++ sectors that are read together with the MBR in one read. It ++ should only remap the MBR, so we split the read in two ++ parts. -jochen */ ++ max = 1; ++#endif /* __linux__ */ ++ + if (max > size) + max = size; + +-#ifdef __linux__ +- if (sector == 0 && max > 1) +- { +- /* Work around a bug in Linux ez remapping. Linux remaps all +- sectors that are read together with the MBR in one read. It +- should only remap the MBR, so we split the read in two +- parts. -jochen */ +- if (grub_util_fd_read (fd, buf, (1 << disk->log_sector_size)) +- != (1 << disk->log_sector_size)) +- return grub_error (GRUB_ERR_READ_ERROR, N_("cannot read `%s': %s"), +- map[disk->id].device, strerror (errno)); +- +- buf += (1 << disk->log_sector_size); +- size--; +- max--; +- } +-#endif /* __linux__ */ +- + if (grub_util_fd_read (fd, buf, max << disk->log_sector_size) + != (ssize_t) (max << disk->log_sector_size)) + return grub_error (GRUB_ERR_READ_ERROR, N_("cannot read `%s': %s"), +@@ -1111,28 +1102,18 @@ + if (fd < 0) + return grub_errno; + ++#ifdef __linux__ ++ if (sector == 0) ++ /* Work around a bug in Linux ez remapping. Linux remaps all ++ sectors that are write together with the MBR in one write. It ++ should only remap the MBR, so we split the write in two ++ parts. -jochen */ ++ max = 1; ++#endif /* __linux__ */ ++ + if (max > size) + max = size; + +-#ifdef __linux__ +- if (sector == 0 && max > 1) +- { +- /* Work around a bug in Linux ez remapping. Linux remaps all +- sectors that are write together with the MBR in one write. It +- should only remap the MBR, so we split the write in two +- parts. -jochen */ +- if (grub_util_fd_write (fd, buf, (1 << disk->log_sector_size)) +- != (1 << disk->log_sector_size)) +- return grub_error (GRUB_ERR_WRITE_ERROR, +- N_("cannot write to `%s': %s"), +- map[disk->id].device, strerror (errno)); +- +- buf += (1 << disk->log_sector_size); +- size--; +- max--; +- } +-#endif /* __linux__ */ +- + if (grub_util_fd_write (fd, buf, max << disk->log_sector_size) + != (ssize_t) (max << disk->log_sector_size)) + return grub_error (GRUB_ERR_WRITE_ERROR, N_("cannot write to `%s': %s"), diff --git a/grub2.spec b/grub2.spec index c865c80..c2e121f 100644 --- a/grub2.spec +++ b/grub2.spec @@ -58,7 +58,7 @@ Patch10: grub-2.00-add-fw_path-search.patch Patch11: grub-2.00-Add-fwsetup.patch Patch13: grub-2.00-Dont-set-boot-on-ppc.patch Patch14: grub-2.00-ignore-gnulib-gets-stupidity.patch - +Patch15: grub-2.00-linux-mbr.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) From 356609bad2c1fec4d9b192cf8a9fdc33e8534a51 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:54:48 +0200 Subject: [PATCH 17/20] add grub-2.00-no-huge-video.patch (#827003) --- grub-2.00-no-huge-video.patch | 67 +++++++++++++++++++++++++++++++++++ grub2.spec | 1 + 2 files changed, 68 insertions(+) create mode 100644 grub-2.00-no-huge-video.patch diff --git a/grub-2.00-no-huge-video.patch b/grub-2.00-no-huge-video.patch new file mode 100644 index 0000000..573c7fc --- /dev/null +++ b/grub-2.00-no-huge-video.patch @@ -0,0 +1,67 @@ +From: Valdimir Serbinenko +Subject: Reject huge flat panels and monitors over 4096x4096 + +https://bugzilla.redhat.com/show_bug.cgi?id=827003 + +Backport upstream rev 4412 + +diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c +index 3e1cc23..4628dd0 100644 +--- a/grub-core/video/efi_gop.c ++++ b/grub-core/video/efi_gop.c +@@ -368,7 +368,7 @@ grub_video_gop_setup (unsigned int width, unsigned int height, + { + err = 1; + grub_gop_get_preferred_mode (&preferred_width, &preferred_height); +- if (err) ++ if (err || width >= 4096 || height >= 4096) + { + preferred_width = 800; + preferred_height = 600; +diff --git a/grub-core/video/i386/pc/vbe.c b/grub-core/video/i386/pc/vbe.c +index 5656388..62e530a 100644 +--- a/grub-core/video/i386/pc/vbe.c ++++ b/grub-core/video/i386/pc/vbe.c +@@ -581,7 +581,6 @@ grub_vbe_get_preferred_mode (unsigned int *width, unsigned int *height) + /* Use low memory scratch area as temporary storage for VESA BIOS calls. */ + flat_panel_info = (struct grub_vbe_flat_panel_info *) + (GRUB_MEMORY_MACHINE_SCRATCH_ADDR + sizeof (struct grub_video_edid_info)); +- grub_memset (flat_panel_info, 0, sizeof (*flat_panel_info)); + + if (controller_info.version >= 0x200 + && (grub_vbe_bios_get_ddc_capabilities (&ddc_level) & 0xff) +@@ -590,14 +589,18 @@ grub_vbe_get_preferred_mode (unsigned int *width, unsigned int *height) + if (grub_video_vbe_get_edid (&edid_info) == GRUB_ERR_NONE + && grub_video_edid_checksum (&edid_info) == GRUB_ERR_NONE + && grub_video_edid_preferred_mode (&edid_info, width, height) +- == GRUB_ERR_NONE) ++ == GRUB_ERR_NONE && *width < 4096 && *height < 4096) + return GRUB_ERR_NONE; + + grub_errno = GRUB_ERR_NONE; + } + ++ grub_memset (flat_panel_info, 0, sizeof (*flat_panel_info)); + status = grub_vbe_bios_get_flat_panel_info (flat_panel_info); +- if (status == GRUB_VBE_STATUS_OK) ++ if (status == GRUB_VBE_STATUS_OK ++ && flat_panel_info->horizontal_size && flat_panel_info->vertical_size ++ && flat_panel_info->horizontal_size < 4096 ++ && flat_panel_info->vertical_size < 4096) + { + *width = flat_panel_info->horizontal_size; + *height = flat_panel_info->vertical_size; +diff --git a/grub-core/video/video.c b/grub-core/video/video.c +index 67de85a..c36994f 100644 +--- a/grub-core/video/video.c ++++ b/grub-core/video/video.c +@@ -415,7 +415,8 @@ grub_video_edid_preferred_mode (struct grub_video_edid_info *edid_info, + | (((unsigned int) + (edid_info->detailed_timings[0].vertical_hi & 0xf0)) + << 4); +- return GRUB_ERR_NONE; ++ if (*width && *height) ++ return GRUB_ERR_NONE; + } + + return grub_error (GRUB_ERR_BAD_DEVICE, "no preferred mode available"); diff --git a/grub2.spec b/grub2.spec index c2e121f..0f710c3 100644 --- a/grub2.spec +++ b/grub2.spec @@ -59,6 +59,7 @@ Patch11: grub-2.00-Add-fwsetup.patch Patch13: grub-2.00-Dont-set-boot-on-ppc.patch Patch14: grub-2.00-ignore-gnulib-gets-stupidity.patch Patch15: grub-2.00-linux-mbr.patch +Patch16: grub-2.00-no-huge-video.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) From c95e580d52319532b9acf2bafe3f01fcdf7d6872 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:55:32 +0200 Subject: [PATCH 18/20] clarify arch-specific glibc-devel buildrequires --- grub2.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/grub2.spec b/grub2.spec index 0f710c3..1f1f090 100644 --- a/grub2.spec +++ b/grub2.spec @@ -6,7 +6,7 @@ %ifarch x86_64 %define _target_platform i386-%{_vendor}-%{_target_os}%{?_gnu} %endif -#sparc is always compile 64 bit +# sparc is always compiled 64 bit %ifarch %{sparc} %define _target_platform sparc64-%{_vendor}-%{_target_os}%{?_gnu} %endif @@ -67,8 +67,10 @@ BuildRequires: flex bison binutils python BuildRequires: ncurses-devel xz-devel BuildRequires: freetype-devel libusb-devel %ifarch %{sparc} x86_64 +# sparc builds need 64 bit glibc-devel - also for 32 bit userland BuildRequires: /usr/lib64/crt1.o glibc-static %else +# ppc64 builds need the ppc crt1.o BuildRequires: /usr/lib/crt1.o glibc-static %endif BuildRequires: autoconf automake autogen device-mapper-devel @@ -81,7 +83,6 @@ Requires: %{name}-tools = %{epoch}:%{version}-%{release} Requires(pre): dracut Requires(post): dracut -# ExclusiveArch: %{ix86} x86_64 %{sparc} ExcludeArch: s390 s390x %description From 420dddcbf547d0ae92d7e7d091ccc566742b4e55 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Sat, 2 Jun 2012 01:55:36 +0200 Subject: [PATCH 19/20] rename the global variable for efi archs to efiarchs - that makes it less confusing to search for 'efi' --- grub2.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/grub2.spec b/grub2.spec index 1f1f090..3999014 100644 --- a/grub2.spec +++ b/grub2.spec @@ -13,7 +13,7 @@ %if ! 0%{?efi} -%global efi %{ix86} x86_64 ia64 +%global efiarchs %{ix86} x86_64 ia64 %ifarch %{ix86} %global grubefiarch i386-efi @@ -91,7 +91,7 @@ bootloader with modular architecture. It support rich varietyof kernel formats, file systems, computer architectures and hardware devices. This subpackage provides support for PC BIOS systems. -%ifarch %{efi} +%ifarch %{efiarchs} %package efi Summary: GRUB for EFI systems. Group: System Environment/Base @@ -117,7 +117,7 @@ provides tools for support of all platforms. %prep %setup -T -c -n grub-%{tarversion} -%ifarch %{efi} +%ifarch %{efiarchs} %setup -D -q -T -a 0 -n grub-%{tarversion} cd grub-%{tarversion} cp %{SOURCE3} . @@ -145,7 +145,7 @@ git commit -a -q -m "%{tarversion} baseline." git am %{patches} %build -%ifarch %{efi} +%ifarch %{efiarchs} cd grub-efi-%{tarversion} ./autogen.sh %configure \ @@ -213,7 +213,7 @@ sed -i -e 's,/boot/grub/,/boot/%{name}/,g' \ set -e rm -fr $RPM_BUILD_ROOT -%ifarch %{efi} +%ifarch %{efiarchs} cd grub-efi-%{tarversion} make DESTDIR=$RPM_BUILD_ROOT install @@ -329,7 +329,7 @@ fi %ghost %config(noreplace) /boot/%{name}/grub.cfg %doc grub-%{tarversion}/COPYING -%ifarch %{efi} +%ifarch %{efiarchs} %files efi %defattr(-,root,root,-) %{_libdir}/grub/%{grubefiarch} From 47b7f153f4531202e794e063e9c8a8f357ffa885 Mon Sep 17 00:00:00 2001 From: Mads Kiilerich Date: Mon, 4 Jun 2012 02:29:21 +0200 Subject: [PATCH 20/20] ExcludeArch %{arm} - mentioned by dgilmore on irc --- grub2.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grub2.spec b/grub2.spec index 3999014..2251668 100644 --- a/grub2.spec +++ b/grub2.spec @@ -83,7 +83,7 @@ Requires: %{name}-tools = %{epoch}:%{version}-%{release} Requires(pre): dracut Requires(post): dracut -ExcludeArch: s390 s390x +ExcludeArch: s390 s390x %{arm} %description The GRand Unified Bootloader (GRUB) is a highly configurable and customizable