Merge branch 'master' into f17
Conflicts: grub-1.99-just-say-linux.patch grub2.spec sources
This commit is contained in:
commit
b9e754517d
@ -1,29 +0,0 @@
|
||||
From b0f4ef523b69a497d69820c09bbb07484a6b09cc Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 7 Mar 2012 09:53:50 -0500
|
||||
Subject: [PATCH] Fix gcc error that kills build.
|
||||
|
||||
---
|
||||
conf/Makefile.common | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/conf/Makefile.common b/conf/Makefile.common
|
||||
index 2040a2e..b3ba765 100644
|
||||
--- a/conf/Makefile.common
|
||||
+++ b/conf/Makefile.common
|
||||
@@ -11,10 +11,10 @@ if COND_i386_pc
|
||||
CFLAGS_PLATFORM += -mrtd -mregparm=3
|
||||
endif
|
||||
if COND_i386_efi
|
||||
- LDFLAGS_PLATFORM = -melf_i386
|
||||
+ LDFLAGS_PLATFORM = -m32
|
||||
endif
|
||||
if COND_x86_64_efi
|
||||
- LDFLAGS_PLATFORM = -melf_x86_64
|
||||
+ LDFLAGS_PLATFORM = -m64
|
||||
endif
|
||||
if COND_i386_qemu
|
||||
CFLAGS_PLATFORM += -mrtd -mregparm=3
|
||||
--
|
||||
1.7.7.6
|
||||
|
@ -17,10 +17,10 @@ index a09c3e6..0b0df78 100644
|
||||
|
||||
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
|
||||
- OS=GNU/Linux
|
||||
+ OS="$(sed 's, release .*$,,g' /etc/system-release) Linux"
|
||||
+ OS="$(sed 's, release .*$,,g' /etc/system-release)"
|
||||
else
|
||||
- OS="${GRUB_DISTRIBUTOR} GNU/Linux"
|
||||
+ OS="${GRUB_DISTRIBUTOR} Linux"
|
||||
+ OS="${GRUB_DISTRIBUTOR}"
|
||||
CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}"
|
||||
fi
|
||||
|
||||
@ -33,10 +33,10 @@ index ee49cd9..10422b0 100644
|
||||
|
||||
if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
|
||||
- OS=GNU/Linux
|
||||
+ OS="$(sed 's, release .*$,,g' /etc/system-release) Linux"
|
||||
+ OS="$(sed 's, release .*$,,g' /etc/system-release)"
|
||||
else
|
||||
- OS="${GRUB_DISTRIBUTOR} GNU/Linux"
|
||||
+ OS="${GRUB_DISTRIBUTOR} Linux"
|
||||
+ OS="${GRUB_DISTRIBUTOR}"
|
||||
CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}"
|
||||
fi
|
||||
|
||||
|
161
grub-2.00-Add-check_completed_boot.patch
Normal file
161
grub-2.00-Add-check_completed_boot.patch
Normal file
@ -0,0 +1,161 @@
|
||||
From 7b886580f92bf6b766b042b6ef46cb77a5ba7451 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Fri, 25 May 2012 10:49:06 -0400
|
||||
Subject: [PATCH] Add check_completed_boot command on EFI systems.
|
||||
|
||||
check_completed_boot <guid> [<timeout>]
|
||||
|
||||
checks for a 1-byte integer in an EFI variable guid:CompletedBoot and sets
|
||||
a command-line specified timeout, with a default of 30s, if the variable is
|
||||
not equal to 1. This can be used to enter the grub menus in the event that
|
||||
your OS did not correctly boot on the previous boot. It also unconditionally
|
||||
sets the value to 0.
|
||||
---
|
||||
grub-core/Makefile.core.def | 6 ++
|
||||
grub-core/commands/efi/eficompleted.c | 117 +++++++++++++++++++++++++++++++++
|
||||
2 files changed, 123 insertions(+)
|
||||
create mode 100644 grub-core/commands/efi/eficompleted.c
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index d0c06d5..0a21838 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -582,6 +582,12 @@ module = {
|
||||
};
|
||||
|
||||
module = {
|
||||
+ name = eficompleted;
|
||||
+ efi = commands/efi/eficompleted.c;
|
||||
+ enable = efi;
|
||||
+};
|
||||
+
|
||||
+module = {
|
||||
name = blocklist;
|
||||
common = commands/blocklist.c;
|
||||
};
|
||||
diff --git a/grub-core/commands/efi/eficompleted.c b/grub-core/commands/efi/eficompleted.c
|
||||
new file mode 100644
|
||||
index 0000000..77a856a
|
||||
--- /dev/null
|
||||
+++ b/grub-core/commands/efi/eficompleted.c
|
||||
@@ -0,0 +1,117 @@
|
||||
+/* completed.c - Check if previous boot was successful. */
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
+ *
|
||||
+ * GRUB is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * GRUB is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/mm.h>
|
||||
+#include <grub/misc.h>
|
||||
+#include <grub/efi/api.h>
|
||||
+#include <grub/efi/efi.h>
|
||||
+#include <grub/command.h>
|
||||
+
|
||||
+GRUB_MOD_LICENSE ("GPLv3+");
|
||||
+
|
||||
+static grub_err_t
|
||||
+grub_efi_parse_guid(char *arg, grub_efi_guid_t *outguid)
|
||||
+{
|
||||
+ grub_err_t status = GRUB_ERR_NONE;
|
||||
+ grub_efi_guid_t guid;
|
||||
+ char *s = arg;
|
||||
+ grub_uint64_t guidcomp;
|
||||
+ int i;
|
||||
+
|
||||
+ guid.data1 = grub_cpu_to_le32 (grub_strtoul(s, &s, 16));
|
||||
+ if (*s != '-')
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, "invalid guid `%s'", arg);
|
||||
+ s++;
|
||||
+
|
||||
+ guid.data2 = grub_cpu_to_le16 (grub_strtoul(s, &s, 16));
|
||||
+ if (*s != '-')
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, "invalid guid `%s'", arg);
|
||||
+ s++;
|
||||
+
|
||||
+ guid.data2 = grub_cpu_to_le16 (grub_strtoul(s, &s, 16));
|
||||
+ if (*s != '-')
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, "invalid guid `%s'", arg);
|
||||
+ s++;
|
||||
+
|
||||
+ guidcomp = grub_strtoull (s, 0, 16);
|
||||
+ for (i = 0; i < 8; i++)
|
||||
+ guid.data4[i] = (guidcomp >> (56 - 8 * i)) & 0xff;
|
||||
+
|
||||
+ grub_memcpy(outguid, &guid, sizeof (*outguid));
|
||||
+ return GRUB_ERR_NONE;
|
||||
+}
|
||||
+
|
||||
+static grub_err_t
|
||||
+grub_cmd_completed (grub_command_t cmd __attribute__ ((unused)),
|
||||
+ int argc __attribute__ ((unused)),
|
||||
+ char **args __attribute__ ((unused)))
|
||||
+{
|
||||
+ grub_efi_uint8_t *old_completed_boot;
|
||||
+ grub_efi_uint8_t completed_boot = 0;
|
||||
+ unsigned long timeout = 30;
|
||||
+ grub_efi_guid_t guid;
|
||||
+ grub_err_t status;
|
||||
+ grub_size_t cb_size;
|
||||
+
|
||||
+ if (argc < 2)
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, "too few arguments");
|
||||
+
|
||||
+ if (argc > 3)
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, "too many arguments");
|
||||
+
|
||||
+ status = grub_efi_parse_guid(args[1], &guid);
|
||||
+ if (status != GRUB_ERR_NONE)
|
||||
+ return status;
|
||||
+
|
||||
+ if (argc > 2)
|
||||
+ {
|
||||
+ char *s = args[2];
|
||||
+ timeout = grub_strtoul(s, &s, 0);
|
||||
+ if (grub_errno != GRUB_ERR_NONE)
|
||||
+ return grub_errno;
|
||||
+ }
|
||||
+
|
||||
+ old_completed_boot = grub_efi_get_variable("CompletedBoot", &guid, &cb_size);
|
||||
+ status = grub_efi_set_variable("CompletedBoot", &guid, &completed_boot,
|
||||
+ sizeof (completed_boot));
|
||||
+
|
||||
+ if (old_completed_boot == NULL)
|
||||
+ {
|
||||
+ /* We assume this means it's our first boot after installation. */
|
||||
+ return GRUB_ERR_NONE;
|
||||
+ }
|
||||
+
|
||||
+ if (cb_size != sizeof(*old_completed_boot) || *old_completed_boot != 1)
|
||||
+ grub_env_set("timeout", timeout);
|
||||
+
|
||||
+ return GRUB_ERR_NONE;
|
||||
+}
|
||||
+
|
||||
+static grub_command_t cmd = NULL;
|
||||
+
|
||||
+GRUB_MOD_INIT(eficompleted)
|
||||
+{
|
||||
+ cmd = grub_register_command("check_completed_boot", grub_cmd_completed, "",
|
||||
+ "Check if the last boot completed successfully.");
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_FINI(eficompleted)
|
||||
+{
|
||||
+ grub_unregister_command (cmd);
|
||||
+}
|
||||
--
|
||||
1.7.10.1
|
||||
|
218
grub-2.00-Add-fwsetup.patch
Normal file
218
grub-2.00-Add-fwsetup.patch
Normal file
@ -0,0 +1,218 @@
|
||||
From 2c7cdc59a8d6cb7800c73b90aa75cc8b21807af6 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 24 May 2012 08:37:21 -0400
|
||||
Subject: [PATCH] Add support for entering the firmware setup screen.
|
||||
|
||||
This adds a command "fwsetup", with which you can enter your firmware
|
||||
setup screen. The mechanism is to set a global UEFI variable with a
|
||||
specific value and reboot.
|
||||
---
|
||||
ChangeLog | 8 ++++
|
||||
grub-core/Makefile.core.def | 6 +++
|
||||
grub-core/commands/efi/efifwsetup.c | 88 +++++++++++++++++++++++++++++++++++
|
||||
grub-core/kern/efi/efi.c | 30 ++++++++++++
|
||||
include/grub/efi/api.h | 2 +
|
||||
include/grub/efi/efi.h | 5 ++
|
||||
6 files changed, 139 insertions(+)
|
||||
create mode 100644 grub-core/commands/efi/efifwsetup.c
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index ce52576..29ebcbd 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2012-05-24 Peter Jones <pjones@redhat.com>
|
||||
+
|
||||
+ * grub-core/Makefile.core.def: add efifwsetup module
|
||||
+ * grub-core/commands/efi/efifwsetup.c: add code for fwsetup command
|
||||
+ * grub-core/kern/efi/efi.c (grub_efi_set_variable): New function
|
||||
+ * 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 <phcoder@gmail.com>
|
||||
|
||||
* configure.ac: Bump to beta5.
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 000cf0d..d0c06d5 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -576,6 +576,12 @@ module = {
|
||||
};
|
||||
|
||||
module = {
|
||||
+ name = efifwsetup;
|
||||
+ efi = commands/efi/efifwsetup.c;
|
||||
+ enable = efi;
|
||||
+};
|
||||
+
|
||||
+module = {
|
||||
name = blocklist;
|
||||
common = commands/blocklist.c;
|
||||
};
|
||||
diff --git a/grub-core/commands/efi/efifwsetup.c b/grub-core/commands/efi/efifwsetup.c
|
||||
new file mode 100644
|
||||
index 0000000..756a14c
|
||||
--- /dev/null
|
||||
+++ b/grub-core/commands/efi/efifwsetup.c
|
||||
@@ -0,0 +1,88 @@
|
||||
+/* fwsetup.c - Reboot into firmware setup menu. */
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
+ *
|
||||
+ * GRUB is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * GRUB is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/mm.h>
|
||||
+#include <grub/misc.h>
|
||||
+#include <grub/efi/api.h>
|
||||
+#include <grub/efi/efi.h>
|
||||
+#include <grub/command.h>
|
||||
+
|
||||
+GRUB_MOD_LICENSE ("GPLv3+");
|
||||
+
|
||||
+static grub_err_t
|
||||
+grub_cmd_fwsetup (grub_command_t cmd __attribute__ ((unused)),
|
||||
+ int argc __attribute__ ((unused)),
|
||||
+ char **args __attribute__ ((unused)))
|
||||
+{
|
||||
+ grub_efi_uint64_t *old_os_indications;
|
||||
+ grub_efi_uint64_t os_indications = GRUB_EFI_OS_INDICATIONS_BOOT_TO_FW_UI;
|
||||
+ grub_err_t status;
|
||||
+ grub_size_t oi_size;
|
||||
+ grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;
|
||||
+
|
||||
+ old_os_indications = grub_efi_get_variable("OsIndications", &global,
|
||||
+ &oi_size);
|
||||
+
|
||||
+ if (old_os_indications != NULL && oi_size == sizeof(*old_os_indications))
|
||||
+ os_indications |= *old_os_indications;
|
||||
+
|
||||
+ status = grub_efi_set_variable("OsIndications", &global, &os_indications,
|
||||
+ sizeof (os_indications));
|
||||
+ if (status != GRUB_ERR_NONE)
|
||||
+ return status;
|
||||
+
|
||||
+ grub_reboot();
|
||||
+
|
||||
+ return GRUB_ERR_BUG;
|
||||
+}
|
||||
+
|
||||
+static grub_command_t cmd = NULL;
|
||||
+
|
||||
+static grub_efi_boolean_t
|
||||
+efifwsetup_is_supported(void)
|
||||
+{
|
||||
+ grub_efi_uint64_t *os_indications_supported = NULL;
|
||||
+ grub_size_t oi_size = 0;
|
||||
+ grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;
|
||||
+
|
||||
+ os_indications_supported = grub_efi_get_variable("OsIndicationsSupported",
|
||||
+ &global, &oi_size);
|
||||
+
|
||||
+ if (!os_indications_supported)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (*os_indications_supported & GRUB_EFI_OS_INDICATIONS_BOOT_TO_FW_UI)
|
||||
+ return 1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_INIT(efifwsetup)
|
||||
+{
|
||||
+ if (efifwsetup_is_supported())
|
||||
+ cmd = grub_register_command("fwsetup", grub_cmd_fwsetup, "",
|
||||
+ "Reboot into firmware setup menu.");
|
||||
+
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_FINI(efifwsetup)
|
||||
+{
|
||||
+ if (cmd)
|
||||
+ grub_unregister_command (cmd);
|
||||
+}
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 6f12c76..7a418a6 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -230,6 +230,36 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+grub_err_t
|
||||
+grub_efi_set_variable(const char *var, const grub_efi_guid_t *guid,
|
||||
+ void *data, grub_size_t datasize)
|
||||
+{
|
||||
+ grub_efi_status_t status;
|
||||
+ grub_efi_runtime_services_t *r;
|
||||
+ grub_efi_char16_t *var16;
|
||||
+ grub_size_t len, len16;
|
||||
+
|
||||
+ len = grub_strlen (var);
|
||||
+ len16 = len * GRUB_MAX_UTF16_PER_UTF8;
|
||||
+ var16 = grub_malloc ((len16 + 1) * sizeof (var16[0]));
|
||||
+ if (!var16)
|
||||
+ return grub_errno;
|
||||
+ len16 = grub_utf8_to_utf16 (var16, len16, (grub_uint8_t *) var, len, NULL);
|
||||
+ var16[len16] = 0;
|
||||
+
|
||||
+ r = grub_efi_system_table->runtime_services;
|
||||
+
|
||||
+ grub_efi_uint32_t attributes = GRUB_EFI_VARIABLE_NON_VOLATILE |
|
||||
+ GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
+ GRUB_EFI_VARIABLE_RUNTIME_ACCESS;
|
||||
+
|
||||
+ status = efi_call_5 (r->set_variable, var16, guid, attributes, datasize,data);
|
||||
+ if (status == GRUB_EFI_SUCCESS)
|
||||
+ return GRUB_ERR_NONE;
|
||||
+
|
||||
+ return grub_error (GRUB_ERR_IO, "could not set EFI variable `%s'", var);
|
||||
+}
|
||||
+
|
||||
grub_uint64_t
|
||||
grub_rtc_get_time_ms (void)
|
||||
{
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index 26127de..a47a4e3 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -58,6 +58,8 @@
|
||||
#define GRUB_EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
|
||||
#define GRUB_EFI_OPEN_PROTOCOL_BY_EXCLUSIVE 0x00000020
|
||||
|
||||
+#define GRUB_EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001ULL
|
||||
+
|
||||
#define GRUB_EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
|
||||
#define GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
|
||||
#define GRUB_EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index e67d92b..489cf9e 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -64,6 +64,11 @@ grub_err_t EXPORT_FUNC (grub_efi_set_virtual_address_map) (grub_efi_uintn_t memo
|
||||
void *EXPORT_FUNC (grub_efi_get_variable) (const char *variable,
|
||||
const grub_efi_guid_t *guid,
|
||||
grub_size_t *datasize_out);
|
||||
+grub_err_t
|
||||
+EXPORT_FUNC (grub_efi_set_variable) (const char *var,
|
||||
+ const grub_efi_guid_t *guid,
|
||||
+ void *data,
|
||||
+ grub_size_t datasize);
|
||||
int
|
||||
EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
|
||||
const grub_efi_device_path_t *dp2);
|
||||
--
|
||||
1.7.10.1
|
||||
|
43
grub-2.00-Dont-set-boot-on-ppc.patch
Normal file
43
grub-2.00-Dont-set-boot-on-ppc.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From 28d9f3965f095a765ec8aaa589b4e04608b69901 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Fri, 25 May 2012 14:57:38 -0400
|
||||
Subject: [PATCH] Don't set boot device on ppc-ieee1275
|
||||
|
||||
This started with the problem that powerkvm doesn't have /dev/nvram and so
|
||||
there is no way to set boot-device.
|
||||
---
|
||||
util/grub-install.in | 18 ++++++++++--------
|
||||
1 file changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
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" || {
|
||||
- # 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
|
||||
- }
|
||||
+ 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
|
||||
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
|
||||
--
|
||||
1.7.10.1
|
||||
|
120
grub-2.00-Fix-module-trampoline-for-ppc.patch
Normal file
120
grub-2.00-Fix-module-trampoline-for-ppc.patch
Normal file
@ -0,0 +1,120 @@
|
||||
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 <pjones@redhat.com>; 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 <pjones@redhat.com>;
|
||||
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 <pjones@mail.corp.redhat.com>; 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 <pjones@redhat.com>; 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 <pjones@redhat.com>; 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 <pjones@fedoraproject.org>; 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 <pjones@fedoraproject.org>; 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 <pjones@fedoraproject.org> from <benh@au1.ibm.com>;
|
||||
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 <pjones@fedoraproject.org>; 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 <pjones@fedoraproject.org>; 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 <benh@au1.ibm.com>
|
||||
To: Brent Baude <baude@us.ibm.com>, pjones@fedoraproject.org
|
||||
Cc: hamzy@us.ibm.com, Josh Boyer <jwboyer@gmail.com>
|
||||
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 <benh@kernel.crashing.org>
|
||||
---
|
||||
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,
|
||||
};
|
||||
|
||||
|
||||
|
78
grub-2.00-add-fw_path-search.patch
Normal file
78
grub-2.00-add-fw_path-search.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From d829d54d0f461c7bc6a7d8bd549cfdacfac51082 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Mon, 21 May 2012 14:36:39 -0400
|
||||
Subject: [PATCH] Add fw_path variable
|
||||
|
||||
---
|
||||
grub-core/kern/main.c | 16 ++++++++++++++--
|
||||
grub-core/normal/main.c | 20 +++++++++++++++++++-
|
||||
2 files changed, 33 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
|
||||
index 185230c..26481c6 100644
|
||||
--- a/grub-core/kern/main.c
|
||||
+++ b/grub-core/kern/main.c
|
||||
@@ -114,6 +114,20 @@ grub_set_prefix_and_root (void)
|
||||
|
||||
grub_register_variable_hook ("root", 0, grub_env_write_root);
|
||||
|
||||
+ grub_machine_get_bootlocation (&fwdevice, &fwpath);
|
||||
+
|
||||
+ if (fwdevice && fwpath)
|
||||
+ {
|
||||
+ char *fw_path;
|
||||
+
|
||||
+ fw_path = grub_xasprintf ("(%s)/%s", fwdevice, fwpath);
|
||||
+ if (fw_path)
|
||||
+ {
|
||||
+ grub_env_set ("fw_path", fw_path);
|
||||
+ grub_free (fw_path);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (prefix)
|
||||
{
|
||||
char *pptr = NULL;
|
||||
@@ -131,8 +145,6 @@ grub_set_prefix_and_root (void)
|
||||
if (pptr[0])
|
||||
path = grub_strdup (pptr);
|
||||
}
|
||||
- if ((!device || device[0] == ',' || !device[0]) || !path)
|
||||
- grub_machine_get_bootlocation (&fwdevice, &fwpath);
|
||||
|
||||
if (!device && fwdevice)
|
||||
device = fwdevice;
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 1963fe4..64c2a9f 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -309,7 +309,25 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
|
||||
/* Guess the config filename. It is necessary to make CONFIG static,
|
||||
so that it won't get broken by longjmp. */
|
||||
char *config;
|
||||
- const char *prefix;
|
||||
+ const char *prefix, *fw_path;
|
||||
+
|
||||
+ fw_path = grub_env_get ("fw_path");
|
||||
+ if (fw_path)
|
||||
+ {
|
||||
+ config = grub_xasprintf ("%s/grub.cfg", fw_path);
|
||||
+ if (config)
|
||||
+ {
|
||||
+ grub_file_t file;
|
||||
+
|
||||
+ file = grub_file_open (config);
|
||||
+ if (file)
|
||||
+ {
|
||||
+ grub_file_close (file);
|
||||
+ grub_enter_normal_mode (config);
|
||||
+ }
|
||||
+ grub_free (config);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
prefix = grub_env_get ("prefix");
|
||||
if (prefix)
|
||||
--
|
||||
1.7.10.2
|
||||
|
59
grub-2.00-ppc-no-tree-scanning.patch
Normal file
59
grub-2.00-ppc-no-tree-scanning.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 03f6e77635f4f311a2c7bdd581f6202fa52feef7 Mon Sep 17 00:00:00 2001
|
||||
From: Valdimir Serbinenko <phcoder@gmail.com>
|
||||
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
|
||||
|
196
grub2.spec
196
grub2.spec
@ -12,17 +12,34 @@
|
||||
%endif
|
||||
|
||||
%if ! 0%{?efi}
|
||||
|
||||
%global efi %{ix86} x86_64 ia64
|
||||
|
||||
%ifarch %{ix86}
|
||||
%global grubefiarch i386-efi
|
||||
%global grubefiname grubia32.efi
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
%global grubefiarch %{_arch}-efi
|
||||
%global grubefiname grubx64.efi
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel}
|
||||
%global efidir redhat
|
||||
%endif
|
||||
%if 0%{?fedora}
|
||||
%global efidir fedora
|
||||
%endif
|
||||
|
||||
%global tarversion 2.00~beta4
|
||||
%endif
|
||||
|
||||
%global tarversion 2.00~beta5
|
||||
%undefine _missing_build_ids_terminate_build
|
||||
|
||||
Name: grub2
|
||||
Epoch: 1
|
||||
Version: 2.0
|
||||
Release: 0.26.beta4%{?dist}
|
||||
Release: 0.31.beta5%{?dist}
|
||||
Summary: Bootloader with support for Linux, Multiboot and more
|
||||
|
||||
Group: System Environment/Base
|
||||
@ -39,9 +56,13 @@ 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
|
||||
Patch6: grub-2.00-beta4-wronly.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
|
||||
Patch12: grub-2.00-ppc-no-tree-scanning.patch
|
||||
Patch13: grub-2.00-Dont-set-boot-on-ppc.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
@ -56,8 +77,10 @@ BuildRequires: /usr/lib/crt1.o glibc-static
|
||||
BuildRequires: autoconf automake autogen device-mapper-devel
|
||||
BuildRequires: freetype-devel gettext-devel git
|
||||
BuildRequires: texinfo
|
||||
BuildRequires: dejavu-sans-fonts
|
||||
|
||||
Requires: gettext os-prober which file system-logos
|
||||
Requires: %{name}-tools = %{epoch}:%{version}-%{release}
|
||||
Requires(pre): dracut
|
||||
Requires(post): dracut
|
||||
|
||||
@ -67,12 +90,14 @@ ExcludeArch: s390 s390x
|
||||
%description
|
||||
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
|
||||
bootloader with modular architecture. It support rich varietyof kernel formats,
|
||||
file systems, computer architectures and hardware devices.
|
||||
file systems, computer architectures and hardware devices. This subpackage
|
||||
provides support for PC BIOS systems.
|
||||
|
||||
%ifarch %{efi}
|
||||
%package efi
|
||||
Summary: GRUB for EFI systems.
|
||||
Group: System Environment/Base
|
||||
Requires: %{name}-tools = %{epoch}:%{version}-%{release}
|
||||
|
||||
%description efi
|
||||
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
|
||||
@ -81,12 +106,21 @@ file systems, computer architectures and hardware devices. This subpackage
|
||||
provides support for EFI systems.
|
||||
%endif
|
||||
|
||||
%package tools
|
||||
Summary: Support tools for GRUB.
|
||||
Group: System Environment/Base
|
||||
Requires: gettext os-prober which file system-logos
|
||||
|
||||
%description tools
|
||||
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
|
||||
bootloader with modular architecture. It support rich varietyof kernel formats,
|
||||
file systems, computer architectures and hardware devices. This subpackage
|
||||
provides tools for support of all platforms.
|
||||
|
||||
%prep
|
||||
%setup -T -c -n grub-%{tarversion}
|
||||
%ifarch %{efi}
|
||||
echo foo
|
||||
%setup -D -q -T -a 0 -n grub-%{tarversion}
|
||||
echo bar
|
||||
cd grub-%{tarversion}
|
||||
cp %{SOURCE3} .
|
||||
# place unifont in the '.' from which configure is run
|
||||
@ -126,18 +160,14 @@ cd grub-efi-%{tarversion}
|
||||
-e 's/-fasynchronous-unwind-tables//g' )" \
|
||||
TARGET_LDFLAGS=-static \
|
||||
--with-platform=efi \
|
||||
--with-grubdir=grub2 \
|
||||
--program-transform-name=s,grub,%{name}-efi, \
|
||||
--with-grubdir=%{name} \
|
||||
--program-transform-name=s,grub,%{name}, \
|
||||
--disable-werror
|
||||
make %{?_smp_mflags}
|
||||
%ifarch %{ix86}
|
||||
%define grubefiarch i386-efi
|
||||
%else
|
||||
%define grubefiarch %{_arch}-efi
|
||||
%endif
|
||||
./grub-mkimage -O %{grubefiarch} -p /EFI/redhat/%{name}-efi -o grub.efi -d grub-core part_gpt hfsplus fat \
|
||||
ext2 btrfs normal chain boot configfile linux appleldr minicmd \
|
||||
loadbios reboot halt search font gfxterm echo video efi_gop efi_uga
|
||||
./grub-mkimage -O %{grubefiarch} -o %{grubefiname} -d grub-core \
|
||||
part_gpt hfsplus fat ext2 btrfs normal chain boot configfile linux \
|
||||
minicmd reboot halt search font gfxterm echo video all_video \
|
||||
test gfxmenu png efifwsetup
|
||||
cd ..
|
||||
%endif
|
||||
|
||||
@ -161,7 +191,7 @@ cd grub-%{tarversion}
|
||||
-e 's/-fasynchronous-unwind-tables//g' )" \
|
||||
TARGET_LDFLAGS=-static \
|
||||
--with-platform=%{platform} \
|
||||
--with-grubdir=grub2 \
|
||||
--with-grubdir=%{name} \
|
||||
--program-transform-name=s,grub,%{name}, \
|
||||
--disable-werror
|
||||
|
||||
@ -188,13 +218,11 @@ rm -fr $RPM_BUILD_ROOT
|
||||
%ifarch %{efi}
|
||||
cd grub-efi-%{tarversion}
|
||||
make DESTDIR=$RPM_BUILD_ROOT install
|
||||
mv $RPM_BUILD_ROOT/etc/bash_completion.d/grub $RPM_BUILD_ROOT/etc/bash_completion.d/grub-efi
|
||||
|
||||
# Ghost config file
|
||||
install -m 755 -d $RPM_BUILD_ROOT/boot/efi/EFI/redhat/
|
||||
install -d $RPM_BUILD_ROOT/boot/efi/EFI/redhat/%{name}-efi
|
||||
touch $RPM_BUILD_ROOT/boot/efi/EFI/redhat/%{name}-efi/grub.cfg
|
||||
ln -s ../boot/efi/EFI/redhat/%{name}-efi/grub.cfg $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-efi.cfg
|
||||
install -m 755 -d $RPM_BUILD_ROOT/boot/efi/EFI/%{efidir}/
|
||||
touch $RPM_BUILD_ROOT/boot/efi/EFI/%{efidir}/grub.cfg
|
||||
ln -s ../boot/efi/EFI/%{efidir}/grub.cfg $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-efi.cfg
|
||||
|
||||
# Install ELF files modules and images were created from into
|
||||
# the shadow root, where debuginfo generator will grab them from
|
||||
@ -209,7 +237,7 @@ do
|
||||
TGT=$(echo $MODULE |sed "s,$RPM_BUILD_ROOT,.debugroot,")
|
||||
# install -m 755 -D $BASE$EXT $TGT
|
||||
done
|
||||
install -m 755 grub.efi $RPM_BUILD_ROOT/boot/efi/EFI/redhat/%{name}-efi/grub.efi
|
||||
install -m 755 %{grubefiname} $RPM_BUILD_ROOT/boot/efi/EFI/%{efidir}/%{grubefiname}
|
||||
cd ..
|
||||
%endif
|
||||
|
||||
@ -235,11 +263,13 @@ do
|
||||
# install -m 755 -D $BASE$EXT $TGT
|
||||
done
|
||||
|
||||
mv $RPM_BUILD_ROOT%{_infodir}/grub.info $RPM_BUILD_ROOT%{_infodir}/grub2.info
|
||||
mv $RPM_BUILD_ROOT%{_infodir}/grub-dev.info $RPM_BUILD_ROOT%{_infodir}/grub2-dev.info
|
||||
mv $RPM_BUILD_ROOT%{_infodir}/grub.info $RPM_BUILD_ROOT%{_infodir}/%{name}.info
|
||||
mv $RPM_BUILD_ROOT%{_infodir}/grub-dev.info $RPM_BUILD_ROOT%{_infodir}/%{name}-dev.info
|
||||
rm $RPM_BUILD_ROOT%{_infodir}/dir
|
||||
|
||||
# Defaults
|
||||
mkdir ${RPM_BUILD_ROOT}%{_sysconfdir}/default
|
||||
touch ${RPM_BUILD_ROOT}%{_sysconfdir}/default/grub
|
||||
mkdir ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
|
||||
ln -sf %{_sysconfdir}/default/grub \
|
||||
${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/grub
|
||||
@ -247,16 +277,20 @@ ln -sf %{_sysconfdir}/default/grub \
|
||||
cd ..
|
||||
%find_lang grub
|
||||
|
||||
# Fedora theme in /boot/grub2/themes/system/
|
||||
cd $RPM_BUILD_ROOT
|
||||
tar xjf %{SOURCE5}
|
||||
$RPM_BUILD_ROOT%{_bindir}/%{name}-mkfont -o boot/grub2/themes/system/DejaVuSans-10.pf2 -s 10 /usr/share/fonts/dejavu/DejaVuSans.ttf # "DejaVu Sans Regular 10"
|
||||
$RPM_BUILD_ROOT%{_bindir}/%{name}-mkfont -o boot/grub2/themes/system/DejaVuSans-12.pf2 -s 12 /usr/share/fonts/dejavu/DejaVuSans.ttf # "DejaVu Sans Regular 12"
|
||||
$RPM_BUILD_ROOT%{_bindir}/%{name}-mkfont -o boot/grub2/themes/system/DejaVuSans-Bold-14.pf2 -s 14 /usr/share/fonts/dejavu/DejaVuSans-Bold.ttf # "DejaVu Sans Bold 14"
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post
|
||||
if [ "$1" = 1 ]; then
|
||||
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
|
||||
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub2-dev.info.gz || :
|
||||
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz || :
|
||||
/sbin/install-info --info-dir=%{_infodir} %{_infodir}/%{name}-dev.info.gz || :
|
||||
fi
|
||||
|
||||
%triggerun -- grub2 < 1:1.99-4
|
||||
@ -286,14 +320,30 @@ rm -r /boot/grub2.tmp/ || :
|
||||
|
||||
%preun
|
||||
if [ "$1" = 0 ]; then
|
||||
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
|
||||
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub2-dev.info.gz || :
|
||||
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz || :
|
||||
/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/%{name}-dev.info.gz || :
|
||||
fi
|
||||
|
||||
%files -f grub.lang
|
||||
%defattr(-,root,root,-)
|
||||
/etc/bash_completion.d/grub
|
||||
%{_libdir}/grub/*-%{platform}/
|
||||
%config(noreplace) %{_sysconfdir}/%{name}.cfg
|
||||
%ghost %config(noreplace) /boot/%{name}/grub.cfg
|
||||
%doc grub-%{tarversion}/COPYING
|
||||
|
||||
%ifarch %{efi}
|
||||
%files efi
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/grub/%{grubefiarch}
|
||||
%config(noreplace) %{_sysconfdir}/%{name}-efi.cfg
|
||||
%attr(0755,root,root)/boot/efi/EFI/%{efidir}
|
||||
%ghost %config(noreplace) /boot/efi/EFI/%{efidir}/grub.cfg
|
||||
%doc grub-%{tarversion}/COPYING
|
||||
%endif
|
||||
|
||||
%files tools -f grub.lang
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{_libdir}/grub/
|
||||
%{_datarootdir}/grub/
|
||||
%{_sbindir}/%{name}-mkconfig
|
||||
%{_sbindir}/%{name}-mknetdir
|
||||
@ -318,85 +368,61 @@ fi
|
||||
%{_bindir}/%{name}-mkrescue
|
||||
%endif
|
||||
%{_bindir}/%{name}-script-check
|
||||
%{_sysconfdir}/bash_completion.d/grub
|
||||
%attr(0700,root,root) %dir %{_sysconfdir}/grub.d
|
||||
%config %{_sysconfdir}/grub.d/??_*
|
||||
%{_sysconfdir}/grub.d/README
|
||||
%config(noreplace) %{_sysconfdir}/%{name}.cfg
|
||||
%attr(0644,root,root) %ghost %config(noreplace) %{_sysconfdir}/default/grub
|
||||
%{_sysconfdir}/sysconfig/grub
|
||||
%dir /boot/%{name}
|
||||
%ghost %config(noreplace) /boot/%{name}/grub.cfg
|
||||
/boot/%{name}/themes/
|
||||
%{_infodir}/%{name}*
|
||||
%exclude %{_mandir}
|
||||
%doc grub-%{tarversion}/COPYING grub-%{tarversion}/INSTALL
|
||||
%doc grub-%{tarversion}/NEWS grub-%{tarversion}/README
|
||||
%doc grub-%{tarversion}/THANKS grub-%{tarversion}/TODO
|
||||
%doc grub-%{tarversion}/ChangeLog grub-%{tarversion}/README.Fedora
|
||||
%doc grub-%{tarversion}/grub.html
|
||||
%doc grub-%{tarversion}/grub-dev.html grub-%{tarversion}/docs/font_char_metrics.png
|
||||
%exclude %{_mandir}
|
||||
%{_infodir}/grub2*
|
||||
/boot/grub2/themes/system
|
||||
|
||||
%ifarch %{efi}
|
||||
%files efi -f grub.lang
|
||||
%defattr(-,root,root,-)
|
||||
%attr(0755,root,root)/boot/efi/EFI/redhat
|
||||
/etc/bash_completion.d/grub-efi
|
||||
%{_libdir}/grub/%{_arch}-efi
|
||||
%{_datarootdir}/grub/
|
||||
%{_sbindir}/grub2-efi-mkconfig
|
||||
%{_sbindir}/grub2-efi-mknetdir
|
||||
%{_sbindir}/grub2-efi-install
|
||||
%{_sbindir}/grub2-efi-probe
|
||||
%{_sbindir}/grub2-efi-reboot
|
||||
%{_sbindir}/grub2-efi-set-default
|
||||
%{_sbindir}/grub2-efi-bios-setup
|
||||
%{_sbindir}/grub2-efi-ofpathname
|
||||
%{_sbindir}/grub2-efi-sparc64-setup
|
||||
%{_bindir}/grub2-efi-mkstandalone
|
||||
%{_bindir}/grub2-efi-editenv
|
||||
%{_bindir}/grub2-efi-fstest
|
||||
%{_bindir}/grub2-efi-kbdcomp
|
||||
%{_bindir}/grub2-efi-menulst2cfg
|
||||
%{_bindir}/grub2-efi-mkfont
|
||||
%{_bindir}/grub2-efi-mklayout
|
||||
%{_bindir}/grub2-efi-mkimage
|
||||
%{_bindir}/grub2-efi-mkpasswd-pbkdf2
|
||||
%{_bindir}/grub2-efi-mkrelpath
|
||||
%ifnarch %{sparc} ppc ppc64
|
||||
%{_bindir}/grub2-efi-mkrescue
|
||||
%endif
|
||||
%{_bindir}/grub2-efi-script-check
|
||||
%attr(0700,root,root) %dir %{_sysconfdir}/grub.d
|
||||
%config %{_sysconfdir}/grub.d/??_*
|
||||
%{_sysconfdir}/grub.d/README
|
||||
%config(noreplace) %{_sysconfdir}/grub2-efi.cfg
|
||||
%attr(0644,root,root) %ghost %config(noreplace) %{_sysconfdir}/default/grub
|
||||
%{_sysconfdir}/sysconfig/grub
|
||||
%ghost %config(noreplace) /boot/efi/EFI/redhat/grub2-efi/grub.cfg
|
||||
%doc grub-%{tarversion}/COPYING grub-%{tarversion}/INSTALL
|
||||
%doc grub-%{tarversion}/NEWS grub-%{tarversion}/README
|
||||
%doc grub-%{tarversion}/THANKS grub-%{tarversion}/TODO
|
||||
%doc grub-%{tarversion}/ChangeLog grub-%{tarversion}/README.Fedora
|
||||
%doc grub-%{tarversion}/grub.html
|
||||
%doc grub-%{tarversion}/grub-dev.html grub-%{tarversion}/docs/font_char_metrics.png
|
||||
%exclude %{_mandir}
|
||||
%{_infodir}/grub2*
|
||||
/boot/grub2/themes/system
|
||||
%endif
|
||||
%doc grub-%{tarversion}/themes/starfield/COPYING.CC-BY-SA-3.0
|
||||
|
||||
%changelog
|
||||
* Thu May 10 2012 Peter Jones <pjones@redhat.com> - 2.0-0.26.beta5
|
||||
* Fri May 25 2012 Peter Jones <pjones@redhat.com> - 2.0-0.31.beta5
|
||||
- Add fwsetup command (pjones)
|
||||
- More ppc fixes (IBM)
|
||||
|
||||
* Tue May 22 2012 Peter Jones <pjones@redhat.com> - 2.0-0.30.beta5
|
||||
- Fix the /other/ grub2-tools require to include epoch.
|
||||
|
||||
* Mon May 21 2012 Peter Jones <pjones@redhat.com> - 2.0-0.29.beta5
|
||||
- Get rid of efi_uga and efi_gop, favoring all_video instead.
|
||||
|
||||
* Mon May 21 2012 Peter Jones <pjones@redhat.com> - 2.0-0.28.beta5
|
||||
- Name grub.efi something that's arch-appropriate (kiilerix, pjones)
|
||||
- use EFI/$SOMETHING_DISTRO_BASED/ not always EFI/redhat/grub2-efi/ .
|
||||
- move common stuff to -tools (kiilerix)
|
||||
- spec file cleanups (kiilerix)
|
||||
|
||||
* Mon May 14 2012 Peter Jones <pjones@redhat.com> - 2.0-0.27.beta5
|
||||
- Fix module trampolining on ppc (benh)
|
||||
|
||||
* Thu May 10 2012 Peter Jones <pjones@redhat.com> - 2.0-0.27.beta5
|
||||
- Fix license of theme (mizmo)
|
||||
Resolves: rhbz#820713
|
||||
- Fix some PPC bootloader detection IBM problem
|
||||
Resolves: rhbz#820722
|
||||
|
||||
* Thu May 10 2012 Peter Jones <pjones@redhat.com> - 2.0-0.26.beta5
|
||||
- Update to beta5.
|
||||
- Update how efi building works (kiilerix)
|
||||
- Fix theme support to bring in fonts correctly (kiilerix, pjones)
|
||||
|
||||
* Wed May 09 2012 Peter Jones <pjones@redhat.com> - 2.0-0.25.beta4
|
||||
- Include theme support (mizmo)
|
||||
- Include locale support (kiilerix)
|
||||
- Include html docs (kiilerix)
|
||||
|
||||
* Thu Apr 26 2012 Peter Jones <pjones@redhat.com> - 2.0-0.24.beta4
|
||||
* Thu Apr 26 2012 Peter Jones <pjones@redhat.com> - 2.0-0.24
|
||||
- Various fixes from Mads Kiilerich
|
||||
|
||||
* Thu Apr 19 2012 Peter Jones <pjones@redhat.com> - 2.0-0.23
|
||||
|
Loading…
Reference in New Issue
Block a user