Update to latest content from upstream sources
The content of this branch was not automatically imported from upstream sources. Pull the latest from upstream to have the missing changes here. Source: https://src.fedoraproject.org/rpms/grub2.git#f2763e56df79eccae17d2e8fa13d2f51a0fe7073 Resolves: rhbz#1947696 Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
This commit is contained in:
parent
7f3bf26ea4
commit
1d49572ef1
@ -1,6 +1,6 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg@redhat.com>
|
||||
Date: Fri, 5 Jul 2019 18:36:44 +0200
|
||||
Date: Tue, 10 Jul 2012 11:58:52 -0400
|
||||
Subject: [PATCH] Add support for Linux EFI stub loading.
|
||||
|
||||
Also:
|
||||
@ -35,19 +35,19 @@ moves the check into grub_dl_load_file.
|
||||
grub-core/loader/i386/efi/linux.c | 335 ++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/loader/i386/pc/linux.c | 10 +-
|
||||
include/grub/arm/linux.h | 9 +
|
||||
include/grub/arm64/linux.h | 10 ++
|
||||
include/grub/arm64/linux.h | 9 +
|
||||
include/grub/efi/efi.h | 7 +-
|
||||
include/grub/efi/linux.h | 31 ++++
|
||||
13 files changed, 619 insertions(+), 69 deletions(-)
|
||||
13 files changed, 618 insertions(+), 69 deletions(-)
|
||||
create mode 100644 grub-core/loader/efi/linux.c
|
||||
create mode 100644 grub-core/loader/i386/efi/linux.c
|
||||
create mode 100644 include/grub/efi/linux.h
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 474a63e68c5..581d9dfc3b3 100644
|
||||
index 8022e1c0a79..45d3edaa4dc 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -1709,13 +1709,6 @@ module = {
|
||||
@@ -1734,13 +1734,6 @@ module = {
|
||||
enable = i386_pc;
|
||||
};
|
||||
|
||||
@ -61,7 +61,7 @@ index 474a63e68c5..581d9dfc3b3 100644
|
||||
module = {
|
||||
name = ntldr;
|
||||
i386_pc = loader/i386/pc/ntldr.c;
|
||||
@@ -1771,7 +1764,9 @@ module = {
|
||||
@@ -1796,7 +1789,9 @@ module = {
|
||||
|
||||
module = {
|
||||
name = linux;
|
||||
@ -72,7 +72,7 @@ index 474a63e68c5..581d9dfc3b3 100644
|
||||
i386_xen_pvh = loader/i386/linux.c;
|
||||
xen = loader/i386/xen.c;
|
||||
i386_pc = lib/i386/pc/vesa_modes_table.c;
|
||||
@@ -1786,9 +1781,14 @@ module = {
|
||||
@@ -1811,9 +1806,14 @@ module = {
|
||||
arm64 = loader/arm64/linux.c;
|
||||
riscv32 = loader/riscv/linux.c;
|
||||
riscv64 = loader/riscv/linux.c;
|
||||
@ -88,7 +88,7 @@ index 474a63e68c5..581d9dfc3b3 100644
|
||||
|
||||
module = {
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index 48eb5e7b627..896bebfd57e 100644
|
||||
index 48f8a79073d..b7149370950 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -38,6 +38,14 @@
|
||||
@ -106,7 +106,7 @@ index 48eb5e7b627..896bebfd57e 100644
|
||||
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||
@@ -686,6 +694,19 @@ grub_dl_load_file (const char *filename)
|
||||
@@ -695,6 +703,19 @@ grub_dl_load_file (const char *filename)
|
||||
void *core = 0;
|
||||
grub_dl_t mod = 0;
|
||||
|
||||
@ -127,11 +127,11 @@ index 48eb5e7b627..896bebfd57e 100644
|
||||
|
||||
file = grub_file_open (filename, GRUB_FILE_TYPE_GRUB_MODULE);
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 6e1ceb90516..a0faa40ecf0 100644
|
||||
index 8cff7be0289..35b8f670602 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -273,6 +273,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return NULL;
|
||||
@@ -286,6 +286,34 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return grub_efi_get_variable_with_attributes (var, guid, datasize_out, data_out, NULL);
|
||||
}
|
||||
|
||||
+grub_efi_boolean_t
|
||||
@ -166,7 +166,7 @@ index 6e1ceb90516..a0faa40ecf0 100644
|
||||
|
||||
/* Search the mods section from the PE32/PE32+ image. This code uses
|
||||
diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
|
||||
index b02fab1b102..a9e37108c6d 100644
|
||||
index 0cdb063bb1b..74360542062 100644
|
||||
--- a/grub-core/kern/efi/mm.c
|
||||
+++ b/grub-core/kern/efi/mm.c
|
||||
@@ -113,6 +113,38 @@ grub_efi_drop_alloc (grub_efi_physical_address_t address,
|
||||
@ -819,10 +819,10 @@ index 00000000000..bb2616a8092
|
||||
+ grub_unregister_command (cmd_initrdefi);
|
||||
+}
|
||||
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
|
||||
index 47ea2945e4f..eea25ea39ca 100644
|
||||
index 2a299520160..8be4c3b3f48 100644
|
||||
--- a/grub-core/loader/i386/pc/linux.c
|
||||
+++ b/grub-core/loader/i386/pc/linux.c
|
||||
@@ -470,14 +470,20 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -474,14 +474,20 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
@ -844,7 +844,7 @@ index 47ea2945e4f..eea25ea39ca 100644
|
||||
grub_register_command ("initrd16", grub_cmd_initrd,
|
||||
0, N_("Load initrd."));
|
||||
my_mod = mod;
|
||||
@@ -486,5 +492,7 @@ GRUB_MOD_INIT(linux16)
|
||||
@@ -490,5 +496,7 @@ GRUB_MOD_INIT(linux16)
|
||||
GRUB_MOD_FINI(linux16)
|
||||
{
|
||||
grub_unregister_command (cmd_linux);
|
||||
@ -853,7 +853,7 @@ index 47ea2945e4f..eea25ea39ca 100644
|
||||
+ grub_unregister_command (cmd_initrd16);
|
||||
}
|
||||
diff --git a/include/grub/arm/linux.h b/include/grub/arm/linux.h
|
||||
index 2e98a668969..775297db869 100644
|
||||
index bcd5a7eb186..b582f67f661 100644
|
||||
--- a/include/grub/arm/linux.h
|
||||
+++ b/include/grub/arm/linux.h
|
||||
@@ -20,6 +20,7 @@
|
||||
@ -883,19 +883,18 @@ index 2e98a668969..775297db869 100644
|
||||
|
||||
#if defined GRUB_MACHINE_UBOOT
|
||||
diff --git a/include/grub/arm64/linux.h b/include/grub/arm64/linux.h
|
||||
index 4269adc6dae..a3be9dd7003 100644
|
||||
index 7e22b4ab699..ea030312df3 100644
|
||||
--- a/include/grub/arm64/linux.h
|
||||
+++ b/include/grub/arm64/linux.h
|
||||
@@ -19,6 +19,8 @@
|
||||
@@ -19,6 +19,7 @@
|
||||
#ifndef GRUB_ARM64_LINUX_HEADER
|
||||
#define GRUB_ARM64_LINUX_HEADER 1
|
||||
|
||||
+#include <grub/efi/pe32.h>
|
||||
+
|
||||
#define GRUB_LINUX_ARM64_MAGIC_SIGNATURE 0x644d5241 /* 'ARM\x64' */
|
||||
#include <grub/types.h>
|
||||
|
||||
/* From linux/Documentation/arm64/booting.txt */
|
||||
@@ -36,9 +38,17 @@ struct linux_arm64_kernel_header
|
||||
#define GRUB_LINUX_ARM64_MAGIC_SIGNATURE 0x644d5241 /* 'ARM\x64' */
|
||||
@@ -38,9 +39,17 @@ struct linux_arm64_kernel_header
|
||||
grub_uint32_t hdr_offset; /* Offset of PE/COFF header */
|
||||
};
|
||||
|
||||
@ -914,7 +913,7 @@ index 4269adc6dae..a3be9dd7003 100644
|
||||
|
||||
#endif /* ! GRUB_ARM64_LINUX_HEADER */
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index e90e00dc431..6840bfee9b7 100644
|
||||
index 83d958f9945..6295df85f3f 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -47,6 +47,9 @@ EXPORT_FUNC(grub_efi_allocate_fixed) (grub_efi_physical_address_t address,
|
||||
@ -927,7 +926,7 @@ index e90e00dc431..6840bfee9b7 100644
|
||||
void EXPORT_FUNC(grub_efi_free_pages) (grub_efi_physical_address_t address,
|
||||
grub_efi_uintn_t pages);
|
||||
grub_efi_uintn_t EXPORT_FUNC(grub_efi_find_mmap_size) (void);
|
||||
@@ -82,6 +85,7 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
|
||||
@@ -88,6 +91,7 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
|
||||
const grub_efi_guid_t *guid,
|
||||
void *data,
|
||||
grub_size_t datasize);
|
||||
@ -935,7 +934,7 @@ index e90e00dc431..6840bfee9b7 100644
|
||||
int
|
||||
EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
|
||||
const grub_efi_device_path_t *dp2);
|
||||
@@ -95,8 +99,7 @@ void *EXPORT_FUNC(grub_efi_get_firmware_fdt)(void);
|
||||
@@ -101,8 +105,7 @@ void *EXPORT_FUNC(grub_efi_get_firmware_fdt)(void);
|
||||
grub_err_t EXPORT_FUNC(grub_efi_get_ram_base)(grub_addr_t *);
|
||||
#include <grub/cpu/linux.h>
|
||||
grub_err_t grub_arch_efi_linux_check_image(struct linux_arch_kernel_header *lh);
|
||||
|
@ -1,20 +1,22 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg59@coreos.com>
|
||||
Date: Fri, 5 Jul 2019 20:54:51 +0200
|
||||
Date: Sun, 9 Aug 2015 16:12:39 -0700
|
||||
Subject: [PATCH] Rework linux command
|
||||
|
||||
We want a single buffer that contains the entire kernel image in order to
|
||||
perform a TPM measurement. Allocate one and copy the entire kernel into it
|
||||
before pulling out the individual blocks later on.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg59@coreos.com>
|
||||
---
|
||||
grub-core/loader/i386/linux.c | 36 +++++++++++++++++++++++-------------
|
||||
1 file changed, 23 insertions(+), 13 deletions(-)
|
||||
grub-core/loader/i386/linux.c | 35 +++++++++++++++++++++++------------
|
||||
1 file changed, 23 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index d0501e22957..b255c950526 100644
|
||||
index 9f74a96b19a..dccf3bb3005 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -641,13 +641,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -649,13 +649,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
{
|
||||
grub_file_t file = 0;
|
||||
struct linux_i386_kernel_header lh;
|
||||
@ -31,7 +33,7 @@ index d0501e22957..b255c950526 100644
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
@@ -661,7 +663,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -669,7 +671,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (! file)
|
||||
goto fail;
|
||||
|
||||
@ -48,7 +50,7 @@ index d0501e22957..b255c950526 100644
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
@@ -669,6 +679,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -677,6 +687,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -58,32 +60,25 @@ index d0501e22957..b255c950526 100644
|
||||
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_OS, "invalid magic number");
|
||||
@@ -760,6 +773,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
preferred_address))
|
||||
goto fail;
|
||||
|
||||
+
|
||||
grub_memset (&linux_params, 0, sizeof (linux_params));
|
||||
grub_memcpy (&linux_params.setup_sects, &lh.setup_sects, sizeof (lh) - 0x1F1);
|
||||
|
||||
@@ -782,13 +796,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -784,13 +797,11 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
/* We've already read lh so there is no need to read it second time. */
|
||||
len -= sizeof(lh);
|
||||
|
||||
- if (grub_file_read (file, (char *) &linux_params + sizeof (lh), len) != len)
|
||||
- {
|
||||
- if ((len > 0) &&
|
||||
- (grub_file_read (file, (char *) &linux_params + sizeof (lh), len) != len))
|
||||
+ linux_params_ptr = (void *)&linux_params;
|
||||
+ if (len > 0)
|
||||
{
|
||||
- if (!grub_errno)
|
||||
- grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
- argv[0]);
|
||||
- goto fail;
|
||||
- }
|
||||
+ linux_params_ptr = (void *)&linux_params;
|
||||
+ grub_memcpy (linux_params_ptr + sizeof (lh), kernel + kernel_offset, len);
|
||||
+ kernel_offset += len;
|
||||
+ grub_memcpy (linux_params_ptr + sizeof (lh), kernel + kernel_offset, len);
|
||||
+ kernel_offset += len;
|
||||
}
|
||||
|
||||
linux_params.type_of_loader = GRUB_LINUX_BOOT_LOADER_TYPE;
|
||||
|
||||
@@ -847,7 +857,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
linux_params.code32_start = prot_mode_target + lh.code32_start - GRUB_LINUX_BZIMAGE_ADDR;
|
||||
@@ -853,7 +864,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
/* The other parameters are filled when booting. */
|
||||
|
||||
@ -92,7 +87,7 @@ index d0501e22957..b255c950526 100644
|
||||
|
||||
grub_dprintf ("linux", "bzImage, setup=0x%x, size=0x%x\n",
|
||||
(unsigned) real_size, (unsigned) prot_size);
|
||||
@@ -1001,9 +1011,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -1007,9 +1018,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
len = prot_file_size;
|
||||
@ -103,7 +98,7 @@ index d0501e22957..b255c950526 100644
|
||||
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
{
|
||||
@@ -1014,6 +1022,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -1020,6 +1029,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
fail:
|
||||
|
||||
|
@ -1,20 +1,22 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <mjg59@coreos.com>
|
||||
Date: Fri, 5 Jul 2019 21:12:00 +0200
|
||||
Date: Sun, 9 Aug 2015 16:20:58 -0700
|
||||
Subject: [PATCH] Rework linux16 command
|
||||
|
||||
We want a single buffer that contains the entire kernel image in order to
|
||||
perform a TPM measurement. Allocate one and copy the entire kernel int it
|
||||
before pulling out the individual blocks later on.
|
||||
|
||||
Signed-off-by: Matthew Garrett <mjg59@coreos.com>
|
||||
---
|
||||
grub-core/loader/i386/pc/linux.c | 33 +++++++++++++++++++++------------
|
||||
1 file changed, 21 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
|
||||
index eea25ea39ca..73fb91e0570 100644
|
||||
index 8be4c3b3f48..4b1750e360e 100644
|
||||
--- a/grub-core/loader/i386/pc/linux.c
|
||||
+++ b/grub-core/loader/i386/pc/linux.c
|
||||
@@ -123,13 +123,14 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -124,13 +124,14 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_file_t file = 0;
|
||||
struct linux_i386_kernel_header lh;
|
||||
grub_uint8_t setup_sects;
|
||||
@ -30,7 +32,7 @@ index eea25ea39ca..73fb91e0570 100644
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
@@ -143,7 +144,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -144,7 +145,15 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (! file)
|
||||
goto fail;
|
||||
|
||||
@ -47,7 +49,7 @@ index eea25ea39ca..73fb91e0570 100644
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
@@ -151,6 +160,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -152,6 +161,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -57,7 +59,7 @@ index eea25ea39ca..73fb91e0570 100644
|
||||
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_OS, "invalid magic number");
|
||||
@@ -314,13 +326,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -320,13 +332,9 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_memmove (grub_linux_real_chunk, &lh, sizeof (lh));
|
||||
|
||||
len = real_size + GRUB_DISK_SECTOR_SIZE - sizeof (lh);
|
||||
@ -74,7 +76,7 @@ index eea25ea39ca..73fb91e0570 100644
|
||||
|
||||
if (lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
||||
@@ -358,9 +366,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -364,9 +372,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
len = grub_linux16_prot_size;
|
||||
@ -86,7 +88,7 @@ index eea25ea39ca..73fb91e0570 100644
|
||||
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
{
|
||||
@@ -370,6 +377,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -376,6 +383,8 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
fail:
|
||||
|
||||
|
@ -167,18 +167,18 @@ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
|
||||
---
|
||||
grub-core/kern/efi/efi.c | 14 +-
|
||||
grub-core/loader/arm64/linux.c | 4 +-
|
||||
grub-core/loader/efi/chainloader.c | 817 +++++++++++++++++++++++++++++++++----
|
||||
grub-core/loader/efi/chainloader.c | 816 +++++++++++++++++++++++++++++++++----
|
||||
grub-core/loader/efi/linux.c | 25 +-
|
||||
grub-core/loader/i386/efi/linux.c | 17 +-
|
||||
include/grub/efi/linux.h | 2 +-
|
||||
include/grub/efi/pe32.h | 52 ++-
|
||||
7 files changed, 840 insertions(+), 91 deletions(-)
|
||||
7 files changed, 840 insertions(+), 90 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index a0faa40ecf0..3487b0623a4 100644
|
||||
index 35b8f670602..4a2259aa1c7 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -283,14 +283,20 @@ grub_efi_secure_boot (void)
|
||||
@@ -296,14 +296,20 @@ grub_efi_secure_boot (void)
|
||||
grub_efi_boolean_t ret = 0;
|
||||
|
||||
secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize);
|
||||
@ -226,7 +226,7 @@ index a312c668685..04994d5c67d 100644
|
||||
grub_error (GRUB_ERR_INVALID_COMMAND, N_("%s has invalid signature"), argv[0]);
|
||||
goto fail;
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index cd92ea3f24b..ef87b06cf70 100644
|
||||
index 2bd80f4db3d..b54cf6986fc 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -32,6 +32,8 @@
|
||||
@ -261,15 +261,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
|
||||
grub_dl_unref (my_mod);
|
||||
return GRUB_ERR_NONE;
|
||||
@@ -179,7 +187,6 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
|
||||
/* Fill the file path for the directory. */
|
||||
d = (grub_efi_device_path_t *) ((char *) file_path
|
||||
+ ((char *) d - (char *) dp));
|
||||
- grub_efi_print_device_path (d);
|
||||
copy_file_path ((grub_efi_file_path_device_path_t *) d,
|
||||
dir_start, dir_end - dir_start);
|
||||
|
||||
@@ -197,20 +204,690 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
|
||||
@@ -213,20 +221,690 @@ make_file_path (grub_efi_device_path_t *dp, const char *filename)
|
||||
return file_path;
|
||||
}
|
||||
|
||||
@ -963,7 +955,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
@@ -222,15 +899,45 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -238,15 +916,45 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
address = 0;
|
||||
image_handle = 0;
|
||||
file_path = 0;
|
||||
@ -1011,7 +1003,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
if (! dev)
|
||||
goto fail;
|
||||
|
||||
@@ -267,17 +974,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -283,17 +991,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (! file_path)
|
||||
goto fail;
|
||||
|
||||
@ -1032,7 +1024,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
|
||||
status = efi_call_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES,
|
||||
GRUB_EFI_LOADER_CODE,
|
||||
@@ -291,7 +995,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -307,7 +1012,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
boot_image = (void *) ((grub_addr_t) address);
|
||||
@ -1041,7 +1033,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
{
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
@@ -301,7 +1005,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -317,7 +1022,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
#if defined (__i386__) || defined (__x86_64__)
|
||||
@ -1050,12 +1042,12 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
{
|
||||
struct grub_macho_fat_header *head = boot_image;
|
||||
if (head->magic
|
||||
@@ -310,6 +1014,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -326,6 +1031,14 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_uint32_t i;
|
||||
struct grub_macho_fat_arch *archs
|
||||
= (struct grub_macho_fat_arch *) (head + 1);
|
||||
+
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_OS,
|
||||
+ "MACHO binaries are forbidden with Secure Boot");
|
||||
@ -1065,7 +1057,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
for (i = 0; i < grub_cpu_to_le32 (head->nfat_arch); i++)
|
||||
{
|
||||
if (GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT (archs[i].cputype))
|
||||
@@ -324,79 +1036,39 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -340,79 +1053,39 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
> ~grub_cpu_to_le32 (archs[i].size)
|
||||
|| grub_cpu_to_le32 (archs[i].offset)
|
||||
+ grub_cpu_to_le32 (archs[i].size)
|
||||
@ -1162,7 +1154,7 @@ index cd92ea3f24b..ef87b06cf70 100644
|
||||
if (dev)
|
||||
grub_device_close (dev);
|
||||
|
||||
@@ -408,6 +1080,9 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
@@ -424,6 +1097,9 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (address)
|
||||
efi_call_2 (b->free_pages, address, pages);
|
||||
|
||||
|
@ -9,112 +9,94 @@ won't register commands if SB is enabled."
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/Makefile.core.def | 1 +
|
||||
grub-core/commands/iorw.c | 7 +++++
|
||||
grub-core/commands/memrw.c | 7 +++++
|
||||
grub-core/kern/dl.c | 1 +
|
||||
grub-core/kern/efi/efi.c | 34 --------------------
|
||||
grub-core/kern/efi/sb.c | 64 ++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/loader/efi/appleloader.c | 7 +++++
|
||||
grub-core/commands/iorw.c | 7 +++++++
|
||||
grub-core/commands/memrw.c | 7 +++++++
|
||||
grub-core/kern/dl.c | 3 ++-
|
||||
grub-core/kern/efi/efi.c | 34 ----------------------------------
|
||||
grub-core/loader/efi/appleloader.c | 7 +++++++
|
||||
grub-core/loader/efi/chainloader.c | 1 +
|
||||
grub-core/loader/i386/bsd.c | 7 +++++
|
||||
grub-core/loader/i386/linux.c | 7 +++++
|
||||
grub-core/loader/i386/pc/linux.c | 7 +++++
|
||||
grub-core/loader/multiboot.c | 7 +++++
|
||||
grub-core/loader/xnu.c | 7 +++++
|
||||
grub-core/loader/i386/bsd.c | 7 +++++++
|
||||
grub-core/loader/i386/linux.c | 7 +++++++
|
||||
grub-core/loader/i386/pc/linux.c | 7 +++++++
|
||||
grub-core/loader/multiboot.c | 7 +++++++
|
||||
grub-core/loader/xnu.c | 7 +++++++
|
||||
include/grub/efi/efi.h | 1 -
|
||||
include/grub/efi/sb.h | 29 +++++++++++++++++
|
||||
include/grub/ia64/linux.h | 0
|
||||
include/grub/mips/linux.h | 0
|
||||
include/grub/powerpc/linux.h | 0
|
||||
include/grub/sparc64/linux.h | 0
|
||||
grub-core/Makefile.am | 1 +
|
||||
20 files changed, 153 insertions(+), 35 deletions(-)
|
||||
create mode 100644 grub-core/kern/efi/sb.c
|
||||
create mode 100644 include/grub/efi/sb.h
|
||||
16 files changed, 59 insertions(+), 36 deletions(-)
|
||||
create mode 100644 include/grub/ia64/linux.h
|
||||
create mode 100644 include/grub/mips/linux.h
|
||||
create mode 100644 include/grub/powerpc/linux.h
|
||||
create mode 100644 include/grub/sparc64/linux.h
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 581d9dfc3b3..eb1088fd654 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -207,6 +207,7 @@ kernel = {
|
||||
i386_multiboot = kern/i386/pc/acpi.c;
|
||||
i386_coreboot = kern/acpi.c;
|
||||
i386_multiboot = kern/acpi.c;
|
||||
+ common = kern/efi/sb.c;
|
||||
|
||||
x86 = kern/i386/tsc.c;
|
||||
x86 = kern/i386/tsc_pit.c;
|
||||
diff --git a/grub-core/commands/iorw.c b/grub-core/commands/iorw.c
|
||||
index a0c164e54f0..41a7f3f0466 100644
|
||||
index 584baec8f91..7b2999b14b5 100644
|
||||
--- a/grub-core/commands/iorw.c
|
||||
+++ b/grub-core/commands/iorw.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <grub/env.h>
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <grub/cpu/io.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/lockdown.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -118,6 +119,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
|
||||
@@ -119,6 +120,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
|
||||
|
||||
GRUB_MOD_INIT(memrw)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_read_byte =
|
||||
grub_register_extcmd ("inb", grub_cmd_read, 0,
|
||||
N_("PORT"), N_("Read 8-bit value from PORT."),
|
||||
@@ -146,6 +150,9 @@ GRUB_MOD_INIT(memrw)
|
||||
@@ -147,6 +151,9 @@ GRUB_MOD_INIT(memrw)
|
||||
|
||||
GRUB_MOD_FINI(memrw)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_extcmd (cmd_read_byte);
|
||||
grub_unregister_extcmd (cmd_read_word);
|
||||
grub_unregister_extcmd (cmd_read_dword);
|
||||
diff --git a/grub-core/commands/memrw.c b/grub-core/commands/memrw.c
|
||||
index 98769eadb34..088cbe9e2bc 100644
|
||||
index d401a6db0ef..39cf3a06dbd 100644
|
||||
--- a/grub-core/commands/memrw.c
|
||||
+++ b/grub-core/commands/memrw.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <grub/extcmd.h>
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <grub/env.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/lockdown.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -120,6 +121,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
|
||||
@@ -121,6 +122,9 @@ grub_cmd_write (grub_command_t cmd, int argc, char **argv)
|
||||
|
||||
GRUB_MOD_INIT(memrw)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_read_byte =
|
||||
grub_register_extcmd ("read_byte", grub_cmd_read, 0,
|
||||
N_("ADDR"), N_("Read 8-bit value from ADDR."),
|
||||
@@ -148,6 +152,9 @@ GRUB_MOD_INIT(memrw)
|
||||
@@ -149,6 +153,9 @@ GRUB_MOD_INIT(memrw)
|
||||
|
||||
GRUB_MOD_FINI(memrw)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_extcmd (cmd_read_byte);
|
||||
grub_unregister_extcmd (cmd_read_word);
|
||||
grub_unregister_extcmd (cmd_read_dword);
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index 896bebfd57e..d7718d26abc 100644
|
||||
index b7149370950..7afb9e6f724 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -32,6 +32,7 @@
|
||||
@ -125,12 +107,21 @@ index 896bebfd57e..d7718d26abc 100644
|
||||
|
||||
/* Platforms where modules are in a readonly area of memory. */
|
||||
#if defined(GRUB_MACHINE_QEMU)
|
||||
@@ -704,7 +705,7 @@ grub_dl_load_file (const char *filename)
|
||||
grub_dl_t mod = 0;
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
- if (grub_efi_secure_boot ())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
{
|
||||
#if 0
|
||||
/* This is an error, but grub2-mkconfig still generates a pile of
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 3487b0623a4..6e1ceb90516 100644
|
||||
index 4a2259aa1c7..8cff7be0289 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -273,40 +273,6 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return NULL;
|
||||
@@ -286,40 +286,6 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return grub_efi_get_variable_with_attributes (var, guid, datasize_out, data_out, NULL);
|
||||
}
|
||||
|
||||
-grub_efi_boolean_t
|
||||
@ -170,78 +161,8 @@ index 3487b0623a4..6e1ceb90516 100644
|
||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||
|
||||
/* Search the mods section from the PE32/PE32+ image. This code uses
|
||||
diff --git a/grub-core/kern/efi/sb.c b/grub-core/kern/efi/sb.c
|
||||
new file mode 100644
|
||||
index 00000000000..d74778b0cac
|
||||
--- /dev/null
|
||||
+++ b/grub-core/kern/efi/sb.c
|
||||
@@ -0,0 +1,64 @@
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2014 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/err.h>
|
||||
+#include <grub/mm.h>
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/cpu/linux.h>
|
||||
+#include <grub/efi/efi.h>
|
||||
+#include <grub/efi/pe32.h>
|
||||
+#include <grub/efi/linux.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
+
|
||||
+int
|
||||
+grub_efi_secure_boot (void)
|
||||
+{
|
||||
+#ifdef GRUB_MACHINE_EFI
|
||||
+ grub_efi_guid_t efi_var_guid = GRUB_EFI_GLOBAL_VARIABLE_GUID;
|
||||
+ grub_size_t datasize;
|
||||
+ char *secure_boot = NULL;
|
||||
+ char *setup_mode = NULL;
|
||||
+ grub_efi_boolean_t ret = 0;
|
||||
+
|
||||
+ secure_boot = grub_efi_get_variable("SecureBoot", &efi_var_guid, &datasize);
|
||||
+ if (datasize != 1 || !secure_boot)
|
||||
+ {
|
||||
+ grub_dprintf ("secureboot", "No SecureBoot variable\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+ grub_dprintf ("secureboot", "SecureBoot: %d\n", *secure_boot);
|
||||
+
|
||||
+ setup_mode = grub_efi_get_variable("SetupMode", &efi_var_guid, &datasize);
|
||||
+ if (datasize != 1 || !setup_mode)
|
||||
+ {
|
||||
+ grub_dprintf ("secureboot", "No SetupMode variable\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+ grub_dprintf ("secureboot", "SetupMode: %d\n", *setup_mode);
|
||||
+
|
||||
+ if (*secure_boot && !*setup_mode)
|
||||
+ ret = 1;
|
||||
+
|
||||
+ out:
|
||||
+ grub_free (secure_boot);
|
||||
+ grub_free (setup_mode);
|
||||
+ return ret;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
+}
|
||||
diff --git a/grub-core/loader/efi/appleloader.c b/grub-core/loader/efi/appleloader.c
|
||||
index 74888c463ba..69c2a10d351 100644
|
||||
index 74888c463ba..585f2b57385 100644
|
||||
--- a/grub-core/loader/efi/appleloader.c
|
||||
+++ b/grub-core/loader/efi/appleloader.c
|
||||
@@ -24,6 +24,7 @@
|
||||
@ -256,7 +177,7 @@ index 74888c463ba..69c2a10d351 100644
|
||||
|
||||
GRUB_MOD_INIT(appleloader)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd = grub_register_command ("appleloader", grub_cmd_appleloader,
|
||||
@ -266,13 +187,13 @@ index 74888c463ba..69c2a10d351 100644
|
||||
|
||||
GRUB_MOD_FINI(appleloader)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_command (cmd);
|
||||
}
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index ef87b06cf70..5aa3a5dc7dd 100644
|
||||
index b54cf6986fc..3ff305b1d32 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -34,6 +34,7 @@
|
||||
@ -284,10 +205,10 @@ index ef87b06cf70..5aa3a5dc7dd 100644
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/net.h>
|
||||
diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
|
||||
index 3730ed38247..5b9b92d6ba5 100644
|
||||
index 5f3290ce17b..54befc26626 100644
|
||||
--- a/grub-core/loader/i386/bsd.c
|
||||
+++ b/grub-core/loader/i386/bsd.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@@ -40,6 +40,7 @@
|
||||
#ifdef GRUB_MACHINE_PCBIOS
|
||||
#include <grub/machine/int.h>
|
||||
#endif
|
||||
@ -295,92 +216,92 @@ index 3730ed38247..5b9b92d6ba5 100644
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -2130,6 +2131,9 @@ static grub_command_t cmd_netbsd_module_elf, cmd_openbsd_ramdisk;
|
||||
@@ -2137,6 +2138,9 @@ static grub_command_t cmd_netbsd_module_elf, cmd_openbsd_ramdisk;
|
||||
|
||||
GRUB_MOD_INIT (bsd)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
/* Net and OpenBSD kernels are often compressed. */
|
||||
grub_dl_load ("gzio");
|
||||
|
||||
@@ -2169,6 +2173,9 @@ GRUB_MOD_INIT (bsd)
|
||||
@@ -2176,6 +2180,9 @@ GRUB_MOD_INIT (bsd)
|
||||
|
||||
GRUB_MOD_FINI (bsd)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_extcmd (cmd_freebsd);
|
||||
grub_unregister_extcmd (cmd_openbsd);
|
||||
grub_unregister_extcmd (cmd_netbsd);
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index b255c950526..376c726928a 100644
|
||||
index dccf3bb3005..4aeb0e4b9a6 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <grub/lib/cmdline.h>
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <grub/linux.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/safemath.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -1131,6 +1132,9 @@ static grub_command_t cmd_linux, cmd_initrd;
|
||||
@@ -1138,6 +1139,9 @@ static grub_command_t cmd_linux, cmd_initrd;
|
||||
|
||||
GRUB_MOD_INIT(linux)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_linux = grub_register_command ("linux", grub_cmd_linux,
|
||||
0, N_("Load Linux."));
|
||||
cmd_initrd = grub_register_command ("initrd", grub_cmd_initrd,
|
||||
@@ -1140,6 +1144,9 @@ GRUB_MOD_INIT(linux)
|
||||
@@ -1147,6 +1151,9 @@ GRUB_MOD_INIT(linux)
|
||||
|
||||
GRUB_MOD_FINI(linux)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_command (cmd_linux);
|
||||
grub_unregister_command (cmd_initrd);
|
||||
}
|
||||
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
|
||||
index 73fb91e0570..fe3e1d41d09 100644
|
||||
index 4b1750e360e..e3fa1221e81 100644
|
||||
--- a/grub-core/loader/i386/pc/linux.c
|
||||
+++ b/grub-core/loader/i386/pc/linux.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <grub/i386/floppy.h>
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <grub/lib/cmdline.h>
|
||||
#include <grub/linux.h>
|
||||
#include <grub/safemath.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -483,6 +484,9 @@ static grub_command_t cmd_linux, cmd_linux16, cmd_initrd, cmd_initrd16;
|
||||
@@ -487,6 +488,9 @@ static grub_command_t cmd_linux, cmd_linux16, cmd_initrd, cmd_initrd16;
|
||||
|
||||
GRUB_MOD_INIT(linux16)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_linux =
|
||||
grub_register_command ("linux", grub_cmd_linux,
|
||||
0, N_("Load Linux."));
|
||||
@@ -500,6 +504,9 @@ GRUB_MOD_INIT(linux16)
|
||||
@@ -504,6 +508,9 @@ GRUB_MOD_INIT(linux16)
|
||||
|
||||
GRUB_MOD_FINI(linux16)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_command (cmd_linux);
|
||||
grub_unregister_command (cmd_linux16);
|
||||
grub_unregister_command (cmd_initrd);
|
||||
diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c
|
||||
index 4a98d708259..3e6ad166dc9 100644
|
||||
index facb13f3d36..47e481f4576 100644
|
||||
--- a/grub-core/loader/multiboot.c
|
||||
+++ b/grub-core/loader/multiboot.c
|
||||
@@ -50,6 +50,7 @@
|
||||
@ -395,7 +316,7 @@ index 4a98d708259..3e6ad166dc9 100644
|
||||
|
||||
GRUB_MOD_INIT(multiboot)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_multiboot =
|
||||
@ -405,49 +326,49 @@ index 4a98d708259..3e6ad166dc9 100644
|
||||
|
||||
GRUB_MOD_FINI(multiboot)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
grub_unregister_command (cmd_multiboot);
|
||||
grub_unregister_command (cmd_module);
|
||||
}
|
||||
diff --git a/grub-core/loader/xnu.c b/grub-core/loader/xnu.c
|
||||
index 7f74d1d6fc9..e0f47e72b06 100644
|
||||
index 1c0cf6a430a..baa54e652ab 100644
|
||||
--- a/grub-core/loader/xnu.c
|
||||
+++ b/grub-core/loader/xnu.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <grub/env.h>
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/verify.h>
|
||||
#include <grub/safemath.h>
|
||||
+#include <grub/efi/sb.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -1478,6 +1479,9 @@ static grub_extcmd_t cmd_splash;
|
||||
@@ -1497,6 +1498,9 @@ static grub_extcmd_t cmd_splash;
|
||||
|
||||
GRUB_MOD_INIT(xnu)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
cmd_kernel = grub_register_command ("xnu_kernel", grub_cmd_xnu_kernel, 0,
|
||||
N_("Load XNU image."));
|
||||
cmd_kernel64 = grub_register_command ("xnu_kernel64", grub_cmd_xnu_kernel64,
|
||||
@@ -1518,6 +1522,9 @@ GRUB_MOD_INIT(xnu)
|
||||
@@ -1540,6 +1544,9 @@ GRUB_MOD_INIT(xnu)
|
||||
|
||||
GRUB_MOD_FINI(xnu)
|
||||
{
|
||||
+ if (grub_efi_secure_boot())
|
||||
+ if (grub_efi_get_secureboot () == GRUB_EFI_SECUREBOOT_MODE_ENABLED)
|
||||
+ return;
|
||||
+
|
||||
#ifndef GRUB_MACHINE_EMU
|
||||
grub_unregister_command (cmd_resume);
|
||||
#endif
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index 6840bfee9b7..090c8621066 100644
|
||||
index 6295df85f3f..585fa6662b6 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -85,7 +85,6 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
|
||||
@@ -91,7 +91,6 @@ EXPORT_FUNC (grub_efi_set_variable) (const char *var,
|
||||
const grub_efi_guid_t *guid,
|
||||
void *data,
|
||||
grub_size_t datasize);
|
||||
@ -455,41 +376,6 @@ index 6840bfee9b7..090c8621066 100644
|
||||
int
|
||||
EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
|
||||
const grub_efi_device_path_t *dp2);
|
||||
diff --git a/include/grub/efi/sb.h b/include/grub/efi/sb.h
|
||||
new file mode 100644
|
||||
index 00000000000..9629fbb0f9e
|
||||
--- /dev/null
|
||||
+++ b/include/grub/efi/sb.h
|
||||
@@ -0,0 +1,29 @@
|
||||
+/* sb.h - declare functions for EFI Secure Boot support */
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2006,2007,2008,2009 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/>.
|
||||
+ */
|
||||
+
|
||||
+#ifndef GRUB_EFI_SB_HEADER
|
||||
+#define GRUB_EFI_SB_HEADER 1
|
||||
+
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/dl.h>
|
||||
+
|
||||
+/* Functions. */
|
||||
+int EXPORT_FUNC (grub_efi_secure_boot) (void);
|
||||
+
|
||||
+#endif /* ! GRUB_EFI_SB_HEADER */
|
||||
diff --git a/include/grub/ia64/linux.h b/include/grub/ia64/linux.h
|
||||
new file mode 100644
|
||||
index 00000000000..e69de29bb2d
|
||||
@ -502,15 +388,3 @@ index 00000000000..e69de29bb2d
|
||||
diff --git a/include/grub/sparc64/linux.h b/include/grub/sparc64/linux.h
|
||||
new file mode 100644
|
||||
index 00000000000..e69de29bb2d
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index 3ea8e7ff45f..c6ba5b2d763 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -71,6 +71,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/command.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/device.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/disk.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/dl.h
|
||||
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/sb.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/env_private.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/err.h
|
||||
|
@ -245,10 +245,10 @@ index 6b24cbb9483..3017d0f3e52 100644
|
||||
if (kernel_mem && !loaded)
|
||||
grub_efi_free_pages ((grub_efi_physical_address_t)(grub_addr_t)kernel_mem,
|
||||
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
|
||||
index ce30e7fb01b..a093679cb80 100644
|
||||
index eddf9251d9a..25ef52c04eb 100644
|
||||
--- a/include/grub/i386/linux.h
|
||||
+++ b/include/grub/i386/linux.h
|
||||
@@ -136,7 +136,12 @@ struct linux_i386_kernel_header
|
||||
@@ -138,7 +138,12 @@ struct linux_i386_kernel_header
|
||||
grub_uint32_t kernel_alignment;
|
||||
grub_uint8_t relocatable;
|
||||
grub_uint8_t min_alignment;
|
||||
|
@ -4,14 +4,14 @@ Date: Mon, 8 Jul 2019 12:55:29 +0200
|
||||
Subject: [PATCH] re-write .gitignore
|
||||
|
||||
---
|
||||
.gitignore | 366 +++++++++++++++-----------------------
|
||||
docs/.gitignore | 5 +
|
||||
grub-core/.gitignore | 16 ++
|
||||
.gitignore | 152 ++++++++++++++++++++++++++++++++++++++
|
||||
docs/.gitignore | 5 ++
|
||||
grub-core/.gitignore | 16 ++++
|
||||
grub-core/lib/.gitignore | 1 +
|
||||
include/grub/gcrypt/.gitignore | 2 +
|
||||
po/.gitignore | 5 +
|
||||
po/.gitignore | 5 ++
|
||||
util/bash-completion.d/.gitignore | 2 +
|
||||
7 files changed, 171 insertions(+), 226 deletions(-)
|
||||
7 files changed, 183 insertions(+)
|
||||
create mode 100644 docs/.gitignore
|
||||
create mode 100644 grub-core/.gitignore
|
||||
create mode 100644 grub-core/lib/.gitignore
|
||||
@ -20,10 +20,14 @@ Subject: [PATCH] re-write .gitignore
|
||||
create mode 100644 util/bash-completion.d/.gitignore
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 819cd185d44..b45a633f3d1 100644
|
||||
index f6a1bd05175..594d0134d33 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -1,237 +1,151 @@
|
||||
@@ -275,3 +275,155 @@ widthspec.bin
|
||||
/xfs_test
|
||||
/xzcompress_test
|
||||
/zfs_test
|
||||
+=======
|
||||
+# things ./autogen.sh will create
|
||||
+/Makefile.utilgcry.def
|
||||
+/ABOUT-NLS
|
||||
@ -36,45 +40,7 @@ index 819cd185d44..b45a633f3d1 100644
|
||||
+/Makefile
|
||||
+
|
||||
+# things very common editors create that we never want
|
||||
*~
|
||||
-00_header
|
||||
-10_*
|
||||
-20_linux_xen
|
||||
-30_os-prober
|
||||
-40_custom
|
||||
-41_custom
|
||||
-*.1
|
||||
-*.8
|
||||
-ABOUT-NLS
|
||||
-aclocal.m4
|
||||
-ahci_test
|
||||
-ascii.bitmaps
|
||||
-ascii.h
|
||||
-autom4te.cache
|
||||
-build-aux
|
||||
-build-grub-gen-asciih
|
||||
-build-grub-gen-widthspec
|
||||
-build-grub-mkfont
|
||||
-cdboot_test
|
||||
-cmp_test
|
||||
-config.cache
|
||||
-config.guess
|
||||
-config.h
|
||||
-config-util.h
|
||||
-config-util.h.in
|
||||
-config.log
|
||||
-config.status
|
||||
-config.sub
|
||||
-configure
|
||||
-core_compress_test
|
||||
-DISTLIST
|
||||
-docs/*.info
|
||||
-docs/stamp-vti
|
||||
-docs/version.texi
|
||||
-ehci_test
|
||||
-example_grub_script_test
|
||||
-example_scripted_test
|
||||
-example_unit_test
|
||||
+*~
|
||||
+.*.sw?
|
||||
+*.patch
|
||||
+
|
||||
@ -87,207 +53,22 @@ index 819cd185d44..b45a633f3d1 100644
|
||||
+*.a
|
||||
+*.am
|
||||
+*.efi
|
||||
*.exec
|
||||
-*.exec.exe
|
||||
-fddboot_test
|
||||
-genkernsyms.sh
|
||||
-gensymlist.sh
|
||||
-gentrigtables
|
||||
-gentrigtables.exe
|
||||
-gettext_strings_test
|
||||
-/gnulib
|
||||
-grub-bin2h
|
||||
-/grub-bios-setup
|
||||
-/grub-bios-setup.exe
|
||||
-grub_cmd_date
|
||||
-grub_cmd_echo
|
||||
-grub_cmd_regexp
|
||||
-grub_cmd_set_date
|
||||
-grub_cmd_sleep
|
||||
-/grub-editenv
|
||||
-/grub-editenv.exe
|
||||
-grub-emu
|
||||
-grub-emu-lite
|
||||
-grub-emu.exe
|
||||
-grub-emu-lite.exe
|
||||
-grub_emu_init.c
|
||||
-grub_emu_init.h
|
||||
-/grub-file
|
||||
-/grub-file.exe
|
||||
-grub-fstest
|
||||
-grub-fstest.exe
|
||||
-grub_fstest_init.c
|
||||
-grub_fstest_init.h
|
||||
-grub_func_test
|
||||
-grub-install
|
||||
-grub-install.exe
|
||||
-grub-kbdcomp
|
||||
-/grub-macbless
|
||||
-/grub-macbless.exe
|
||||
-grub-macho2img
|
||||
-/grub-menulst2cfg
|
||||
-/grub-menulst2cfg.exe
|
||||
-/grub-mk*
|
||||
-grub-mount
|
||||
-/grub-ofpathname
|
||||
-/grub-ofpathname.exe
|
||||
-grub-core/build-grub-pe2elf.exe
|
||||
-/grub-probe
|
||||
-/grub-probe.exe
|
||||
-grub_probe_init.c
|
||||
-grub_probe_init.h
|
||||
-/grub-reboot
|
||||
-grub_script_blanklines
|
||||
-grub_script_blockarg
|
||||
-grub_script_break
|
||||
-grub-script-check
|
||||
-grub-script-check.exe
|
||||
-grub_script_check_init.c
|
||||
-grub_script_check_init.h
|
||||
-grub_script_comments
|
||||
-grub_script_continue
|
||||
-grub_script_dollar
|
||||
-grub_script_echo1
|
||||
-grub_script_echo_keywords
|
||||
-grub_script_escape_comma
|
||||
-grub_script_eval
|
||||
-grub_script_expansion
|
||||
-grub_script_final_semicolon
|
||||
-grub_script_for1
|
||||
-grub_script_functions
|
||||
-grub_script_gettext
|
||||
-grub_script_if
|
||||
-grub_script_leading_whitespace
|
||||
-grub_script_no_commands
|
||||
-grub_script_not
|
||||
-grub_script_return
|
||||
-grub_script_setparams
|
||||
-grub_script_shift
|
||||
-grub_script_strcmp
|
||||
-grub_script_test
|
||||
-grub_script_vars1
|
||||
-grub_script_while1
|
||||
-grub_script.tab.c
|
||||
-grub_script.tab.h
|
||||
-grub_script.yy.c
|
||||
-grub_script.yy.h
|
||||
-grub-set-default
|
||||
-grub_setup_init.c
|
||||
-grub_setup_init.h
|
||||
-grub-shell
|
||||
-grub-shell-tester
|
||||
-grub-sparc64-setup
|
||||
-grub-sparc64-setup.exe
|
||||
-/grub-syslinux2cfg
|
||||
-/grub-syslinux2cfg.exe
|
||||
-gzcompress_test
|
||||
-hddboot_test
|
||||
-help_test
|
||||
-*.img
|
||||
*.image
|
||||
-*.image.exe
|
||||
-include/grub/cpu
|
||||
-include/grub/machine
|
||||
-INSTALL.grub
|
||||
-install-sh
|
||||
-lib/libgcrypt-grub
|
||||
-libgrub_a_init.c
|
||||
-*.log
|
||||
+*.exec
|
||||
+*.image
|
||||
+*.img
|
||||
+*.info
|
||||
*.lst
|
||||
-lzocompress_test
|
||||
*.marker
|
||||
-Makefile
|
||||
/m4
|
||||
*.mod
|
||||
-mod-*.c
|
||||
-missing
|
||||
-netboot_test
|
||||
+*.lst
|
||||
+*.marker
|
||||
+/m4
|
||||
+*.mod
|
||||
+*.module
|
||||
*.o
|
||||
-*.a
|
||||
-ohci_test
|
||||
-partmap_test
|
||||
-pata_test
|
||||
*.pf2
|
||||
-*.pp
|
||||
-po/*.mo
|
||||
-po/grub.pot
|
||||
-po/Makefile.in.in
|
||||
-po/Makevars
|
||||
-po/Makevars.template
|
||||
-po/POTFILES
|
||||
-po/Rules-quot
|
||||
-po/stamp-po
|
||||
-printf_test
|
||||
-priority_queue_unit_test
|
||||
-pseries_test
|
||||
-stamp-h
|
||||
-stamp-h1
|
||||
-stamp-h.in
|
||||
-symlist.c
|
||||
-symlist.h
|
||||
-trigtables.c
|
||||
-*.trs
|
||||
-uhci_test
|
||||
-update-grub_lib
|
||||
-unidata.c
|
||||
-xzcompress_test
|
||||
-Makefile.in
|
||||
-GPATH
|
||||
-GRTAGS
|
||||
-GSYMS
|
||||
-GTAGS
|
||||
-compile
|
||||
-depcomp
|
||||
-mdate-sh
|
||||
-texinfo.tex
|
||||
-grub-core/lib/libgcrypt-grub
|
||||
-.deps
|
||||
-.deps-util
|
||||
-.deps-core
|
||||
+*.o
|
||||
+*.pf2
|
||||
+*.yy.[ch]
|
||||
+.deps/
|
||||
+.deps-core/
|
||||
+.deps-util/
|
||||
.dirstamp
|
||||
-Makefile.util.am
|
||||
-contrib
|
||||
-grub-core/bootinfo.txt
|
||||
-grub-core/Makefile.core.am
|
||||
-grub-core/Makefile.gcry.def
|
||||
-grub-core/contrib
|
||||
-grub-core/gdb_grub
|
||||
-grub-core/genmod.sh
|
||||
-grub-core/gensyminfo.sh
|
||||
-grub-core/gmodule.pl
|
||||
-grub-core/grub.chrp
|
||||
-grub-core/modinfo.sh
|
||||
-grub-core/*.module
|
||||
-grub-core/*.module.exe
|
||||
-grub-core/*.pp
|
||||
-grub-core/kernel.img.bin
|
||||
-util/bash-completion.d/grub
|
||||
-grub-core/lib/gnulib
|
||||
-grub-core/rs_decoder.h
|
||||
-widthspec.bin
|
||||
-widthspec.h
|
||||
-docs/stamp-1
|
||||
-docs/version-dev.texi
|
||||
-Makefile.utilgcry.def
|
||||
-po/*.po
|
||||
-po/*.gmo
|
||||
-po/LINGUAS
|
||||
-po/remove-potcdate.sed
|
||||
-include/grub/gcrypt/gcrypt.h
|
||||
-include/grub/gcrypt/g10lib.h
|
||||
-po/POTFILES.in
|
||||
-po/POTFILES-shell.in
|
||||
-/grub-glue-efi
|
||||
-/grub-render-label
|
||||
-/grub-glue-efi.exe
|
||||
-/grub-render-label.exe
|
||||
+.dirstamp
|
||||
+
|
||||
+# next are things you get if you do ./configure in the topdir (for e.g.
|
||||
+# "make dist" invocation.
|
||||
@ -320,10 +101,7 @@ index 819cd185d44..b45a633f3d1 100644
|
||||
+/build-grub-gen-widthspec
|
||||
+/build-grub-mkfont
|
||||
+/config-util.h.in
|
||||
/garbage-gen
|
||||
-/garbage-gen.exe
|
||||
-/grub-fs-tester
|
||||
-grub-core/build-grub-module-verifier
|
||||
+/garbage-gen
|
||||
+/grub*-bios-setup
|
||||
+/grub*-bios-setup.8
|
||||
+/grub*-editenv
|
||||
|
@ -96,10 +96,10 @@ index 4d493ab7661..3a6689abb11 100644
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 1b03dfd57b9..222e239c1be 100644
|
||||
index c4ebe9e22ad..70614de1565 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -33,6 +33,9 @@
|
||||
@@ -34,6 +34,9 @@
|
||||
#include <grub/charset.h>
|
||||
#include <grub/script_sh.h>
|
||||
#include <grub/bufio.h>
|
||||
@ -109,7 +109,7 @@ index 1b03dfd57b9..222e239c1be 100644
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -275,6 +278,22 @@ grub_normal_execute (const char *config, int nested, int batch)
|
||||
@@ -276,6 +279,22 @@ grub_normal_execute (const char *config, int nested, int batch)
|
||||
{
|
||||
menu = read_config_file (config);
|
||||
|
||||
@ -133,7 +133,7 @@ index 1b03dfd57b9..222e239c1be 100644
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
}
|
||||
diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
|
||||
index ee299fd0ea6..0d05d6b0709 100644
|
||||
index 25158407dd8..ad80399246a 100644
|
||||
--- a/grub-core/script/execute.c
|
||||
+++ b/grub-core/script/execute.c
|
||||
@@ -28,6 +28,9 @@
|
||||
@ -146,7 +146,7 @@ index ee299fd0ea6..0d05d6b0709 100644
|
||||
|
||||
/* Max digits for a char is 3 (0xFF is 255), similarly for an int it
|
||||
is sizeof (int) * 3, and one extra for a possible -ve sign. */
|
||||
@@ -878,6 +881,10 @@ grub_script_execute_sourcecode (const char *source)
|
||||
@@ -883,6 +886,10 @@ grub_script_execute_sourcecode (const char *source)
|
||||
grub_err_t ret = 0;
|
||||
struct grub_script *parsed_script;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
|
||||
index d317efa368d..29df35e6d20 100644
|
||||
index cd720080375..44d0b3b19fb 100644
|
||||
--- a/grub-core/term/terminfo.c
|
||||
+++ b/grub-core/term/terminfo.c
|
||||
@@ -151,7 +151,7 @@ grub_terminfo_set_current (struct grub_term_output *term,
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Marcel Kolaja <mkolaja@redhat.com>
|
||||
Date: Tue, 21 Jan 2014 10:57:08 -0500
|
||||
Subject: [PATCH] Honor a symlink when generating configuration by
|
||||
grub2-mkconfig
|
||||
|
||||
Honor a symlink when generating configuration by grub2-mkconfig, so that
|
||||
the -o option follows it rather than overwriting it with a regular file.
|
||||
---
|
||||
util/grub-mkconfig.in | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 9f477ff0546..523d4e029bb 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -287,7 +287,8 @@ and /etc/grub.d/* files or please file a bug report with
|
||||
exit 1
|
||||
else
|
||||
# none of the children aborted with error, install the new grub.cfg
|
||||
- mv -f ${grub_cfg}.new ${grub_cfg}
|
||||
+ cat ${grub_cfg}.new > ${grub_cfg}
|
||||
+ rm -f ${grub_cfg}.new
|
||||
fi
|
||||
fi
|
||||
|
@ -10,10 +10,10 @@ Apparently these go in a new place now.
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 7656f2434e5..d283af64c8c 100644
|
||||
index 74719416c4c..c0103b30d4e 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -305,6 +305,14 @@ AC_SUBST(grubdirname)
|
||||
@@ -314,6 +314,14 @@ AC_SUBST(grubdirname)
|
||||
AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
|
||||
[Default grub directory name])
|
||||
|
||||
@ -28,7 +28,7 @@ index 7656f2434e5..d283af64c8c 100644
|
||||
#
|
||||
# Checks for build programs.
|
||||
#
|
||||
@@ -516,6 +524,9 @@ HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
|
||||
@@ -525,6 +533,9 @@ HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
|
||||
# Check for target programs.
|
||||
#
|
||||
|
@ -12,10 +12,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 58 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c
|
||||
index d5e0c79a70e..9175ad297d8 100644
|
||||
index 8397886fa05..d7a222e681b 100644
|
||||
--- a/grub-core/normal/menu.c
|
||||
+++ b/grub-core/normal/menu.c
|
||||
@@ -163,16 +163,41 @@ grub_menu_set_timeout (int timeout)
|
||||
@@ -163,15 +163,40 @@ grub_menu_set_timeout (int timeout)
|
||||
}
|
||||
}
|
||||
|
||||
@ -51,14 +51,13 @@ index d5e0c79a70e..9175ad297d8 100644
|
||||
-get_and_remove_first_entry_number (const char *name)
|
||||
+get_and_remove_first_entry_number (grub_menu_t menu, const char *name)
|
||||
{
|
||||
const char *val;
|
||||
char *tail;
|
||||
const char *val, *tail;
|
||||
int entry;
|
||||
+ int sz = 0;
|
||||
|
||||
val = grub_env_get (name);
|
||||
if (! val)
|
||||
@@ -182,9 +207,39 @@ get_and_remove_first_entry_number (const char *name)
|
||||
@@ -181,9 +206,39 @@ get_and_remove_first_entry_number (const char *name)
|
||||
|
||||
entry = (int) grub_strtoul (val, &tail, 0);
|
||||
|
||||
@ -99,7 +98,7 @@ index d5e0c79a70e..9175ad297d8 100644
|
||||
while (*tail && grub_isspace (*tail))
|
||||
tail++;
|
||||
grub_env_set (name, tail);
|
||||
@@ -347,7 +402,7 @@ grub_menu_execute_with_fallback (grub_menu_t menu,
|
||||
@@ -346,7 +401,7 @@ grub_menu_execute_with_fallback (grub_menu_t menu,
|
||||
grub_menu_execute_entry (entry, 1);
|
||||
|
||||
/* Deal with fallback entries. */
|
||||
@ -108,7 +107,7 @@ index d5e0c79a70e..9175ad297d8 100644
|
||||
>= 0)
|
||||
{
|
||||
grub_print_error ();
|
||||
@@ -465,30 +520,6 @@ grub_menu_register_viewer (struct grub_menu_viewer *viewer)
|
||||
@@ -464,30 +519,6 @@ grub_menu_register_viewer (struct grub_menu_viewer *viewer)
|
||||
viewers = viewer;
|
||||
}
|
||||
|
@ -27,10 +27,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
14 files changed, 48 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/minicmd.c b/grub-core/commands/minicmd.c
|
||||
index 6bbce3128cf..6d66b7c453a 100644
|
||||
index fa498931ed2..2bd3ac76f2d 100644
|
||||
--- a/grub-core/commands/minicmd.c
|
||||
+++ b/grub-core/commands/minicmd.c
|
||||
@@ -179,12 +179,24 @@ grub_mini_cmd_lsmod (struct grub_command *cmd __attribute__ ((unused)),
|
||||
@@ -182,12 +182,24 @@ grub_mini_cmd_lsmod (struct grub_command *cmd __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
/* exit */
|
||||
@ -60,10 +60,10 @@ index 6bbce3128cf..6d66b7c453a 100644
|
||||
}
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 6e1ceb90516..370ce03c5d7 100644
|
||||
index 8cff7be0289..05d8237a9b2 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -164,11 +164,16 @@ grub_reboot (void)
|
||||
@@ -165,11 +165,16 @@ grub_reboot (void)
|
||||
}
|
||||
|
||||
void
|
||||
@ -96,10 +96,10 @@ index 425bb960347..55ea5a11ccd 100644
|
||||
grub_reboot ();
|
||||
}
|
||||
diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
|
||||
index 65db79baa10..19cd007d448 100644
|
||||
index dfd8a8ec488..0ff13bcaf8c 100644
|
||||
--- a/grub-core/kern/emu/misc.c
|
||||
+++ b/grub-core/kern/emu/misc.c
|
||||
@@ -139,9 +139,10 @@ xasprintf (const char *fmt, ...)
|
||||
@@ -151,9 +151,10 @@ xasprintf (const char *fmt, ...)
|
||||
|
||||
#if !defined (GRUB_MACHINE_EMU) || defined (GRUB_UTIL)
|
||||
void
|
||||
@ -152,7 +152,7 @@ index d483e35eed2..e71d1584164 100644
|
||||
grub_ieee1275_exit ();
|
||||
}
|
||||
diff --git a/grub-core/kern/mips/arc/init.c b/grub-core/kern/mips/arc/init.c
|
||||
index 3834a149093..86b3a25ec40 100644
|
||||
index 2ed3ff3191e..5c40c34078d 100644
|
||||
--- a/grub-core/kern/mips/arc/init.c
|
||||
+++ b/grub-core/kern/mips/arc/init.c
|
||||
@@ -276,7 +276,7 @@ grub_halt (void)
|
||||
@ -191,10 +191,10 @@ index be88b77d22d..8b6c55ffc01 100644
|
||||
grub_halt ();
|
||||
}
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index 3b633d51f4c..cd63a8cea73 100644
|
||||
index 3af336ee227..63b586d09cb 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -1095,9 +1095,18 @@ grub_abort (void)
|
||||
@@ -1209,9 +1209,18 @@ grub_abort (void)
|
||||
grub_getkey ();
|
||||
}
|
||||
|
||||
@ -253,10 +253,10 @@ index 782ca72952a..708b060f324 100644
|
||||
struct sched_shutdown arg;
|
||||
|
||||
diff --git a/include/grub/misc.h b/include/grub/misc.h
|
||||
index ee48eb7a726..f9135b62e35 100644
|
||||
index 7d2b5519690..fd18e6320b8 100644
|
||||
--- a/include/grub/misc.h
|
||||
+++ b/include/grub/misc.h
|
||||
@@ -334,7 +334,7 @@ int EXPORT_FUNC(grub_vsnprintf) (char *str, grub_size_t n, const char *fmt,
|
||||
@@ -353,7 +353,7 @@ int EXPORT_FUNC(grub_vsnprintf) (char *str, grub_size_t n, const char *fmt,
|
||||
char *EXPORT_FUNC(grub_xasprintf) (const char *fmt, ...)
|
||||
__attribute__ ((format (GNU_PRINTF, 1, 2))) WARN_UNUSED_RESULT;
|
||||
char *EXPORT_FUNC(grub_xvasprintf) (const char *fmt, va_list args) WARN_UNUSED_RESULT;
|
File diff suppressed because it is too large
Load Diff
@ -6,30 +6,38 @@ Subject: [PATCH] Make efi machines load an env block from a variable
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/Makefile.core.def | 1 +
|
||||
grub-core/kern/efi/init.c | 34 +++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 34 insertions(+), 1 deletion(-)
|
||||
grub-core/kern/efi/init.c | 36 +++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 36 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index eb1088fd654..41b5e16a3ce 100644
|
||||
index 45d3edaa4dc..c865a08b027 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -203,6 +203,7 @@ kernel = {
|
||||
efi = term/efi/console.c;
|
||||
efi = kern/acpi.c;
|
||||
@@ -207,6 +207,7 @@ kernel = {
|
||||
efi = kern/efi/acpi.c;
|
||||
efi = kern/efi/sb.c;
|
||||
efi = kern/lockdown.c;
|
||||
+ efi = lib/envblk.c;
|
||||
i386_coreboot = kern/i386/pc/acpi.c;
|
||||
i386_multiboot = kern/i386/pc/acpi.c;
|
||||
i386_coreboot = kern/acpi.c;
|
||||
diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
|
||||
index 3dfdf2d22b0..71d2279a0c1 100644
|
||||
index 7facacf09c7..6d39bd3ad29 100644
|
||||
--- a/grub-core/kern/efi/init.c
|
||||
+++ b/grub-core/kern/efi/init.c
|
||||
@@ -25,9 +25,40 @@
|
||||
@@ -27,8 +27,11 @@
|
||||
#include <grub/env.h>
|
||||
#include <grub/mm.h>
|
||||
#include <grub/kernel.h>
|
||||
+
|
||||
#include <grub/stack_protector.h>
|
||||
|
||||
+#include <grub/lib/envblk.h>
|
||||
+
|
||||
#ifdef GRUB_STACK_PROTECTOR
|
||||
|
||||
static grub_efi_guid_t rng_protocol_guid = GRUB_EFI_RNG_PROTOCOL_GUID;
|
||||
@@ -82,6 +85,36 @@ stack_protector_init (void)
|
||||
|
||||
grub_addr_t grub_modbase;
|
||||
|
||||
@ -54,8 +62,8 @@ index 3dfdf2d22b0..71d2279a0c1 100644
|
||||
+ struct grub_envblk envblk_s = { NULL, 0 };
|
||||
+ grub_envblk_t envblk = &envblk_s;
|
||||
+
|
||||
+ envblk_s.buf = grub_efi_get_variable ("GRUB_ENV", &efi_grub_guid,
|
||||
+ &envblk_s.size);
|
||||
+ grub_efi_get_variable ("GRUB_ENV", &efi_grub_guid, &envblk_s.size,
|
||||
+ (void **) &envblk_s.buf);
|
||||
+ if (!envblk_s.buf || envblk_s.size < 1)
|
||||
+ return;
|
||||
+
|
||||
@ -66,7 +74,7 @@ index 3dfdf2d22b0..71d2279a0c1 100644
|
||||
void
|
||||
grub_efi_init (void)
|
||||
{
|
||||
@@ -42,10 +73,11 @@ grub_efi_init (void)
|
||||
@@ -108,10 +141,11 @@ grub_efi_init (void)
|
||||
efi_call_4 (grub_efi_system_table->boot_services->set_watchdog_timer,
|
||||
0, 0, 0, NULL);
|
||||
|
@ -1,106 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 4 Sep 2014 16:49:25 -0400
|
||||
Subject: [PATCH] Add GRUB_DISABLE_UUID.
|
||||
|
||||
This will cause "search --fs-uuid --set=root ..." not to be generated by
|
||||
grub2-mkconfig, and instead simply attempt to use the grub device name
|
||||
as it understands it.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
docs/grub.texi | 7 +++++++
|
||||
util/grub-mkconfig.in | 22 +++++++++++++++++++---
|
||||
util/grub-mkconfig_lib.in | 4 ++--
|
||||
3 files changed, 28 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 87795075a87..6f524305085 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -1441,6 +1441,13 @@ enable the use of partition UUIDs, set this option to @samp{false}.
|
||||
If this option is set to @samp{true}, disable the generation of recovery
|
||||
mode menu entries.
|
||||
|
||||
+@item GRUB_DISABLE_UUID
|
||||
+Normally, @command{grub-mkconfig} will generate menu entries that use
|
||||
+universally-unique identifiers (UUIDs) to identify various filesystems to
|
||||
+search for files. This is usually more reliable, but in some cases it may
|
||||
+not be appropriate. To disable this use of UUIDs, set this option to
|
||||
+@samp{true}.
|
||||
+
|
||||
@item GRUB_VIDEO_BACKEND
|
||||
If graphical video support is required, either because the @samp{gfxterm}
|
||||
graphical terminal is in use or because @samp{GRUB_GFXPAYLOAD_LINUX} is set,
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 523d4e029bb..9ecbcfb5b43 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -133,12 +133,12 @@ fi
|
||||
|
||||
# Device containing our userland. Typically used for root= parameter.
|
||||
GRUB_DEVICE="`${grub_probe} --target=device /`"
|
||||
-GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
|
||||
-GRUB_DEVICE_PARTUUID="`${grub_probe} --device ${GRUB_DEVICE} --target=partuuid 2> /dev/null`" || true
|
||||
+GRUB_DEVICE_UUID_GENERATED="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
|
||||
+GRUB_DEVICE_PARTUUID_GENERATED="`${grub_probe} --device ${GRUB_DEVICE} --target=partuuid 2> /dev/null`" || true
|
||||
|
||||
# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
|
||||
GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
|
||||
-GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
|
||||
+GRUB_DEVICE_BOOT_UUID_GENERATED="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
|
||||
|
||||
# Filesystem for the device containing our userland. Used for stuff like
|
||||
# choosing Hurd filesystem module.
|
||||
@@ -158,6 +158,21 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||
. ${sysconfdir}/default/grub
|
||||
fi
|
||||
|
||||
+if [ "x$GRUB_DISABLE_UUID" != "xtrue" ]; then
|
||||
+ if [ -z "$GRUB_DEVICE_UUID" ]; then
|
||||
+ GRUB_DEVICE_UUID="$GRUB_DEVICE_UUID_GENERATED"
|
||||
+ fi
|
||||
+ if [ -z "$GRUB_DEVICE_BOOT_UUID" ]; then
|
||||
+ GRUB_DEVICE_BOOT_UUID="$GRUB_DEVICE_BOOT_UUID_GENERATED"
|
||||
+ fi
|
||||
+ if [ -z "$GRUB_DEVICE_UUID" ]; then
|
||||
+ GRUB_DEVICE_UUID="$GRUB_DEVICE_UUID_GENERATED"
|
||||
+ fi
|
||||
+ if [ -z "$GRUB_DEVICE_PART_UUID" ]; then
|
||||
+ GRUB_DEVICE_PART_UUID="$GRUB_DEVICE_PART_UUID_GENERATED"
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
# XXX: should this be deprecated at some point?
|
||||
if [ "x${GRUB_TERMINAL}" != "x" ] ; then
|
||||
GRUB_TERMINAL_INPUT="${GRUB_TERMINAL}"
|
||||
@@ -227,6 +242,7 @@ export GRUB_DEFAULT \
|
||||
GRUB_DISABLE_LINUX_UUID \
|
||||
GRUB_DISABLE_LINUX_PARTUUID \
|
||||
GRUB_DISABLE_RECOVERY \
|
||||
+ GRUB_DISABLE_UUID \
|
||||
GRUB_VIDEO_BACKEND \
|
||||
GRUB_GFXMODE \
|
||||
GRUB_BACKGROUND \
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 0f801cab3e4..1001a12232b 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -156,7 +156,7 @@ prepare_grub_to_access_device ()
|
||||
if [ "x$fs_hint" != x ]; then
|
||||
echo "set root='$fs_hint'"
|
||||
fi
|
||||
- if fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
|
||||
+ if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
|
||||
hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints=
|
||||
echo "if [ x\$feature_platform_search_hint = xy ]; then"
|
||||
echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
|
||||
@@ -173,7 +173,7 @@ grub_get_device_id ()
|
||||
IFS='
|
||||
'
|
||||
device="$1"
|
||||
- if fs_uuid="`"${grub_probe}" --device ${device} --target=fs_uuid 2> /dev/null`" ; then
|
||||
+ if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device ${device} --target=fs_uuid 2> /dev/null`" ; then
|
||||
echo "$fs_uuid";
|
||||
else
|
||||
echo $device |sed 's, ,_,g'
|
@ -12,10 +12,10 @@ maximum screen size so that text is not overwritten.
|
||||
create mode 100644 util/grub.d/20_ppc_terminfo.in
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 969d32f0097..8717774d510 100644
|
||||
index f8b356cc1fa..2c9b283a230 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -496,6 +496,13 @@ script = {
|
||||
@@ -508,6 +508,13 @@ script = {
|
||||
condition = COND_HOST_LINUX;
|
||||
};
|
||||
|
@ -14,10 +14,10 @@ https://bugzilla.redhat.com/show_bug.cgi?id=857936
|
||||
2 files changed, 30 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
|
||||
index 9cad0c4485c..8ab7794c47b 100644
|
||||
index 73967e2f5b0..d1de9fa6873 100644
|
||||
--- a/grub-core/kern/main.c
|
||||
+++ b/grub-core/kern/main.c
|
||||
@@ -127,16 +127,15 @@ grub_set_prefix_and_root (void)
|
||||
@@ -128,16 +128,15 @@ grub_set_prefix_and_root (void)
|
||||
|
||||
grub_machine_get_bootlocation (&fwdevice, &fwpath);
|
||||
|
||||
@ -41,10 +41,10 @@ index 9cad0c4485c..8ab7794c47b 100644
|
||||
}
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 222e239c1be..394bfbea868 100644
|
||||
index 70614de1565..62571e6dfcc 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -338,7 +338,30 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
|
||||
@@ -339,7 +339,30 @@ 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;
|
@ -1,19 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 22 Jul 2015 11:21:01 -0400
|
||||
Subject: [PATCH] Mark po/exclude.pot as binary so git won't try to diff
|
||||
nonprintables.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
.gitattributes | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
create mode 100644 .gitattributes
|
||||
|
||||
diff --git a/.gitattributes b/.gitattributes
|
||||
new file mode 100644
|
||||
index 00000000000..33ffaa40460
|
||||
--- /dev/null
|
||||
+++ b/.gitattributes
|
||||
@@ -0,0 +1 @@
|
||||
+po/exclude.pot binary
|
@ -3,17 +3,20 @@ From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 1 Oct 2012 13:24:37 -0400
|
||||
Subject: [PATCH] Pass "\x[[:hex:]][[:hex:]]" straight through unmolested.
|
||||
|
||||
Don't munge raw spaces when we're doing our cmdline escaping (#923374)
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/commands/wildcard.c | 16 +++++++++++++++-
|
||||
grub-core/lib/cmdline.c | 34 ++++++++++++++++++++++++++++++++--
|
||||
grub-core/lib/cmdline.c | 25 +++++++++++++++++++++++--
|
||||
grub-core/script/execute.c | 43 +++++++++++++++++++++++++++++++++++++------
|
||||
3 files changed, 84 insertions(+), 9 deletions(-)
|
||||
3 files changed, 75 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/wildcard.c b/grub-core/commands/wildcard.c
|
||||
index 4a106ca040b..560d437cdc6 100644
|
||||
index cc3290311f0..8f67a4be7f0 100644
|
||||
--- a/grub-core/commands/wildcard.c
|
||||
+++ b/grub-core/commands/wildcard.c
|
||||
@@ -462,6 +462,12 @@ check_file (const char *dir, const char *basename)
|
||||
@@ -488,6 +488,12 @@ check_file (const char *dir, const char *basename)
|
||||
return ctx.found;
|
||||
}
|
||||
|
||||
@ -26,7 +29,7 @@ index 4a106ca040b..560d437cdc6 100644
|
||||
static void
|
||||
unescape (char *out, const char *in, const char *end)
|
||||
{
|
||||
@@ -470,7 +476,15 @@ unescape (char *out, const char *in, const char *end)
|
||||
@@ -496,7 +502,15 @@ unescape (char *out, const char *in, const char *end)
|
||||
|
||||
for (optr = out, iptr = in; iptr < end;)
|
||||
{
|
||||
@ -44,7 +47,7 @@ index 4a106ca040b..560d437cdc6 100644
|
||||
*optr++ = iptr[1];
|
||||
iptr += 2;
|
||||
diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c
|
||||
index ed0b149dca5..e0fb0a9e48a 100644
|
||||
index ed0b149dca5..8e2294d8ff6 100644
|
||||
--- a/grub-core/lib/cmdline.c
|
||||
+++ b/grub-core/lib/cmdline.c
|
||||
@@ -20,6 +20,12 @@
|
||||
@ -75,21 +78,12 @@ index ed0b149dca5..e0fb0a9e48a 100644
|
||||
size++;
|
||||
else if (*c == ' ')
|
||||
space = 1;
|
||||
@@ -86,7 +98,25 @@ grub_create_loader_cmdline (int argc, char *argv[], char *buf,
|
||||
@@ -86,7 +98,16 @@ grub_create_loader_cmdline (int argc, char *argv[], char *buf,
|
||||
|
||||
while (*c)
|
||||
{
|
||||
- if (*c == '\\' || *c == '\'' || *c == '"')
|
||||
+ if (*c == ' ')
|
||||
+ {
|
||||
+ *buf++ = '\\';
|
||||
+ *buf++ = 'x';
|
||||
+ *buf++ = '2';
|
||||
+ *buf++ = '0';
|
||||
+ c++;
|
||||
+ continue;
|
||||
+ }
|
||||
+ else if (*c == '\\' && *(c+1) == 'x' &&
|
||||
+ if (*c == '\\' && *(c+1) == 'x' &&
|
||||
+ is_hex(*(c+2)) && is_hex(*(c+3)))
|
||||
+ {
|
||||
+ *buf++ = *c++;
|
||||
@ -103,7 +97,7 @@ index ed0b149dca5..e0fb0a9e48a 100644
|
||||
|
||||
*buf++ = *c;
|
||||
diff --git a/grub-core/script/execute.c b/grub-core/script/execute.c
|
||||
index 0d05d6b0709..ba38b5e8aef 100644
|
||||
index ad80399246a..0c6dd9c5201 100644
|
||||
--- a/grub-core/script/execute.c
|
||||
+++ b/grub-core/script/execute.c
|
||||
@@ -56,6 +56,12 @@ static struct grub_script_scope *scope = 0;
|
@ -14,7 +14,7 @@ Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
Signed-off-by: Will Thompson <wjt@endlessm.com>
|
||||
---
|
||||
grub-core/Makefile.core.def | 11 +
|
||||
grub-core/commands/blscfg.c | 1096 ++++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/commands/blscfg.c | 1177 ++++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/commands/legacycfg.c | 5 +-
|
||||
grub-core/commands/loadenv.c | 77 +--
|
||||
grub-core/commands/menuentry.c | 20 +-
|
||||
@ -23,15 +23,15 @@ Signed-off-by: Will Thompson <wjt@endlessm.com>
|
||||
include/grub/compiler.h | 2 +
|
||||
include/grub/menu.h | 13 +
|
||||
include/grub/normal.h | 2 +-
|
||||
10 files changed, 1243 insertions(+), 82 deletions(-)
|
||||
10 files changed, 1324 insertions(+), 82 deletions(-)
|
||||
create mode 100644 grub-core/commands/blscfg.c
|
||||
create mode 100644 grub-core/commands/loadenv.h
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 41b5e16a3ce..57e253ab1a1 100644
|
||||
index c865a08b027..c15e91943b9 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -811,6 +811,16 @@ module = {
|
||||
@@ -814,6 +814,16 @@ module = {
|
||||
common = commands/blocklist.c;
|
||||
};
|
||||
|
||||
@ -48,7 +48,7 @@ index 41b5e16a3ce..57e253ab1a1 100644
|
||||
module = {
|
||||
name = boot;
|
||||
common = commands/boot.c;
|
||||
@@ -988,6 +998,7 @@ module = {
|
||||
@@ -980,6 +990,7 @@ module = {
|
||||
module = {
|
||||
name = loadenv;
|
||||
common = commands/loadenv.c;
|
||||
@ -58,10 +58,10 @@ index 41b5e16a3ce..57e253ab1a1 100644
|
||||
|
||||
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
|
||||
new file mode 100644
|
||||
index 00000000000..54458b14518
|
||||
index 00000000000..e907a6a5d28
|
||||
--- /dev/null
|
||||
+++ b/grub-core/commands/blscfg.c
|
||||
@@ -0,0 +1,1096 @@
|
||||
@@ -0,0 +1,1177 @@
|
||||
+/*-*- Mode: C; c-basic-offset: 2; indent-tabs-mode: t -*-*/
|
||||
+
|
||||
+/* bls.c - implementation of the boot loader spec */
|
||||
@ -227,8 +227,8 @@ index 00000000000..54458b14518
|
||||
+
|
||||
+ /* loop through each version segment of str1 and str2 and compare them */
|
||||
+ while (*one || *two) {
|
||||
+ while (*one && !grub_isalnum(*one) && *one != '~') one++;
|
||||
+ while (*two && !grub_isalnum(*two) && *two != '~') two++;
|
||||
+ while (*one && !grub_isalnum(*one) && *one != '~' && *one != '+') one++;
|
||||
+ while (*two && !grub_isalnum(*two) && *two != '~' && *two != '+') two++;
|
||||
+
|
||||
+ /* handle the tilde separator, it sorts before everything else */
|
||||
+ if (*one == '~' || *two == '~') {
|
||||
@ -239,6 +239,21 @@ index 00000000000..54458b14518
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Handle plus separator. Concept is the same as tilde,
|
||||
+ * except that if one of the strings ends (base version),
|
||||
+ * the other is considered as higher version.
|
||||
+ */
|
||||
+ if (*one == '+' || *two == '+') {
|
||||
+ if (!*one) return -1;
|
||||
+ if (!*two) return 1;
|
||||
+ if (*one != '+') goto_return (1);
|
||||
+ if (*two != '+') goto_return (-1);
|
||||
+ one++;
|
||||
+ two++;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ /* If we ran to the end of either, we are finished with the loop */
|
||||
+ if (!(*one && *two)) break;
|
||||
+
|
||||
@ -649,43 +664,52 @@ index 00000000000..54458b14518
|
||||
+ list[nlist] = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (!nlist)
|
||||
+ {
|
||||
+ grub_free (list);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (num)
|
||||
+ *num = nlist;
|
||||
+
|
||||
+ return list;
|
||||
+}
|
||||
+
|
||||
+static char *field_append(bool is_var, char *buffer, char *start, char *end)
|
||||
+static char *field_append(bool is_var, char *buffer, const char *start, const char *end)
|
||||
+{
|
||||
+ char *temp = grub_strndup(start, end - start + 1);
|
||||
+ const char *field = temp;
|
||||
+ char *tmp = grub_strndup(start, end - start + 1);
|
||||
+ const char *field = tmp;
|
||||
+ int term = is_var ? 2 : 1;
|
||||
+
|
||||
+ if (is_var) {
|
||||
+ field = grub_env_get (temp);
|
||||
+ field = grub_env_get (tmp);
|
||||
+ if (!field)
|
||||
+ return buffer;
|
||||
+ }
|
||||
+
|
||||
+ if (!buffer) {
|
||||
+ buffer = grub_strdup(field);
|
||||
+ if (!buffer)
|
||||
+ return NULL;
|
||||
+ } else {
|
||||
+ buffer = grub_realloc (buffer, grub_strlen(buffer) + grub_strlen(field));
|
||||
+ if (!buffer)
|
||||
+ return NULL;
|
||||
+ if (!buffer)
|
||||
+ buffer = grub_zalloc (grub_strlen(field) + term);
|
||||
+ else
|
||||
+ buffer = grub_realloc (buffer, grub_strlen(buffer) + grub_strlen(field) + term);
|
||||
+
|
||||
+ grub_stpcpy (buffer + grub_strlen(buffer), field);
|
||||
+ }
|
||||
+ if (!buffer)
|
||||
+ return NULL;
|
||||
+
|
||||
+ tmp = buffer + grub_strlen(buffer);
|
||||
+ tmp = grub_stpcpy (tmp, field);
|
||||
+
|
||||
+ if (is_var)
|
||||
+ tmp = grub_stpcpy (tmp, " ");
|
||||
+
|
||||
+ return buffer;
|
||||
+}
|
||||
+
|
||||
+static char *expand_val(char *value)
|
||||
+static char *expand_val(const char *value)
|
||||
+{
|
||||
+ char *buffer = NULL;
|
||||
+ char *start = value;
|
||||
+ char *end = value;
|
||||
+ const char *start = value;
|
||||
+ const char *end = value;
|
||||
+ bool is_var = false;
|
||||
+
|
||||
+ if (!value)
|
||||
@ -706,6 +730,8 @@ index 00000000000..54458b14518
|
||||
+ buffer = field_append(is_var, buffer, start, end);
|
||||
+ is_var = false;
|
||||
+ start = value;
|
||||
+ if (*start == ' ')
|
||||
+ start++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@ -762,6 +788,8 @@ index 00000000000..54458b14518
|
||||
+ const char *early_initrd = NULL;
|
||||
+ char **early_initrds = NULL;
|
||||
+ char *initrd_prefix = NULL;
|
||||
+ char *devicetree = NULL;
|
||||
+ char *dt = NULL;
|
||||
+ char *id = entry->filename;
|
||||
+ char *dotconf = id;
|
||||
+ char *hotkey = NULL;
|
||||
@ -773,6 +801,7 @@ index 00000000000..54458b14518
|
||||
+
|
||||
+ char *src = NULL;
|
||||
+ int i, index;
|
||||
+ bool add_dt_prefix = false;
|
||||
+
|
||||
+ grub_dprintf("blscfg", "%s got here\n", __func__);
|
||||
+ clinux = bls_get_val (entry, "linux", NULL);
|
||||
@ -800,6 +829,14 @@ index 00000000000..54458b14518
|
||||
+
|
||||
+ initrds = bls_make_list (entry, "initrd", NULL);
|
||||
+
|
||||
+ devicetree = expand_val (bls_get_val (entry, "devicetree", NULL));
|
||||
+
|
||||
+ if (!devicetree)
|
||||
+ {
|
||||
+ devicetree = expand_val (grub_env_get("devicetree"));
|
||||
+ add_dt_prefix = true;
|
||||
+ }
|
||||
+
|
||||
+ hotkey = bls_get_val (entry, "grub_hotkey", NULL);
|
||||
+ users = expand_val (bls_get_val (entry, "grub_users", NULL));
|
||||
+ classes = bls_make_list (entry, "grub_class", NULL);
|
||||
@ -865,7 +902,6 @@ index 00000000000..54458b14518
|
||||
+ goto finish;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ tmp = grub_stpcpy(initrd, "initrd");
|
||||
+ for (i = 0; early_initrds != NULL && early_initrds[i] != NULL; i++)
|
||||
+ {
|
||||
@ -885,21 +921,68 @@ index 00000000000..54458b14518
|
||||
+ tmp = grub_stpcpy (tmp, "\n");
|
||||
+ }
|
||||
+
|
||||
+ src = grub_xasprintf ("load_video\n"
|
||||
+ if (devicetree)
|
||||
+ {
|
||||
+ char *prefix = NULL;
|
||||
+ int dt_size;
|
||||
+
|
||||
+ if (add_dt_prefix)
|
||||
+ {
|
||||
+ prefix = grub_strrchr (clinux, '/');
|
||||
+ prefix = grub_strndup(clinux, prefix - clinux + 1);
|
||||
+ if (!prefix)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
|
||||
+ goto finish;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ dt_size = sizeof("devicetree " GRUB_BOOT_DEVICE) + grub_strlen(devicetree) + 1;
|
||||
+
|
||||
+ if (add_dt_prefix)
|
||||
+ {
|
||||
+ dt_size += grub_strlen(prefix);
|
||||
+ }
|
||||
+
|
||||
+ dt = grub_malloc (dt_size);
|
||||
+ if (!dt)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
|
||||
+ goto finish;
|
||||
+ }
|
||||
+ char *tmp = dt;
|
||||
+ tmp = grub_stpcpy (dt, "devicetree");
|
||||
+ tmp = grub_stpcpy (tmp, " " GRUB_BOOT_DEVICE);
|
||||
+ if (add_dt_prefix)
|
||||
+ tmp = grub_stpcpy (tmp, prefix);
|
||||
+ tmp = grub_stpcpy (tmp, devicetree);
|
||||
+ tmp = grub_stpcpy (tmp, "\n");
|
||||
+
|
||||
+ grub_free(prefix);
|
||||
+ }
|
||||
+
|
||||
+ grub_dprintf ("blscfg2", "devicetree %s for id:\"%s\"\n", dt, id);
|
||||
+
|
||||
+ const char *sdval = grub_env_get("save_default");
|
||||
+ bool savedefault = ((NULL != sdval) && (grub_strcmp(sdval, "true") == 0));
|
||||
+ src = grub_xasprintf ("%sload_video\n"
|
||||
+ "set gfxpayload=keep\n"
|
||||
+ "insmod gzio\n"
|
||||
+ "linux %s%s%s%s\n"
|
||||
+ "%s",
|
||||
+ "%s%s",
|
||||
+ savedefault ? "savedefault\n" : "",
|
||||
+ GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "",
|
||||
+ initrd ? initrd : "");
|
||||
+ initrd ? initrd : "", dt ? dt : "");
|
||||
+
|
||||
+ grub_normal_add_menu_entry (argc, argv, classes, id, users, hotkey, NULL, src, 0, &index, entry);
|
||||
+ grub_dprintf ("blscfg", "Added entry %d id:\"%s\"\n", index, id);
|
||||
+
|
||||
+finish:
|
||||
+ grub_free (dt);
|
||||
+ grub_free (initrd);
|
||||
+ grub_free (initrd_prefix);
|
||||
+ grub_free (early_initrds);
|
||||
+ grub_free (devicetree);
|
||||
+ grub_free (initrds);
|
||||
+ grub_free (options);
|
||||
+ grub_free (classes);
|
||||
@ -1009,14 +1092,12 @@ index 00000000000..54458b14518
|
||||
+ if (!devid) {
|
||||
+#ifdef GRUB_MACHINE_EMU
|
||||
+ devid = "host";
|
||||
+#elif defined(GRUB_MACHINE_EFI)
|
||||
+ devid = grub_env_get ("root");
|
||||
+#else
|
||||
+ devid = grub_env_get ("boot");
|
||||
+ devid = grub_env_get ("root");
|
||||
+#endif
|
||||
+ if (!devid)
|
||||
+ return grub_error (GRUB_ERR_FILE_NOT_FOUND,
|
||||
+ N_("variable `%s' isn't set"), "boot");
|
||||
+ N_("variable `%s' isn't set"), "root");
|
||||
+ }
|
||||
+
|
||||
+ grub_dprintf ("blscfg", "opening %s\n", devid);
|
||||
@ -1159,10 +1240,10 @@ index 00000000000..54458b14518
|
||||
+ grub_unregister_extcmd (oldcmd);
|
||||
+}
|
||||
diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
|
||||
index db7a8f00273..891eac5a33f 100644
|
||||
index cc5971f4dbd..782761c31aa 100644
|
||||
--- a/grub-core/commands/legacycfg.c
|
||||
+++ b/grub-core/commands/legacycfg.c
|
||||
@@ -133,7 +133,7 @@ legacy_file (const char *filename)
|
||||
@@ -143,7 +143,7 @@ legacy_file (const char *filename)
|
||||
args[0] = oldname;
|
||||
grub_normal_add_menu_entry (1, args, NULL, NULL, "legacy",
|
||||
NULL, NULL,
|
||||
@ -1171,7 +1252,7 @@ index db7a8f00273..891eac5a33f 100644
|
||||
grub_free (args);
|
||||
entrysrc[0] = 0;
|
||||
grub_free (oldname);
|
||||
@@ -186,7 +186,8 @@ legacy_file (const char *filename)
|
||||
@@ -205,7 +205,8 @@ legacy_file (const char *filename)
|
||||
}
|
||||
args[0] = entryname;
|
||||
grub_normal_add_menu_entry (1, args, NULL, NULL, NULL,
|
||||
@ -1277,7 +1358,7 @@ index 3fd664aac33..163b9a09042 100644
|
||||
grub_cmd_load_env (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
{
|
||||
diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
|
||||
index 2c5363da7f5..9faf2be0f64 100644
|
||||
index 720e6d8ea3b..b194123eb67 100644
|
||||
--- a/grub-core/commands/menuentry.c
|
||||
+++ b/grub-core/commands/menuentry.c
|
||||
@@ -78,7 +78,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
|
||||
@ -1301,7 +1382,7 @@ index 2c5363da7f5..9faf2be0f64 100644
|
||||
+ grub_dprintf ("menu", "menu_id:\"%s\"\n", menu_id);
|
||||
|
||||
/* Save argc, args to pass as parameters to block arg later. */
|
||||
menu_args = grub_malloc (sizeof (char*) * (argc + 1));
|
||||
menu_args = grub_calloc (argc + 1, sizeof (char *));
|
||||
@@ -170,8 +173,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
|
||||
}
|
||||
|
||||
@ -1349,11 +1430,11 @@ index 2c5363da7f5..9faf2be0f64 100644
|
||||
src[len - 1] = ch;
|
||||
args[argc - 1] = src;
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 9ef98481f70..a326b192c89 100644
|
||||
index 62571e6dfcc..7ca2e5400b1 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -20,6 +20,7 @@
|
||||
#include <grub/kernel.h>
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <grub/net.h>
|
||||
#include <grub/normal.h>
|
||||
#include <grub/dl.h>
|
||||
+#include <grub/menu.h>
|
||||
@ -1472,11 +1553,11 @@ index 00000000000..952f46121bd
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/include/grub/compiler.h b/include/grub/compiler.h
|
||||
index c9e1d7a73dc..9859ff4cc79 100644
|
||||
index 8f3be3ae706..ebafec68957 100644
|
||||
--- a/include/grub/compiler.h
|
||||
+++ b/include/grub/compiler.h
|
||||
@@ -48,4 +48,6 @@
|
||||
# define WARN_UNUSED_RESULT
|
||||
@@ -56,4 +56,6 @@
|
||||
# define CLANG_PREREQ(maj,min) 0
|
||||
#endif
|
||||
|
||||
+#define UNUSED __attribute__((__unused__))
|
@ -20,10 +20,10 @@ Signed-off-by: David A. Marlin <dmarlin@redhat.com>
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 9ecbcfb5b43..c645351dd2a 100644
|
||||
index f8cbb8d7a2b..91d761bae80 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -254,7 +254,8 @@ export GRUB_DEFAULT \
|
||||
@@ -251,7 +251,8 @@ export GRUB_DEFAULT \
|
||||
GRUB_ENABLE_CRYPTODISK \
|
||||
GRUB_BADRAM \
|
||||
GRUB_OS_PROBER_SKIP_LIST \
|
||||
@ -34,7 +34,7 @@ index 9ecbcfb5b43..c645351dd2a 100644
|
||||
if test "x${grub_cfg}" != "x"; then
|
||||
rm -f "${grub_cfg}.new"
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 58defdbd83f..dd3128440c4 100644
|
||||
index e8b01c0d0c7..dc75a1c30bf 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -153,6 +153,13 @@ EOF
|
@ -1,140 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Mon, 8 Jul 2019 14:10:58 +0200
|
||||
Subject: [PATCH] DHCP client ID and UUID options added.
|
||||
|
||||
---
|
||||
grub-core/net/bootp.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++-----
|
||||
include/grub/net.h | 2 ++
|
||||
2 files changed, 79 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
|
||||
index 04cfbb04504..0e6e41a1699 100644
|
||||
--- a/grub-core/net/bootp.c
|
||||
+++ b/grub-core/net/bootp.c
|
||||
@@ -95,6 +95,49 @@ enum
|
||||
/* Max timeout when waiting for BOOTP/DHCP reply */
|
||||
#define GRUB_DHCP_MAX_PACKET_TIMEOUT 32
|
||||
|
||||
+static char *
|
||||
+grub_env_write_readonly (struct grub_env_var *var __attribute__ ((unused)),
|
||||
+ const char *val __attribute__ ((unused)))
|
||||
+{
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+set_env_limn_ro (const char *intername, const char *suffix,
|
||||
+ const char *value, grub_size_t len)
|
||||
+{
|
||||
+ char *varname, *varvalue;
|
||||
+ char *ptr;
|
||||
+ varname = grub_xasprintf ("net_%s_%s", intername, suffix);
|
||||
+ if (!varname)
|
||||
+ return;
|
||||
+ for (ptr = varname; *ptr; ptr++)
|
||||
+ if (*ptr == ':')
|
||||
+ *ptr = '_';
|
||||
+ varvalue = grub_malloc (len + 1);
|
||||
+ if (!varvalue)
|
||||
+ {
|
||||
+ grub_free (varname);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ grub_memcpy (varvalue, value, len);
|
||||
+ varvalue[len] = 0;
|
||||
+ grub_env_set (varname, varvalue);
|
||||
+ grub_register_variable_hook (varname, 0, grub_env_write_readonly);
|
||||
+ grub_env_export (varname);
|
||||
+ grub_free (varname);
|
||||
+ grub_free (varvalue);
|
||||
+}
|
||||
+
|
||||
+static char
|
||||
+hexdigit (grub_uint8_t val)
|
||||
+{
|
||||
+ if (val < 10)
|
||||
+ return val + '0';
|
||||
+ return val + 'a' - 10;
|
||||
+}
|
||||
+
|
||||
static const void *
|
||||
find_dhcp_option (const struct grub_net_bootp_packet *bp, grub_size_t size,
|
||||
grub_uint8_t opt_code, grub_uint8_t *opt_len)
|
||||
@@ -152,6 +195,9 @@ again:
|
||||
if (i + taglength >= size)
|
||||
return NULL;
|
||||
|
||||
+ grub_dprintf("net", "DHCP option %u (0x%02x) found with length %u.\n",
|
||||
+ tagtype, tagtype, taglength);
|
||||
+
|
||||
/* FIXME RFC 3396 options concatentation */
|
||||
if (tagtype == opt_code)
|
||||
{
|
||||
@@ -354,6 +400,37 @@ grub_net_configure_by_dhcp_ack (const char *name,
|
||||
}
|
||||
grub_net_add_ipv4_local (inter, mask);
|
||||
|
||||
+ opt = find_dhcp_option (bp, size, GRUB_NET_BOOTP_CLIENT_ID, &opt_len);
|
||||
+ if (opt)
|
||||
+ {
|
||||
+ set_env_limn_ro (name, "clientid", (char *) opt, opt_len);
|
||||
+ }
|
||||
+
|
||||
+ opt = find_dhcp_option (bp, size, GRUB_NET_BOOTP_CLIENT_UUID, &opt_len);
|
||||
+ if (opt && opt_len == 17)
|
||||
+ {
|
||||
+ /* The format is 9cfe245e-d0c8-bd45-a79f-54ea5fbd3d97 */
|
||||
+
|
||||
+ opt += 1;
|
||||
+ opt_len -= 1;
|
||||
+
|
||||
+ char *val = grub_malloc (2 * opt_len + 4 + 1);
|
||||
+ int i = 0;
|
||||
+ int j = 0;
|
||||
+ for (i = 0; i < opt_len; i++)
|
||||
+ {
|
||||
+ val[2 * i + j] = hexdigit (opt[i] >> 4);
|
||||
+ val[2 * i + 1 + j] = hexdigit (opt[i] & 0xf);
|
||||
+
|
||||
+ if ((i == 3) || (i == 5) || (i == 7) || (i == 9))
|
||||
+ {
|
||||
+ j++;
|
||||
+ val[2 * i + 1+ j] = '-';
|
||||
+ }
|
||||
+ }
|
||||
+ set_env_limn_ro (name, "clientuuid", (char *) val, 2 * opt_len + 4);
|
||||
+ }
|
||||
+
|
||||
/* We do not implement dead gateway detection and the first entry SHOULD
|
||||
be preferred one */
|
||||
opt = find_dhcp_option (bp, size, GRUB_NET_BOOTP_ROUTER, &opt_len);
|
||||
@@ -631,14 +708,6 @@ grub_net_process_dhcp (struct grub_net_buff *nb,
|
||||
}
|
||||
}
|
||||
|
||||
-static char
|
||||
-hexdigit (grub_uint8_t val)
|
||||
-{
|
||||
- if (val < 10)
|
||||
- return val + '0';
|
||||
- return val + 'a' - 10;
|
||||
-}
|
||||
-
|
||||
static grub_err_t
|
||||
grub_cmd_dhcpopt (struct grub_command *cmd __attribute__ ((unused)),
|
||||
int argc, char **args)
|
||||
diff --git a/include/grub/net.h b/include/grub/net.h
|
||||
index 4a9069a1474..556c54e579f 100644
|
||||
--- a/include/grub/net.h
|
||||
+++ b/include/grub/net.h
|
||||
@@ -462,6 +462,8 @@ enum
|
||||
GRUB_NET_BOOTP_DOMAIN = 0x0f,
|
||||
GRUB_NET_BOOTP_ROOT_PATH = 0x11,
|
||||
GRUB_NET_BOOTP_EXTENSIONS_PATH = 0x12,
|
||||
+ GRUB_NET_BOOTP_CLIENT_ID = 0x3d,
|
||||
+ GRUB_NET_BOOTP_CLIENT_UUID = 0x61,
|
||||
GRUB_NET_DHCP_REQUESTED_IP_ADDRESS = 50,
|
||||
GRUB_NET_DHCP_OVERLOAD = 52,
|
||||
GRUB_NET_DHCP_MESSAGE_TYPE = 53,
|
@ -97,10 +97,10 @@ index 4d02e62c109..84d520cd494 100644
|
||||
grub_register_variable_hook ("locale_dir", NULL, read_main);
|
||||
grub_register_variable_hook ("secondary_locale_dir", NULL, read_secondary);
|
||||
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
|
||||
index 8ab7794c47b..da47b18b50e 100644
|
||||
index d1de9fa6873..48058d983ce 100644
|
||||
--- a/grub-core/kern/main.c
|
||||
+++ b/grub-core/kern/main.c
|
||||
@@ -268,11 +268,6 @@ grub_main (void)
|
||||
@@ -269,11 +269,6 @@ grub_main (void)
|
||||
|
||||
grub_boot_time ("After machine init.");
|
||||
|
||||
@ -109,9 +109,9 @@ index 8ab7794c47b..da47b18b50e 100644
|
||||
- grub_printf ("Welcome to GRUB!\n\n");
|
||||
- grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);
|
||||
-
|
||||
grub_load_config ();
|
||||
/* Init verifiers API. */
|
||||
grub_verifiers_init ();
|
||||
|
||||
grub_boot_time ("Before loading embedded modules.");
|
||||
diff --git a/grub-core/boot/i386/pc/boot.S b/grub-core/boot/i386/pc/boot.S
|
||||
index 2bd0b2d2866..ea167fe1206 100644
|
||||
--- a/grub-core/boot/i386/pc/boot.S
|
||||
@ -143,7 +143,7 @@ index c1addc0df29..68d31de0c4c 100644
|
||||
movw $LOCAL(firstlist), %di
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index dd3128440c4..ceb413fc2e3 100644
|
||||
index dc75a1c30bf..ad2ac4b078d 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -138,27 +138,20 @@ linux_entry ()
|
@ -1,38 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Prarit Bhargava <prarit@redhat.com>
|
||||
Date: Wed, 12 Mar 2014 10:58:16 -0400
|
||||
Subject: [PATCH] Fix bad test on GRUB_DISABLE_SUBMENU.
|
||||
|
||||
The file /etc/grub.d/10_linux does
|
||||
|
||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
||||
|
||||
when it should do
|
||||
|
||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||
|
||||
which results in submenus in /boot/grub2/grub.cfg when
|
||||
GRUB_DISABLE_SUBMENU="yes".
|
||||
|
||||
Resolves: rhbz#1063414
|
||||
---
|
||||
util/grub.d/10_linux.in | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 4532266be68..58defdbd83f 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -261,7 +261,11 @@ while [ "x$list" != "x" ] ; do
|
||||
fi
|
||||
fi
|
||||
|
||||
- if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
||||
+ if [ "x${GRUB_DISABLE_SUBMENU}" = "xyes" ] || [ "x${GRUB_DISABLE_SUBMENU}" = "xy" ]; then
|
||||
+ GRUB_DISABLE_SUBMENU="true"
|
||||
+ fi
|
||||
+
|
||||
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||
linux_entry "${OS}" "${version}" simple \
|
||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||
|
@ -1,46 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
||||
Date: Wed, 12 Jun 2013 11:51:49 -0400
|
||||
Subject: [PATCH] Add support for UEFI operating systems returned by os-prober
|
||||
|
||||
os-prober returns UEFI operating systems in the form:
|
||||
|
||||
path:long-name:name
|
||||
|
||||
where path is the path under the EFI directory on the ESP. This is in
|
||||
contrast to legacy OSes, where path is the device string. Handle this case.
|
||||
---
|
||||
util/grub.d/30_os-prober.in | 21 ++++++++++++++++++---
|
||||
1 file changed, 18 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
|
||||
index 515a68c7aa0..9b8f5968e2d 100644
|
||||
--- a/util/grub.d/30_os-prober.in
|
||||
+++ b/util/grub.d/30_os-prober.in
|
||||
@@ -328,8 +328,23 @@ EOF
|
||||
EOF
|
||||
;;
|
||||
*)
|
||||
- # TRANSLATORS: %s is replaced by OS name.
|
||||
- gettext_printf "%s is not yet supported by grub-mkconfig.\n" " ${LONGNAME}" >&2
|
||||
- ;;
|
||||
+ case ${DEVICE} in
|
||||
+ *.efi)
|
||||
+ cat << EOF
|
||||
+menuentry '$(echo "${LONGNAME}" | grub_quote)' {
|
||||
+EOF
|
||||
+ save_default_entry | grub_add_tab
|
||||
+ cat << EOF
|
||||
+ chainloader /EFI/${DEVICE}
|
||||
+ boot
|
||||
+}
|
||||
+EOF
|
||||
+ ;;
|
||||
+ *)
|
||||
+ echo -n " "
|
||||
+ # TRANSLATORS: %s is replaced by OS name.
|
||||
+ gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2
|
||||
+ ;;
|
||||
+ esac
|
||||
esac
|
||||
done
|
@ -9,7 +9,7 @@ No one cares.
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index a326b192c89..09d0dfe76f1 100644
|
||||
index 7ca2e5400b1..5d5f7b539f5 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -208,15 +208,16 @@ read_config_file (const char *config)
|
@ -9,7 +9,7 @@ It is already highlighted.
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index e22bb91f6e8..a3d1f23f68f 100644
|
||||
index 18240e76cea..65deafda531 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -242,7 +242,7 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,
|
@ -9,7 +9,7 @@ Make use of terminology consistent. Remove jargon.
|
||||
1 file changed, 9 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index a3d1f23f68f..64a83862f66 100644
|
||||
index 65deafda531..cc5837ed2b8 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -157,9 +157,8 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run)
|
@ -8,7 +8,7 @@ Subject: [PATCH] Fix border spacing now that we aren't displaying it
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 64a83862f66..1062d64ee29 100644
|
||||
index cc5837ed2b8..b49835a9af7 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -331,12 +331,12 @@ grub_menu_init_page (int nested, int edit,
|
@ -1,55 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Tue, 27 Nov 2012 16:58:39 -0200
|
||||
Subject: [PATCH] Add %X option to printf functions.
|
||||
|
||||
---
|
||||
grub-core/kern/misc.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index cd63a8cea73..2656a670e09 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -588,7 +588,7 @@ grub_divmod64 (grub_uint64_t n, grub_uint64_t d, grub_uint64_t *r)
|
||||
static inline char *
|
||||
grub_lltoa (char *str, int c, unsigned long long n)
|
||||
{
|
||||
- unsigned base = (c == 'x') ? 16 : 10;
|
||||
+ unsigned base = ((c == 'x') || (c == 'X')) ? 16 : 10;
|
||||
char *p;
|
||||
|
||||
if ((long long) n < 0 && c == 'd')
|
||||
@@ -603,7 +603,7 @@ grub_lltoa (char *str, int c, unsigned long long n)
|
||||
do
|
||||
{
|
||||
unsigned d = (unsigned) (n & 0xf);
|
||||
- *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
|
||||
+ *p++ = (d > 9) ? d + ((c == 'x') ? 'a' : 'A') - 10 : d + '0';
|
||||
}
|
||||
while (n >>= 4);
|
||||
else
|
||||
@@ -676,6 +676,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,
|
||||
{
|
||||
case 'p':
|
||||
case 'x':
|
||||
+ case 'X':
|
||||
case 'u':
|
||||
case 'd':
|
||||
case 'c':
|
||||
@@ -762,6 +763,7 @@ parse_printf_args (const char *fmt0, struct printf_args *args,
|
||||
switch (c)
|
||||
{
|
||||
case 'x':
|
||||
+ case 'X':
|
||||
case 'u':
|
||||
args->ptr[curn].type = UNSIGNED_INT + longfmt;
|
||||
break;
|
||||
@@ -900,6 +902,7 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0,
|
||||
c = 'x';
|
||||
/* Fall through. */
|
||||
case 'x':
|
||||
+ case 'X':
|
||||
case 'u':
|
||||
case 'd':
|
||||
{
|
@ -9,10 +9,10 @@ That is consistent with the menu help text
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 09d0dfe76f1..7f61c5b618b 100644
|
||||
index 5d5f7b539f5..ec1cd257397 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -432,8 +432,8 @@ grub_normal_reader_init (int nested)
|
||||
@@ -440,8 +440,8 @@ grub_normal_reader_init (int nested)
|
||||
grub_normal_init_page (term, 1);
|
||||
grub_term_setcursor (term, 1);
|
||||
|
@ -8,7 +8,7 @@ Subject: [PATCH] Indent menu entries
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 1062d64ee29..ecc60f99fc3 100644
|
||||
index b49835a9af7..6a57376fa80 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -239,7 +239,8 @@ print_entry (int y, int highlight, grub_menu_entry_t entry,
|
@ -1,200 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Tue, 27 Nov 2012 17:22:07 -0200
|
||||
Subject: [PATCH] Search for specific config file for netboot
|
||||
|
||||
This patch implements a search for a specific configuration when the config
|
||||
file is on a remoteserver. It uses the following order:
|
||||
1) DHCP client UUID option.
|
||||
2) MAC address (in lower case hexadecimal with dash separators);
|
||||
3) IP (in upper case hexadecimal) or IPv6;
|
||||
4) The original grub.cfg file.
|
||||
|
||||
This procedure is similar to what is used by pxelinux and yaboot:
|
||||
http://www.syslinux.org/wiki/index.php/PXELINUX#config
|
||||
|
||||
This should close the bugzilla:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=873406
|
||||
---
|
||||
grub-core/net/net.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/normal/main.c | 18 ++++++--
|
||||
include/grub/net.h | 3 ++
|
||||
3 files changed, 135 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/net.c b/grub-core/net/net.c
|
||||
index d5d726a315e..06454564b8f 100644
|
||||
--- a/grub-core/net/net.c
|
||||
+++ b/grub-core/net/net.c
|
||||
@@ -1735,6 +1735,124 @@ grub_net_restore_hw (void)
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
+grub_err_t
|
||||
+grub_net_search_configfile (char *config)
|
||||
+{
|
||||
+ grub_size_t config_len;
|
||||
+ char *suffix;
|
||||
+
|
||||
+ auto int search_through (grub_size_t num_tries, grub_size_t slice_size);
|
||||
+ int search_through (grub_size_t num_tries, grub_size_t slice_size)
|
||||
+ {
|
||||
+ while (num_tries-- > 0)
|
||||
+ {
|
||||
+ grub_dprintf ("net", "probe %s\n", config);
|
||||
+
|
||||
+ grub_file_t file;
|
||||
+ file = grub_file_open (config, GRUB_FILE_TYPE_CONFIG);
|
||||
+
|
||||
+ if (file)
|
||||
+ {
|
||||
+ grub_file_close (file);
|
||||
+ grub_dprintf ("net", "found!\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (grub_errno == GRUB_ERR_IO)
|
||||
+ grub_errno = GRUB_ERR_NONE;
|
||||
+ }
|
||||
+
|
||||
+ if (grub_strlen (suffix) < slice_size)
|
||||
+ break;
|
||||
+
|
||||
+ config[grub_strlen (config) - slice_size] = '\0';
|
||||
+ }
|
||||
+
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ config_len = grub_strlen (config);
|
||||
+ config[config_len] = '-';
|
||||
+ suffix = config + config_len + 1;
|
||||
+
|
||||
+ struct grub_net_network_level_interface *inf;
|
||||
+ FOR_NET_NETWORK_LEVEL_INTERFACES (inf)
|
||||
+ {
|
||||
+ /* By the Client UUID. */
|
||||
+
|
||||
+ char client_uuid_var[sizeof ("net_") + grub_strlen (inf->name) +
|
||||
+ sizeof ("_clientuuid") + 1];
|
||||
+ grub_snprintf (client_uuid_var, sizeof (client_uuid_var),
|
||||
+ "net_%s_clientuuid", inf->name);
|
||||
+
|
||||
+ const char *client_uuid;
|
||||
+ client_uuid = grub_env_get (client_uuid_var);
|
||||
+
|
||||
+ if (client_uuid)
|
||||
+ {
|
||||
+ grub_strcpy (suffix, client_uuid);
|
||||
+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE;
|
||||
+ }
|
||||
+
|
||||
+ /* By the MAC address. */
|
||||
+
|
||||
+ /* Add ethernet type */
|
||||
+ grub_strcpy (suffix, "01-");
|
||||
+
|
||||
+ grub_net_hwaddr_to_str (&inf->hwaddress, suffix + 3);
|
||||
+
|
||||
+ char *ptr;
|
||||
+ for (ptr = suffix; *ptr; ptr++)
|
||||
+ if (*ptr == ':')
|
||||
+ *ptr = '-';
|
||||
+
|
||||
+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE;
|
||||
+
|
||||
+ /* By IP address */
|
||||
+
|
||||
+ switch ((&inf->address)->type)
|
||||
+ {
|
||||
+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV4:
|
||||
+ {
|
||||
+ grub_uint32_t n = grub_be_to_cpu32 ((&inf->address)->ipv4);
|
||||
+ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%02X%02X%02X%02X", \
|
||||
+ ((n >> 24) & 0xff), ((n >> 16) & 0xff), \
|
||||
+ ((n >> 8) & 0xff), ((n >> 0) & 0xff));
|
||||
+
|
||||
+ if (search_through (8, 1) == 0) return GRUB_ERR_NONE;
|
||||
+ break;
|
||||
+ }
|
||||
+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6:
|
||||
+ {
|
||||
+ char buf[GRUB_NET_MAX_STR_ADDR_LEN];
|
||||
+ struct grub_net_network_level_address base;
|
||||
+ base.type = GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6;
|
||||
+ grub_memcpy (&base.ipv6, ((&inf->address)->ipv6), 16);
|
||||
+ grub_net_addr_to_str (&base, buf);
|
||||
+
|
||||
+ for (ptr = buf; *ptr; ptr++)
|
||||
+ if (*ptr == ':')
|
||||
+ *ptr = '-';
|
||||
+
|
||||
+ grub_snprintf (suffix, GRUB_NET_MAX_STR_ADDR_LEN, "%s", buf);
|
||||
+ if (search_through (1, 0) == 0) return GRUB_ERR_NONE;
|
||||
+ break;
|
||||
+ }
|
||||
+ case GRUB_NET_NETWORK_LEVEL_PROTOCOL_DHCP_RECV:
|
||||
+ return grub_error (GRUB_ERR_BUG, "shouldn't reach here");
|
||||
+ default:
|
||||
+ return grub_error (GRUB_ERR_BUG,
|
||||
+ "unsupported address type %d", (&inf->address)->type);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Remove the remaining minus sign at the end. */
|
||||
+ config[config_len] = '\0';
|
||||
+
|
||||
+ return GRUB_ERR_NONE;
|
||||
+}
|
||||
+
|
||||
static struct grub_preboot *fini_hnd;
|
||||
|
||||
static grub_command_t cmd_addaddr, cmd_deladdr, cmd_addroute, cmd_delroute;
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 394bfbea868..9ef98481f70 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <grub/charset.h>
|
||||
#include <grub/script_sh.h>
|
||||
#include <grub/bufio.h>
|
||||
+#include <grub/net.h>
|
||||
#ifdef GRUB_MACHINE_IEEE1275
|
||||
#include <grub/ieee1275/ieee1275.h>
|
||||
#endif
|
||||
@@ -365,10 +366,19 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
|
||||
|
||||
prefix = grub_env_get ("prefix");
|
||||
if (prefix)
|
||||
- {
|
||||
- config = grub_xasprintf ("%s/grub.cfg", prefix);
|
||||
- if (! config)
|
||||
- goto quit;
|
||||
+ {
|
||||
+ grub_size_t config_len;
|
||||
+ config_len = grub_strlen (prefix) +
|
||||
+ sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
|
||||
+ config = grub_malloc (config_len);
|
||||
+
|
||||
+ if (! config)
|
||||
+ goto quit;
|
||||
+
|
||||
+ grub_snprintf (config, config_len, "%s/grub.cfg", prefix);
|
||||
+
|
||||
+ if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
|
||||
+ grub_net_search_configfile (config);
|
||||
|
||||
grub_enter_normal_mode (config);
|
||||
grub_free (config);
|
||||
diff --git a/include/grub/net.h b/include/grub/net.h
|
||||
index 556c54e579f..ff6d347f7da 100644
|
||||
--- a/include/grub/net.h
|
||||
+++ b/include/grub/net.h
|
||||
@@ -578,4 +578,7 @@ extern char *grub_net_default_server;
|
||||
|
||||
#define VLANTAG_IDENTIFIER 0x8100
|
||||
|
||||
+grub_err_t
|
||||
+grub_net_search_configfile (char *config);
|
||||
+
|
||||
#endif /* ! GRUB_NET_HEADER */
|
@ -8,7 +8,7 @@ Subject: [PATCH] Fix margins
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index ecc60f99fc3..0e43f2c10cc 100644
|
||||
index 6a57376fa80..cbd62f714cb 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -333,17 +333,15 @@ grub_menu_init_page (int nested, int edit,
|
@ -10,7 +10,7 @@ Signed-off-by: Peter Jones <grub2-owner@fedoraproject.org>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 0e43f2c10cc..537d4bf86ff 100644
|
||||
index cbd62f714cb..26e9e82042a 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -334,7 +334,7 @@ grub_menu_init_page (int nested, int edit,
|
@ -10,7 +10,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 537d4bf86ff..452d55bf9ff 100644
|
||||
index 26e9e82042a..4895ffe7d1d 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -157,7 +157,7 @@ print_message (int nested, int edit, struct grub_term_output *term, int dry_run)
|
@ -9,7 +9,7 @@ Subject: [PATCH] Don't say "GNU/Linux" in generated menus.
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index ceb413fc2e3..2b402d85a52 100644
|
||||
index ad2ac4b078d..4fc58c83304 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@"
|
||||
@ -25,7 +25,7 @@ index ceb413fc2e3..2b402d85a52 100644
|
||||
fi
|
||||
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 96179ea613c..47e0d3f5cd6 100644
|
||||
index 3b1f4704921..ada20775a14 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -29,9 +29,9 @@ export TEXTDOMAINDIR="@localedir@"
|
@ -9,7 +9,7 @@ It looks cleaner without it.
|
||||
1 file changed, 43 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 452d55bf9ff..1ed2bd92cf8 100644
|
||||
index 4895ffe7d1d..e72ed438ba3 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -108,47 +108,6 @@ grub_print_message_indented (const char *msg, int margin_left, int margin_right,
|
@ -9,7 +9,7 @@ So that it aligns with the other messages
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu_text.c b/grub-core/normal/menu_text.c
|
||||
index 1ed2bd92cf8..7681f7d2893 100644
|
||||
index e72ed438ba3..ca135624356 100644
|
||||
--- a/grub-core/normal/menu_text.c
|
||||
+++ b/grub-core/normal/menu_text.c
|
||||
@@ -372,7 +372,7 @@ grub_menu_init_page (int nested, int edit,
|
@ -8,7 +8,7 @@ Subject: [PATCH] Add .eh_frame to list of relocations stripped
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/conf/Makefile.common b/conf/Makefile.common
|
||||
index 6cd71cbb2ab..4ba729e14d8 100644
|
||||
index 2a1a886f6d5..191b1a70c6b 100644
|
||||
--- a/conf/Makefile.common
|
||||
+++ b/conf/Makefile.common
|
||||
@@ -38,7 +38,7 @@ CFLAGS_KERNEL = $(CFLAGS_PLATFORM) -ffreestanding
|
@ -14,7 +14,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 2b402d85a52..d35b0f406bc 100644
|
||||
index 4fc58c83304..635d2fe0cd3 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -26,7 +26,7 @@ datarootdir="@datarootdir@"
|
@ -14,10 +14,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/menu.c b/grub-core/normal/menu.c
|
||||
index 9175ad297d8..783bde55b9e 100644
|
||||
index d7a222e681b..37d753d8081 100644
|
||||
--- a/grub-core/normal/menu.c
|
||||
+++ b/grub-core/normal/menu.c
|
||||
@@ -839,12 +839,14 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
|
||||
@@ -838,12 +838,14 @@ run_menu (grub_menu_t menu, int nested, int *auto_boot)
|
||||
|
||||
/* Callback invoked immediately before a menu entry is executed. */
|
||||
static void
|
||||
@ -34,10 +34,10 @@ index 9175ad297d8..783bde55b9e 100644
|
||||
|
||||
/* Callback invoked when a default menu entry executed because of a timeout
|
||||
diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
|
||||
index cdf3590a364..5785f67ee1c 100644
|
||||
index 50eef918cf6..de64a367c4e 100644
|
||||
--- a/grub-core/normal/menu_entry.c
|
||||
+++ b/grub-core/normal/menu_entry.c
|
||||
@@ -1167,9 +1167,6 @@ run (struct screen *screen)
|
||||
@@ -1176,9 +1176,6 @@ run (struct screen *screen)
|
||||
char *dummy[1] = { NULL };
|
||||
|
||||
grub_cls ();
|
@ -122,10 +122,10 @@ Replace a bunch of machine generated ones with ones that look nicer.
|
||||
create mode 100644 util/grub-sparc64-setup.8
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index d283af64c8c..8df400e0a8b 100644
|
||||
index c0103b30d4e..b8c4d52dfd1 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -74,6 +74,29 @@ grub_TRANSFORM([grub-set-default])
|
||||
@@ -77,6 +77,29 @@ grub_TRANSFORM([grub-set-default])
|
||||
grub_TRANSFORM([grub-sparc64-setup])
|
||||
grub_TRANSFORM([grub-render-label])
|
||||
grub_TRANSFORM([grub-file])
|
||||
@ -156,7 +156,7 @@ index d283af64c8c..8df400e0a8b 100644
|
||||
# Optimization flag. Allow user to override.
|
||||
if test "x$TARGET_CFLAGS" = x; then
|
||||
diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
|
||||
index 46c4e95e2fa..58d7d9540be 100644
|
||||
index 8f1485d52a5..b909f2c073a 100644
|
||||
--- a/conf/Makefile.extra-dist
|
||||
+++ b/conf/Makefile.extra-dist
|
||||
@@ -11,7 +11,6 @@ EXTRA_DIST += unicode
|
||||
@ -498,7 +498,7 @@ index ad25c8ab753..00000000000
|
||||
-[SEE ALSO]
|
||||
-.BR grub-menulst2cfg (8)
|
||||
diff --git a/gentpl.py b/gentpl.py
|
||||
index 387588c0589..f05812eace3 100644
|
||||
index c86550d4f9e..2cba0bbbd6f 100644
|
||||
--- a/gentpl.py
|
||||
+++ b/gentpl.py
|
||||
@@ -805,10 +805,7 @@ def manpage(defn, adddeps):
|
@ -17,7 +17,7 @@ Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 7f61c5b618b..8add30e605f 100644
|
||||
index ec1cd257397..d85f7598d23 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -349,7 +349,7 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
|
@ -5,14 +5,14 @@ Subject: [PATCH] Try mac/guid/etc before grub.cfg on tftp config files.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/normal/main.c | 84 ++++++++++++++++++++++++++-----------------------
|
||||
1 file changed, 45 insertions(+), 39 deletions(-)
|
||||
grub-core/normal/main.c | 97 ++++++++++++++++++++++++++-----------------------
|
||||
1 file changed, 51 insertions(+), 46 deletions(-)
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 8add30e605f..d93bee613ac 100644
|
||||
index d85f7598d23..1e509fceb91 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -347,53 +347,59 @@ grub_cmd_normal (struct grub_command *cmd __attribute__ ((unused)),
|
||||
@@ -347,61 +347,66 @@ 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;
|
||||
@ -41,25 +41,39 @@ index 8add30e605f..d93bee613ac 100644
|
||||
- }
|
||||
- }
|
||||
+ const char *prefix;
|
||||
+ const char *net_search_cfg;
|
||||
+ int disable_net_search = 0;
|
||||
|
||||
+ prefix = grub_env_get ("fw_path");
|
||||
if (! prefix)
|
||||
prefix = grub_env_get ("prefix");
|
||||
+
|
||||
+ net_search_cfg = grub_env_get ("feature_net_search_cfg");
|
||||
+ if (net_search_cfg && net_search_cfg[0] == 'n')
|
||||
+ disable_net_search = 1;
|
||||
+
|
||||
if (prefix)
|
||||
{
|
||||
- grub_size_t config_len;
|
||||
- int disable_net_search = 0;
|
||||
- const char *net_search_cfg;
|
||||
-
|
||||
- config_len = grub_strlen (prefix) +
|
||||
- sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
|
||||
- sizeof ("/grub.cfg-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");
|
||||
- config = grub_malloc (config_len);
|
||||
-
|
||||
- if (! config)
|
||||
- if (!config)
|
||||
- goto quit;
|
||||
-
|
||||
- grub_snprintf (config, config_len, "%s/grub.cfg", prefix);
|
||||
-
|
||||
if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
|
||||
- grub_net_search_configfile (config);
|
||||
- net_search_cfg = grub_env_get ("feature_net_search_cfg");
|
||||
- if (net_search_cfg && net_search_cfg[0] == 'n')
|
||||
- disable_net_search = 1;
|
||||
-
|
||||
if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0 &&
|
||||
!disable_net_search)
|
||||
- grub_net_search_config_file (config);
|
||||
+ {
|
||||
+ grub_size_t config_len;
|
||||
+ config_len = grub_strlen (prefix) +
|
@ -14,7 +14,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index d35b0f406bc..d12d2d784dc 100644
|
||||
index 635d2fe0cd3..fed73271478 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -29,7 +29,8 @@ export TEXTDOMAINDIR="@localedir@"
|
@ -10,10 +10,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 1001a12232b..1a4a57898f9 100644
|
||||
index 301d1ac229a..0f6505bf3b6 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -249,6 +249,14 @@ version_test_gt ()
|
||||
@@ -253,6 +253,14 @@ version_test_gt ()
|
||||
*.old:*.old) ;;
|
||||
*.old:*) version_test_gt_a="`echo "$version_test_gt_a" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=gt ;;
|
||||
*:*.old) version_test_gt_b="`echo "$version_test_gt_b" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=ge ;;
|
@ -7,10 +7,10 @@ Related: rhbz#1148652
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/init.c | 28 +++++-----
|
||||
grub-core/kern/ieee1275/init.c | 28 +++++----
|
||||
grub-core/net/net.c | 2 +-
|
||||
grub-core/normal/main.c | 120 ++++++++++++++++++++---------------------
|
||||
3 files changed, 75 insertions(+), 75 deletions(-)
|
||||
grub-core/normal/main.c | 134 ++++++++++++++++++++---------------------
|
||||
3 files changed, 82 insertions(+), 82 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||
index e71d1584164..0cd2a627231 100644
|
||||
@ -56,10 +56,10 @@ index e71d1584164..0cd2a627231 100644
|
||||
}
|
||||
|
||||
diff --git a/grub-core/net/net.c b/grub-core/net/net.c
|
||||
index 06454564b8f..4b7972b8e7e 100644
|
||||
index 4d3eb5c1a52..0ef148f4adc 100644
|
||||
--- a/grub-core/net/net.c
|
||||
+++ b/grub-core/net/net.c
|
||||
@@ -1850,7 +1850,7 @@ grub_net_search_configfile (char *config)
|
||||
@@ -1869,7 +1869,7 @@ grub_net_search_config_file (char *config)
|
||||
/* Remove the remaining minus sign at the end. */
|
||||
config[config_len] = '\0';
|
||||
|
||||
@ -69,10 +69,10 @@ index 06454564b8f..4b7972b8e7e 100644
|
||||
|
||||
static struct grub_preboot *fini_hnd;
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index d93bee613ac..2fe6743399d 100644
|
||||
index 1e509fceb91..d5968797f4f 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -337,74 +337,72 @@ grub_enter_normal_mode (const char *config)
|
||||
@@ -337,81 +337,79 @@ grub_enter_normal_mode (const char *config)
|
||||
grub_boot_time ("Exiting normal mode");
|
||||
}
|
||||
|
||||
@ -82,12 +82,19 @@ index d93bee613ac..2fe6743399d 100644
|
||||
+ char *config;
|
||||
+ const char *prefix;
|
||||
+ grub_err_t err = GRUB_ERR_FILE_NOT_FOUND;
|
||||
+ const char *net_search_cfg;
|
||||
+ int disable_net_search = 0;
|
||||
+
|
||||
+ prefix = grub_env_get (variable);
|
||||
+ if (!prefix)
|
||||
+ return GRUB_ERR_FILE_NOT_FOUND;
|
||||
+
|
||||
+ if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
|
||||
+ net_search_cfg = grub_env_get ("feature_net_search_cfg");
|
||||
+ if (net_search_cfg && net_search_cfg[0] == 'n')
|
||||
+ disable_net_search = 1;
|
||||
+
|
||||
+ if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0 &&
|
||||
+ !disable_net_search)
|
||||
+ {
|
||||
+ grub_size_t config_len;
|
||||
+ config_len = grub_strlen (prefix) +
|
||||
@ -98,7 +105,7 @@ index d93bee613ac..2fe6743399d 100644
|
||||
+ return GRUB_ERR_FILE_NOT_FOUND;
|
||||
+
|
||||
+ grub_snprintf (config, config_len, "%s/grub.cfg", prefix);
|
||||
+ err = grub_net_search_configfile (config);
|
||||
+ err = grub_net_search_config_file (config);
|
||||
+ }
|
||||
+
|
||||
+ if (err != GRUB_ERR_NONE)
|
||||
@ -135,14 +142,21 @@ index d93bee613ac..2fe6743399d 100644
|
||||
- so that it won't get broken by longjmp. */
|
||||
- char *config;
|
||||
- const char *prefix;
|
||||
- const char *net_search_cfg;
|
||||
- int disable_net_search = 0;
|
||||
-
|
||||
- prefix = grub_env_get ("fw_path");
|
||||
- if (! prefix)
|
||||
- prefix = grub_env_get ("prefix");
|
||||
-
|
||||
- net_search_cfg = grub_env_get ("feature_net_search_cfg");
|
||||
- if (net_search_cfg && net_search_cfg[0] == 'n')
|
||||
- disable_net_search = 1;
|
||||
-
|
||||
- if (prefix)
|
||||
- {
|
||||
- if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0)
|
||||
- if (grub_strncmp (prefix + 1, "tftp", sizeof ("tftp") - 1) == 0 &&
|
||||
- !disable_net_search)
|
||||
- {
|
||||
- grub_size_t config_len;
|
||||
- config_len = grub_strlen (prefix) +
|
@ -13,21 +13,23 @@ Resolves rhbz#1124074
|
||||
Signed-off-by: Robert Marshall <rmarshall@redhat.com>
|
||||
[pjones: fix --enable-rpm-sort configure option]
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
[thierry.vignaud: fix build with rpm-4.16]
|
||||
Signed-off-by: Thierry Vignaud <thierry.vignaud@gmail.com>
|
||||
---
|
||||
configure.ac | 29 +++++
|
||||
configure.ac | 38 +++++++
|
||||
Makefile.util.def | 16 +++
|
||||
util/grub-rpm-sort.c | 281 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
util/grub-mkconfig_lib.in | 11 +-
|
||||
util/grub-rpm-sort.8 | 12 ++
|
||||
5 files changed, 348 insertions(+), 1 deletion(-)
|
||||
5 files changed, 357 insertions(+), 1 deletion(-)
|
||||
create mode 100644 util/grub-rpm-sort.c
|
||||
create mode 100644 util/grub-rpm-sort.8
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 8df400e0a8b..6927615819b 100644
|
||||
index b8c4d52dfd1..ac84a8ccf69 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -69,6 +69,7 @@ grub_TRANSFORM([grub-mkrelpath])
|
||||
@@ -72,6 +72,7 @@ grub_TRANSFORM([grub-mkrelpath])
|
||||
grub_TRANSFORM([grub-mkrescue])
|
||||
grub_TRANSFORM([grub-probe])
|
||||
grub_TRANSFORM([grub-reboot])
|
||||
@ -35,7 +37,7 @@ index 8df400e0a8b..6927615819b 100644
|
||||
grub_TRANSFORM([grub-script-check])
|
||||
grub_TRANSFORM([grub-set-default])
|
||||
grub_TRANSFORM([grub-sparc64-setup])
|
||||
@@ -92,6 +93,7 @@ grub_TRANSFORM([grub-mkrescue.1])
|
||||
@@ -95,6 +96,7 @@ grub_TRANSFORM([grub-mkrescue.1])
|
||||
grub_TRANSFORM([grub-mkstandalone.3])
|
||||
grub_TRANSFORM([grub-ofpathname.3])
|
||||
grub_TRANSFORM([grub-probe.3])
|
||||
@ -43,7 +45,7 @@ index 8df400e0a8b..6927615819b 100644
|
||||
grub_TRANSFORM([grub-reboot.3])
|
||||
grub_TRANSFORM([grub-render-label.3])
|
||||
grub_TRANSFORM([grub-script-check.3])
|
||||
@@ -1802,6 +1804,33 @@ fi
|
||||
@@ -1860,6 +1862,42 @@ fi
|
||||
|
||||
AC_SUBST([LIBDEVMAPPER])
|
||||
|
||||
@ -72,16 +74,25 @@ index 8df400e0a8b..6927615819b 100644
|
||||
+ [Define to 1 if you have the rpm library.])
|
||||
+fi
|
||||
+
|
||||
+if test x"$LIBRPM" = x ; then
|
||||
+ # Check for rpm library.
|
||||
+ AC_CHECK_LIB([rpmio], [rpmvercmp], [],
|
||||
+ [rpm_sort_excuse="rpmio missing rpmvercmp"])
|
||||
+ LIBRPM="-lrpmio";
|
||||
+ AC_DEFINE([HAVE_RPMIO], [1],
|
||||
+ [Define to 1 if you have the rpm library.])
|
||||
+fi
|
||||
+
|
||||
+AC_SUBST([LIBRPM])
|
||||
+
|
||||
LIBGEOM=
|
||||
if test x$host_kernel = xkfreebsd; then
|
||||
AC_CHECK_LIB([geom], [geom_gettree], [],
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 1f298d05f3d..843ce092b94 100644
|
||||
index 2c9b283a230..ba4cf4b29b0 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -696,6 +696,22 @@ program = {
|
||||
@@ -703,6 +703,22 @@ program = {
|
||||
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBUTIL) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
|
||||
};
|
||||
|
||||
@ -392,7 +403,7 @@ index 00000000000..f33bd1ed568
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 1a4a57898f9..113a41f9409 100644
|
||||
index 0f6505bf3b6..42c2ea9ba50 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -33,6 +33,9 @@ fi
|
||||
@ -403,9 +414,9 @@ index 1a4a57898f9..113a41f9409 100644
|
||||
+ grub_rpm_sort="${sbindir}/@grub_rpm_sort@"
|
||||
+fi
|
||||
|
||||
if which gettext >/dev/null 2>/dev/null; then
|
||||
if command -v gettext >/dev/null; then
|
||||
:
|
||||
@@ -214,6 +217,12 @@ version_sort ()
|
||||
@@ -218,6 +221,12 @@ version_sort ()
|
||||
esac
|
||||
}
|
||||
|
||||
@ -418,7 +429,7 @@ index 1a4a57898f9..113a41f9409 100644
|
||||
version_test_numeric ()
|
||||
{
|
||||
version_test_numeric_a="$1"
|
||||
@@ -230,7 +239,7 @@ version_test_numeric ()
|
||||
@@ -234,7 +243,7 @@ version_test_numeric ()
|
||||
version_test_numeric_a="$version_test_numeric_b"
|
||||
version_test_numeric_b="$version_test_numeric_c"
|
||||
fi
|
@ -1,33 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Mon, 30 Jun 2014 14:16:46 -0400
|
||||
Subject: [PATCH] Don't munge raw spaces when we're doing our cmdline escaping
|
||||
(#923374)
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/lib/cmdline.c | 11 +----------
|
||||
1 file changed, 1 insertion(+), 10 deletions(-)
|
||||
|
||||
diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c
|
||||
index e0fb0a9e48a..8e2294d8ff6 100644
|
||||
--- a/grub-core/lib/cmdline.c
|
||||
+++ b/grub-core/lib/cmdline.c
|
||||
@@ -98,16 +98,7 @@ grub_create_loader_cmdline (int argc, char *argv[], char *buf,
|
||||
|
||||
while (*c)
|
||||
{
|
||||
- if (*c == ' ')
|
||||
- {
|
||||
- *buf++ = '\\';
|
||||
- *buf++ = 'x';
|
||||
- *buf++ = '2';
|
||||
- *buf++ = '0';
|
||||
- c++;
|
||||
- continue;
|
||||
- }
|
||||
- else if (*c == '\\' && *(c+1) == 'x' &&
|
||||
+ if (*c == '\\' && *(c+1) == 'x' &&
|
||||
is_hex(*(c+2)) && is_hex(*(c+3)))
|
||||
{
|
||||
*buf++ = *c++;
|
@ -12,7 +12,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 27 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index d12d2d784dc..12a20c9ad73 100644
|
||||
index fed73271478..2e59f3b4197 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -78,6 +78,32 @@ case x"$GRUB_FS" in
|
@ -27,10 +27,10 @@ Andy Lutomirski <luto@kernel.org>
|
||||
create mode 100644 util/grub.d/01_users.in
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 6927615819b..68501662e8d 100644
|
||||
index ac84a8ccf69..9ecd3540bd6 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -69,6 +69,7 @@ grub_TRANSFORM([grub-mkrelpath])
|
||||
@@ -72,6 +72,7 @@ grub_TRANSFORM([grub-mkrelpath])
|
||||
grub_TRANSFORM([grub-mkrescue])
|
||||
grub_TRANSFORM([grub-probe])
|
||||
grub_TRANSFORM([grub-reboot])
|
||||
@ -39,10 +39,10 @@ index 6927615819b..68501662e8d 100644
|
||||
grub_TRANSFORM([grub-script-check])
|
||||
grub_TRANSFORM([grub-set-default])
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 843ce092b94..e50436a4987 100644
|
||||
index ba4cf4b29b0..1a7dd433e33 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -451,6 +451,12 @@ script = {
|
||||
@@ -452,6 +452,12 @@ script = {
|
||||
installdir = grubconf;
|
||||
};
|
||||
|
||||
@ -55,7 +55,7 @@ index 843ce092b94..e50436a4987 100644
|
||||
script = {
|
||||
name = '10_windows';
|
||||
common = util/grub.d/10_windows.in;
|
||||
@@ -733,6 +739,13 @@ script = {
|
||||
@@ -740,6 +746,13 @@ script = {
|
||||
installdir = sbin;
|
||||
};
|
||||
|
||||
@ -70,10 +70,10 @@ index 843ce092b94..e50436a4987 100644
|
||||
name = grub-mkconfig_lib;
|
||||
common = util/grub-mkconfig_lib.in;
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index c645351dd2a..4e7a875309e 100644
|
||||
index 91d761bae80..3e4c6c5240b 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -282,6 +282,8 @@ for i in "${grub_mkconfig_dir}"/* ; do
|
||||
@@ -279,6 +279,8 @@ for i in "${grub_mkconfig_dir}"/* ; do
|
||||
*~) ;;
|
||||
# emacsen autosave files. FIXME: support other editors
|
||||
*/\#*\#) ;;
|
@ -5,27 +5,19 @@ Subject: [PATCH] efinet and bootp: add support for dhcpv6
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/net/bootp.c | 174 +++++++++++++++++++++++++++++++++++++
|
||||
grub-core/net/drivers/efi/efinet.c | 54 ++++++++++--
|
||||
grub-core/net/bootp.c | 173 +++++++++++++++++++++++++++++++++++++
|
||||
grub-core/net/drivers/efi/efinet.c | 53 ++++++++++--
|
||||
grub-core/net/net.c | 72 +++++++++++++++
|
||||
grub-core/net/tftp.c | 4 +
|
||||
include/grub/efi/api.h | 129 +++++++++++++++++++++++++--
|
||||
include/grub/net.h | 60 +++++++++++++
|
||||
6 files changed, 479 insertions(+), 14 deletions(-)
|
||||
6 files changed, 477 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
|
||||
index 0e6e41a1699..8c969595a7b 100644
|
||||
index e33be51f83b..8d9edaac447 100644
|
||||
--- a/grub-core/net/bootp.c
|
||||
+++ b/grub-core/net/bootp.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <grub/net/ip.h>
|
||||
#include <grub/net/netbuff.h>
|
||||
#include <grub/net/udp.h>
|
||||
+#include <grub/net/url.h>
|
||||
#include <grub/datetime.h>
|
||||
|
||||
struct grub_dhcp_discover_options
|
||||
@@ -935,6 +936,179 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),
|
||||
@@ -902,6 +902,179 @@ grub_cmd_bootp (struct grub_command *cmd __attribute__ ((unused)),
|
||||
|
||||
static grub_command_t cmd_getdhcp, cmd_bootp, cmd_dhcp;
|
||||
|
||||
@ -206,16 +198,15 @@ index 0e6e41a1699..8c969595a7b 100644
|
||||
grub_bootp_init (void)
|
||||
{
|
||||
diff --git a/grub-core/net/drivers/efi/efinet.c b/grub-core/net/drivers/efi/efinet.c
|
||||
index 5388f952ba9..a57189e8bb3 100644
|
||||
index 5388f952ba9..173fb63153c 100644
|
||||
--- a/grub-core/net/drivers/efi/efinet.c
|
||||
+++ b/grub-core/net/drivers/efi/efinet.c
|
||||
@@ -18,11 +18,15 @@
|
||||
@@ -18,11 +18,14 @@
|
||||
|
||||
#include <grub/net/netbuff.h>
|
||||
#include <grub/dl.h>
|
||||
+#include <grub/env.h>
|
||||
#include <grub/net.h>
|
||||
+#include <grub/net/url.h>
|
||||
#include <grub/time.h>
|
||||
#include <grub/efi/api.h>
|
||||
#include <grub/efi/efi.h>
|
||||
@ -225,7 +216,7 @@ index 5388f952ba9..a57189e8bb3 100644
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -329,7 +333,7 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
@@ -329,7 +332,7 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
char **path)
|
||||
{
|
||||
struct grub_net_card *card;
|
||||
@ -234,7 +225,7 @@ index 5388f952ba9..a57189e8bb3 100644
|
||||
|
||||
dp = grub_efi_get_device_path (hnd);
|
||||
if (! dp)
|
||||
@@ -340,14 +344,19 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
@@ -340,14 +343,19 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
grub_efi_device_path_t *cdp;
|
||||
struct grub_efi_pxe *pxe;
|
||||
struct grub_efi_pxe_mode *pxe_mode;
|
||||
@ -255,7 +246,7 @@ index 5388f952ba9..a57189e8bb3 100644
|
||||
int match;
|
||||
|
||||
/* EDK2 UEFI PXE driver creates pseudo devices with type IPv4/IPv6
|
||||
@@ -356,7 +365,6 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
@@ -356,7 +364,6 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
devices. We skip them when enumerating cards, so here we need to
|
||||
find matching MAC device.
|
||||
*/
|
||||
@ -263,7 +254,7 @@ index 5388f952ba9..a57189e8bb3 100644
|
||||
if (GRUB_EFI_DEVICE_PATH_TYPE (ldp) != GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE
|
||||
|| (GRUB_EFI_DEVICE_PATH_SUBTYPE (ldp) != GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE
|
||||
&& GRUB_EFI_DEVICE_PATH_SUBTYPE (ldp) != GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE))
|
||||
@@ -373,16 +381,46 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
@@ -373,16 +380,46 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device,
|
||||
if (!match)
|
||||
continue;
|
||||
}
|
||||
@ -316,10 +307,10 @@ index 5388f952ba9..a57189e8bb3 100644
|
||||
}
|
||||
}
|
||||
diff --git a/grub-core/net/net.c b/grub-core/net/net.c
|
||||
index 4b7972b8e7e..f24f1fd63f6 100644
|
||||
index 0ef148f4adc..22f2689aaeb 100644
|
||||
--- a/grub-core/net/net.c
|
||||
+++ b/grub-core/net/net.c
|
||||
@@ -955,6 +955,78 @@ grub_net_network_level_interface_register (struct grub_net_network_level_interfa
|
||||
@@ -960,6 +960,78 @@ grub_net_network_level_interface_register (struct grub_net_network_level_interfa
|
||||
grub_net_network_level_interfaces = inter;
|
||||
}
|
||||
|
||||
@ -399,38 +390,37 @@ index 4b7972b8e7e..f24f1fd63f6 100644
|
||||
grub_err_t
|
||||
grub_net_add_ipv4_local (struct grub_net_network_level_interface *inter,
|
||||
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
||||
index 7d90bf66e76..a5c5038130a 100644
|
||||
index 7f44b30f521..4ab2f5c7357 100644
|
||||
--- a/grub-core/net/tftp.c
|
||||
+++ b/grub-core/net/tftp.c
|
||||
@@ -379,19 +379,23 @@ tftp_open (struct grub_file *file, const char *filename)
|
||||
return grub_errno;
|
||||
}
|
||||
@@ -358,18 +358,22 @@ tftp_open (struct grub_file *file, const char *filename)
|
||||
file->not_easily_seekable = 1;
|
||||
file->data = data;
|
||||
|
||||
+ grub_dprintf ("tftp", "resolving address for %s\n", file->device->net->server);
|
||||
+ grub_dprintf("tftp", "resolving address for %s\n", file->device->net->server);
|
||||
err = grub_net_resolve_address (file->device->net->server, &addr);
|
||||
if (err)
|
||||
{
|
||||
+ grub_dprintf("tftp", "Address resolution failed: %d\n", err);
|
||||
destroy_pq (data);
|
||||
grub_free (data);
|
||||
return err;
|
||||
}
|
||||
|
||||
+ grub_dprintf ("tftp", "opening connection\n");
|
||||
+ grub_dprintf("tftp", "opening connection\n");
|
||||
data->sock = grub_net_udp_open (addr,
|
||||
TFTP_SERVER_PORT, tftp_receive,
|
||||
file);
|
||||
if (!data->sock)
|
||||
{
|
||||
+ grub_dprintf ("tftp", "connection failed\n");
|
||||
destroy_pq (data);
|
||||
+ grub_dprintf("tftp", "connection failed\n");
|
||||
grub_free (data);
|
||||
return grub_errno;
|
||||
}
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index addcbfa8fb7..d97cdf98c80 100644
|
||||
index f1a52210c0c..117469450d3 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -572,10 +572,16 @@ typedef void *grub_efi_handle_t;
|
||||
@@ -592,10 +592,16 @@ typedef void *grub_efi_handle_t;
|
||||
typedef void *grub_efi_event_t;
|
||||
typedef grub_efi_uint64_t grub_efi_lba_t;
|
||||
typedef grub_efi_uintn_t grub_efi_tpl_t;
|
||||
@ -451,7 +441,7 @@ index addcbfa8fb7..d97cdf98c80 100644
|
||||
typedef grub_efi_uint64_t grub_efi_physical_address_t;
|
||||
typedef grub_efi_uint64_t grub_efi_virtual_address_t;
|
||||
|
||||
@@ -1450,16 +1456,127 @@ struct grub_efi_simple_text_output_interface
|
||||
@@ -1474,16 +1480,127 @@ struct grub_efi_simple_text_output_interface
|
||||
};
|
||||
typedef struct grub_efi_simple_text_output_interface grub_efi_simple_text_output_interface_t;
|
||||
|
||||
@ -582,7 +572,7 @@ index addcbfa8fb7..d97cdf98c80 100644
|
||||
|
||||
typedef struct grub_efi_pxe
|
||||
diff --git a/include/grub/net.h b/include/grub/net.h
|
||||
index ff6d347f7da..3647012374b 100644
|
||||
index 7ae4b6bd805..8a05ec4fe7a 100644
|
||||
--- a/include/grub/net.h
|
||||
+++ b/include/grub/net.h
|
||||
@@ -447,6 +447,51 @@ struct grub_net_bootp_packet
|
@ -23,10 +23,10 @@ Resolves: rhbz#1226325
|
||||
create mode 100644 util/grub-get-kernel-settings.in
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 68501662e8d..fc3c2b44d60 100644
|
||||
index 9ecd3540bd6..281201f671e 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -62,6 +62,7 @@ grub_TRANSFORM([grub-install])
|
||||
@@ -65,6 +65,7 @@ grub_TRANSFORM([grub-install])
|
||||
grub_TRANSFORM([grub-mkconfig])
|
||||
grub_TRANSFORM([grub-mkfont])
|
||||
grub_TRANSFORM([grub-mkimage])
|
||||
@ -34,7 +34,7 @@ index 68501662e8d..fc3c2b44d60 100644
|
||||
grub_TRANSFORM([grub-glue-efi])
|
||||
grub_TRANSFORM([grub-mklayout])
|
||||
grub_TRANSFORM([grub-mkpasswd-pbkdf2])
|
||||
@@ -79,6 +80,7 @@ grub_TRANSFORM([grub-file])
|
||||
@@ -82,6 +83,7 @@ grub_TRANSFORM([grub-file])
|
||||
grub_TRANSFORM([grub-bios-setup.3])
|
||||
grub_TRANSFORM([grub-editenv.1])
|
||||
grub_TRANSFORM([grub-fstest.3])
|
||||
@ -43,10 +43,10 @@ index 68501662e8d..fc3c2b44d60 100644
|
||||
grub_TRANSFORM([grub-install.1])
|
||||
grub_TRANSFORM([grub-kbdcomp.3])
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index e50436a4987..2215cc759c0 100644
|
||||
index 1a7dd433e33..cdd2f51fe4b 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -725,6 +725,13 @@ script = {
|
||||
@@ -732,6 +732,13 @@ script = {
|
||||
installdir = sbin;
|
||||
};
|
||||
|
||||
@ -214,7 +214,7 @@ index 00000000000..7e87dfccc0e
|
||||
+ echo export GRUB_UPDATE_DEFAULT_KERNEL
|
||||
+fi
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 4e7a875309e..6247a0ba850 100644
|
||||
index 3e4c6c5240b..60beaaa6962 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -45,6 +45,7 @@ grub_probe="${sbindir}/@grub_probe@"
|
||||
@ -225,17 +225,17 @@ index 4e7a875309e..6247a0ba850 100644
|
||||
|
||||
export TEXTDOMAIN=@PACKAGE@
|
||||
export TEXTDOMAINDIR="@localedir@"
|
||||
@@ -158,6 +159,8 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||
@@ -161,6 +162,8 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||
. ${sysconfdir}/default/grub
|
||||
fi
|
||||
|
||||
+eval "$("${grub_get_kernel_settings}")" || true
|
||||
+
|
||||
if [ "x$GRUB_DISABLE_UUID" != "xtrue" ]; then
|
||||
if [ -z "$GRUB_DEVICE_UUID" ]; then
|
||||
GRUB_DEVICE_UUID="$GRUB_DEVICE_UUID_GENERATED"
|
||||
if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then
|
||||
if [ -z "${GRUB_DISABLE_LINUX_UUID}" ]; then
|
||||
GRUB_DISABLE_LINUX_UUID="true"
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 12a20c9ad73..55f4aa783cf 100644
|
||||
index 2e59f3b4197..0f3c19e30cc 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -111,7 +111,8 @@ linux_entry ()
|
||||
@ -258,7 +258,7 @@ index 12a20c9ad73..55f4aa783cf 100644
|
||||
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||
else
|
||||
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||
@@ -295,11 +299,15 @@ while [ "x$list" != "x" ] ; do
|
||||
@@ -299,11 +303,15 @@ while [ "x$list" != "x" ] ; do
|
||||
fi
|
||||
|
||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
|
||||
@ -276,7 +276,7 @@ index 12a20c9ad73..55f4aa783cf 100644
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
fi
|
||||
@@ -308,10 +316,15 @@ while [ "x$list" != "x" ] ; do
|
||||
@@ -312,10 +320,15 @@ while [ "x$list" != "x" ] ; do
|
||||
is_top_level=false
|
||||
fi
|
||||
|
@ -1,56 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 18 Feb 2014 11:34:00 -0500
|
||||
Subject: [PATCH] Fix convert function to support NVMe devices
|
||||
|
||||
This is adapted from the patch at
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1019660 , which is against
|
||||
the now very old version of convert_system_partition_to_system_disk().
|
||||
|
||||
As such, it certainly not the right thing for upstream, but should
|
||||
function for now.
|
||||
|
||||
Resolves: rhbz#1019660
|
||||
|
||||
Signed-off-by: Peter Jones <grub2-owner@fedoraproject.org>
|
||||
---
|
||||
util/getroot.c | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
diff --git a/util/getroot.c b/util/getroot.c
|
||||
index 847406fbab0..fa3460d6cd8 100644
|
||||
--- a/util/getroot.c
|
||||
+++ b/util/getroot.c
|
||||
@@ -153,6 +153,7 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part)
|
||||
{
|
||||
#if GRUB_UTIL_FD_STAT_IS_FUNCTIONAL
|
||||
struct stat st;
|
||||
+ char *path = xmalloc(PATH_MAX);
|
||||
|
||||
if (stat (os_dev, &st) < 0)
|
||||
{
|
||||
@@ -165,6 +166,24 @@ convert_system_partition_to_system_disk (const char *os_dev, int *is_part)
|
||||
|
||||
*is_part = 0;
|
||||
|
||||
+ if (realpath(os_dev, path))
|
||||
+ {
|
||||
+ if ((strncmp ("/dev/nvme", path, 9) == 0))
|
||||
+ {
|
||||
+ char *p = path + 5;
|
||||
+ p = strchr(p, 'p');
|
||||
+ if (p)
|
||||
+ {
|
||||
+ *is_part = 1;
|
||||
+ *p = '\0';
|
||||
+ }
|
||||
+ return path;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ grub_free (path);
|
||||
+ *is_part = 0;
|
||||
+
|
||||
if (grub_util_device_is_mapped_stat (&st))
|
||||
return grub_util_devmapper_part_to_disk (&st, is_part, os_dev);
|
||||
|
@ -13,10 +13,10 @@ Subject: [PATCH] Make grub_fatal() also backtrace.
|
||||
create mode 100644 grub-core/lib/arm64/backtrace.c
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 99466b1e47e..ebc558019cd 100644
|
||||
index c15e91943b9..058c88ac3af 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -186,6 +186,9 @@ kernel = {
|
||||
@@ -188,6 +188,9 @@ kernel = {
|
||||
|
||||
softdiv = lib/division.c;
|
||||
|
||||
@ -27,7 +27,7 @@ index 99466b1e47e..ebc558019cd 100644
|
||||
i386_xen = kern/i386/dl.c;
|
||||
i386_xen_pvh = kern/i386/dl.c;
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index 1c560ea570a..04371ac49f2 100644
|
||||
index 63b586d09cb..a3e215155bd 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -24,6 +24,7 @@
|
||||
@ -38,7 +38,7 @@ index 1c560ea570a..04371ac49f2 100644
|
||||
|
||||
union printf_arg
|
||||
{
|
||||
@@ -1101,8 +1102,13 @@ grub_xasprintf (const char *fmt, ...)
|
||||
@@ -1199,8 +1200,13 @@ grub_printf_fmt_check (const char *fmt, const char *fmt_expected)
|
||||
static void __attribute__ ((noreturn))
|
||||
grub_abort (void)
|
||||
{
|
@ -1,82 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 8 Jul 2019 21:46:52 +0200
|
||||
Subject: [PATCH] Add grub_util_readlink()
|
||||
|
||||
Add grub_util_readlink(). This requires pulling in stat and readlink from
|
||||
gnulib, which pulls in stat and related headers, but after that the
|
||||
implementation is straightforward.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
grub-core/osdep/windows/hostdisk.c | 6 ++++++
|
||||
include/grub/osdep/hostfile_aros.h | 6 ++++++
|
||||
include/grub/osdep/hostfile_unix.h | 6 ++++++
|
||||
include/grub/osdep/hostfile_windows.h | 2 ++
|
||||
4 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/grub-core/osdep/windows/hostdisk.c b/grub-core/osdep/windows/hostdisk.c
|
||||
index 355100789a7..87a106c9b82 100644
|
||||
--- a/grub-core/osdep/windows/hostdisk.c
|
||||
+++ b/grub-core/osdep/windows/hostdisk.c
|
||||
@@ -365,6 +365,12 @@ grub_util_mkdir (const char *dir)
|
||||
free (windows_name);
|
||||
}
|
||||
|
||||
+ssize_t
|
||||
+grub_util_readlink (const char *name, char *buf, size_t bufsize)
|
||||
+{
|
||||
+ return readlink(name, buf, bufsize);
|
||||
+}
|
||||
+
|
||||
int
|
||||
grub_util_rename (const char *from, const char *to)
|
||||
{
|
||||
diff --git a/include/grub/osdep/hostfile_aros.h b/include/grub/osdep/hostfile_aros.h
|
||||
index a059c0fa40a..161fbb7bdfd 100644
|
||||
--- a/include/grub/osdep/hostfile_aros.h
|
||||
+++ b/include/grub/osdep/hostfile_aros.h
|
||||
@@ -68,6 +68,12 @@ grub_util_rename (const char *from, const char *to)
|
||||
return rename (from, to);
|
||||
}
|
||||
|
||||
+static inline ssize_t
|
||||
+grub_util_readlink (const char *name, char *buf, size_t bufsize)
|
||||
+{
|
||||
+ return readlink(name, buf, bufsize);
|
||||
+}
|
||||
+
|
||||
#define grub_util_mkdir(a) mkdir ((a), 0755)
|
||||
|
||||
struct grub_util_fd
|
||||
diff --git a/include/grub/osdep/hostfile_unix.h b/include/grub/osdep/hostfile_unix.h
|
||||
index 9ffe46fa3ca..17cd3aa8b30 100644
|
||||
--- a/include/grub/osdep/hostfile_unix.h
|
||||
+++ b/include/grub/osdep/hostfile_unix.h
|
||||
@@ -71,6 +71,12 @@ grub_util_rename (const char *from, const char *to)
|
||||
return rename (from, to);
|
||||
}
|
||||
|
||||
+static inline ssize_t
|
||||
+grub_util_readlink (const char *name, char *buf, size_t bufsize)
|
||||
+{
|
||||
+ return readlink(name, buf, bufsize);
|
||||
+}
|
||||
+
|
||||
#define grub_util_mkdir(a) mkdir ((a), 0755)
|
||||
|
||||
#if defined (__NetBSD__)
|
||||
diff --git a/include/grub/osdep/hostfile_windows.h b/include/grub/osdep/hostfile_windows.h
|
||||
index bf6451b6db4..8c92d0591bb 100644
|
||||
--- a/include/grub/osdep/hostfile_windows.h
|
||||
+++ b/include/grub/osdep/hostfile_windows.h
|
||||
@@ -41,6 +41,8 @@ typedef struct grub_util_fd_dir *grub_util_fd_dir_t;
|
||||
|
||||
int
|
||||
grub_util_rename (const char *from, const char *to);
|
||||
+ssize_t
|
||||
+grub_util_readlink (const char *name, char *buf, size_t bufsize);
|
||||
int
|
||||
grub_util_unlink (const char *name);
|
||||
void
|
@ -13,10 +13,10 @@ Subject: [PATCH] Fix up some man pages rpmdiff noticed.
|
||||
create mode 100644 util/grub-syslinux2cfg.1
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index fc3c2b44d60..eb851b8d722 100644
|
||||
index 281201f671e..6c16968ad9c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -84,6 +84,7 @@ grub_TRANSFORM([grub-get-kernel-settings.3])
|
||||
@@ -87,6 +87,7 @@ grub_TRANSFORM([grub-get-kernel-settings.3])
|
||||
grub_TRANSFORM([grub-glue-efi.3])
|
||||
grub_TRANSFORM([grub-install.1])
|
||||
grub_TRANSFORM([grub-kbdcomp.3])
|
||||
@ -24,7 +24,7 @@ index fc3c2b44d60..eb851b8d722 100644
|
||||
grub_TRANSFORM([grub-menulst2cfg.1])
|
||||
grub_TRANSFORM([grub-mkconfig.1])
|
||||
grub_TRANSFORM([grub-mkfont.3])
|
||||
@@ -102,6 +103,7 @@ grub_TRANSFORM([grub-render-label.3])
|
||||
@@ -105,6 +106,7 @@ grub_TRANSFORM([grub-render-label.3])
|
||||
grub_TRANSFORM([grub-script-check.3])
|
||||
grub_TRANSFORM([grub-set-default.1])
|
||||
grub_TRANSFORM([grub-sparc64-setup.3])
|
@ -1,104 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 3 Sep 2014 10:38:00 -0400
|
||||
Subject: [PATCH] Make editenv chase symlinks including those across devices.
|
||||
|
||||
This lets us make /boot/grub2/grubenv a symlink to
|
||||
/boot/efi/EFI/fedora/grubenv even though they're different mount points,
|
||||
which allows /usr/bin/grub2-editenv to be the same across platforms
|
||||
(i.e. UEFI vs BIOS).
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
---
|
||||
Makefile.util.def | 11 +++++++++++
|
||||
util/editenv.c | 46 ++++++++++++++++++++++++++++++++++++++++++++--
|
||||
2 files changed, 55 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 8717774d510..1f298d05f3d 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -240,8 +240,19 @@ program = {
|
||||
|
||||
common = util/grub-editenv.c;
|
||||
common = util/editenv.c;
|
||||
+ common = util/grub-install-common.c;
|
||||
common = grub-core/osdep/init.c;
|
||||
+ common = grub-core/osdep/compress.c;
|
||||
+ extra_dist = grub-core/osdep/unix/compress.c;
|
||||
+ extra_dist = grub-core/osdep/basic/compress.c;
|
||||
+ common = util/mkimage.c;
|
||||
+ common = util/grub-mkimage32.c;
|
||||
+ common = util/grub-mkimage64.c;
|
||||
+ common = grub-core/osdep/config.c;
|
||||
+ common = util/config.c;
|
||||
+ common = util/resolve.c;
|
||||
|
||||
+ ldadd = '$(LIBLZMA)';
|
||||
ldadd = libgrubmods.a;
|
||||
ldadd = libgrubgcry.a;
|
||||
ldadd = libgrubkern.a;
|
||||
diff --git a/util/editenv.c b/util/editenv.c
|
||||
index eb2d0c03a98..e61dc1283a4 100644
|
||||
--- a/util/editenv.c
|
||||
+++ b/util/editenv.c
|
||||
@@ -37,6 +37,7 @@ grub_util_create_envblk_file (const char *name)
|
||||
FILE *fp;
|
||||
char *buf;
|
||||
char *namenew;
|
||||
+ char *rename_target = xstrdup(name);
|
||||
|
||||
buf = xmalloc (DEFAULT_ENVBLK_SIZE);
|
||||
|
||||
@@ -60,7 +61,48 @@ grub_util_create_envblk_file (const char *name)
|
||||
free (buf);
|
||||
fclose (fp);
|
||||
|
||||
- if (grub_util_rename (namenew, name) < 0)
|
||||
- grub_util_error (_("cannot rename the file %s to %s"), namenew, name);
|
||||
+ ssize_t size = 1;
|
||||
+ while (1)
|
||||
+ {
|
||||
+ char *linkbuf;
|
||||
+ ssize_t retsize;
|
||||
+
|
||||
+ linkbuf = xmalloc(size+1);
|
||||
+ retsize = grub_util_readlink (rename_target, linkbuf, size);
|
||||
+ if (retsize < 0 && (errno == ENOENT || errno == EINVAL))
|
||||
+ {
|
||||
+ free (linkbuf);
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (retsize < 0)
|
||||
+ {
|
||||
+ grub_util_error (_("cannot rename the file %s to %s: %m"), namenew, name);
|
||||
+ free (linkbuf);
|
||||
+ free (namenew);
|
||||
+ return;
|
||||
+ }
|
||||
+ else if (retsize == size)
|
||||
+ {
|
||||
+ free(linkbuf);
|
||||
+ size += 128;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ free (rename_target);
|
||||
+ linkbuf[retsize] = '\0';
|
||||
+ rename_target = linkbuf;
|
||||
+ }
|
||||
+
|
||||
+ int rc = grub_util_rename (namenew, rename_target);
|
||||
+ if (rc < 0 && errno == EXDEV)
|
||||
+ {
|
||||
+ rc = grub_install_copy_file (namenew, rename_target, 1);
|
||||
+ grub_util_unlink (namenew);
|
||||
+ }
|
||||
+
|
||||
+ if (rc < 0)
|
||||
+ grub_util_error (_("cannot rename the file %s to %s: %m"), namenew, name);
|
||||
+
|
||||
free (namenew);
|
||||
+ free (rename_target);
|
||||
}
|
@ -9,11 +9,11 @@ time.
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
docs/grub-dev.texi | 4 +-
|
||||
docs/grub.texi | 318 ++++++++++++++++++++++++++---------------------------
|
||||
2 files changed, 161 insertions(+), 161 deletions(-)
|
||||
docs/grub.texi | 323 ++++++++++++++++++++++++++++-------------------------
|
||||
2 files changed, 172 insertions(+), 155 deletions(-)
|
||||
|
||||
diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
|
||||
index ee389fd83c3..e3fed7312a3 100644
|
||||
index a834b3a9c32..a55af53fd45 100644
|
||||
--- a/docs/grub-dev.texi
|
||||
+++ b/docs/grub-dev.texi
|
||||
@@ -1,7 +1,7 @@
|
||||
@ -35,7 +35,7 @@ index ee389fd83c3..e3fed7312a3 100644
|
||||
|
||||
@setchapternewpage odd
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 221064b5679..960e5f3ba41 100644
|
||||
index eeb3118ebde..aa3a7de9d4f 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -1,7 +1,7 @@
|
||||
@ -212,7 +212,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
# @kbd{umount /mnt}
|
||||
@end group
|
||||
@end example
|
||||
@@ -689,16 +689,16 @@ floppy instead of exposing the USB drive as a hard disk (they call it
|
||||
@@ -689,30 +689,37 @@ floppy instead of exposing the USB drive as a hard disk (they call it
|
||||
@example
|
||||
# @kbd{losetup /dev/loop0 /dev/sdb1}
|
||||
# @kbd{mount /dev/loop0 /mnt/usb}
|
||||
@ -223,17 +223,14 @@ index 221064b5679..960e5f3ba41 100644
|
||||
This install doesn't conflict with standard install as long as they are in
|
||||
separate directories.
|
||||
|
||||
-Note that @command{grub-install} is actually just a shell script and the
|
||||
-real task is done by other tools such as @command{grub-mkimage}. Therefore,
|
||||
+Note that @command{grub2-install} is actually just a shell script and the
|
||||
+real task is done by other tools such as @command{grub2-mkimage}. Therefore,
|
||||
you may run those commands directly to install GRUB, without using
|
||||
-@command{grub-install}. Don't do that, however, unless you are very familiar
|
||||
+you may run those commands directly to install GRUB, without using
|
||||
+@command{grub2-install}. Don't do that, however, unless you are very familiar
|
||||
with the internals of GRUB. Installing a boot loader on a running OS may be
|
||||
extremely dangerous.
|
||||
|
||||
@@ -706,20 +706,20 @@ On EFI systems for fixed disk install you have to mount EFI System Partition.
|
||||
+with the internals of GRUB. Installing a boot loader on a running OS may be
|
||||
+extremely dangerous.
|
||||
+
|
||||
On EFI systems for fixed disk install you have to mount EFI System Partition.
|
||||
If you mount it at @file{/boot/efi} then you don't need any special arguments:
|
||||
|
||||
@example
|
||||
@ -257,7 +254,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@end example
|
||||
|
||||
@node Making a GRUB bootable CD-ROM
|
||||
@@ -739,10 +739,10 @@ usually also need to include a configuration file @file{grub.cfg} and some
|
||||
@@ -732,10 +739,10 @@ usually also need to include a configuration file @file{grub.cfg} and some
|
||||
other GRUB modules.
|
||||
|
||||
To make a simple generic GRUB rescue CD, you can use the
|
||||
@ -270,7 +267,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@end example
|
||||
|
||||
You will often need to include other files in your image. To do this, first
|
||||
@@ -765,7 +765,7 @@ directory @file{iso/}.
|
||||
@@ -758,7 +765,7 @@ directory @file{iso/}.
|
||||
Finally, make the image:
|
||||
|
||||
@example
|
||||
@ -279,7 +276,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@end example
|
||||
|
||||
This produces a file named @file{grub.iso}, which then can be burned
|
||||
@@ -781,7 +781,7 @@ storage devices.
|
||||
@@ -774,7 +781,7 @@ storage devices.
|
||||
@node Device map
|
||||
@section The map between BIOS drives and OS devices
|
||||
|
||||
@ -288,7 +285,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
etc.) read it to map BIOS drives to OS devices. This file consists of lines
|
||||
like this:
|
||||
|
||||
@@ -1225,23 +1225,23 @@ need to write the whole thing by hand.
|
||||
@@ -1254,23 +1261,23 @@ need to write the whole thing by hand.
|
||||
@node Simple configuration
|
||||
@section Simple configuration handling
|
||||
|
||||
@ -317,7 +314,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
valid POSIX shell input; normally, it will just be a sequence of
|
||||
@samp{KEY=value} lines, but if the value contains spaces or other special
|
||||
characters then it must be quoted. For example:
|
||||
@@ -1279,7 +1279,7 @@ works it's not recommended since titles often contain unstable device names
|
||||
@@ -1308,7 +1315,7 @@ works it's not recommended since titles often contain unstable device names
|
||||
and may be translated
|
||||
|
||||
If you set this to @samp{saved}, then the default menu entry will be that
|
||||
@ -326,7 +323,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
the environment block, which may not be available in all situations
|
||||
(@pxref{Environment block}).
|
||||
|
||||
@@ -1290,7 +1290,7 @@ If this option is set to @samp{true}, then, when an entry is selected, save
|
||||
@@ -1319,7 +1326,7 @@ If this option is set to @samp{true}, then, when an entry is selected, save
|
||||
it as a new default entry for use by future runs of GRUB. This is only
|
||||
useful if @samp{GRUB_DEFAULT=saved}; it is a separate option because
|
||||
@samp{GRUB_DEFAULT=saved} is useful without this option, in conjunction with
|
||||
@ -335,7 +332,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
This option relies on the environment block, which may not be available in
|
||||
all situations (@pxref{Environment block}).
|
||||
|
||||
@@ -1420,7 +1420,7 @@ intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode
|
||||
@@ -1449,7 +1456,7 @@ intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode
|
||||
@end example
|
||||
|
||||
@item GRUB_DISABLE_LINUX_UUID
|
||||
@ -344,7 +341,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
universally-unique identifiers (UUIDs) to identify the root filesystem to
|
||||
the Linux kernel, using a @samp{root=UUID=...} kernel parameter. This is
|
||||
usually more reliable, but in some cases it may not be appropriate. To
|
||||
@@ -1442,7 +1442,7 @@ If this option is set to @samp{true}, disable the generation of recovery
|
||||
@@ -1471,7 +1478,7 @@ If this option is set to @samp{true}, disable the generation of recovery
|
||||
mode menu entries.
|
||||
|
||||
@item GRUB_DISABLE_UUID
|
||||
@ -353,7 +350,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
universally-unique identifiers (UUIDs) to identify various filesystems to
|
||||
search for files. This is usually more reliable, but in some cases it may
|
||||
not be appropriate. To disable this use of UUIDs, set this option to
|
||||
@@ -1451,12 +1451,12 @@ not be appropriate. To disable this use of UUIDs, set this option to
|
||||
@@ -1482,12 +1489,12 @@ not be appropriate. To disable this use of UUIDs, set this option to
|
||||
@item GRUB_VIDEO_BACKEND
|
||||
If graphical video support is required, either because the @samp{gfxterm}
|
||||
graphical terminal is in use or because @samp{GRUB_GFXPAYLOAD_LINUX} is set,
|
||||
@ -369,16 +366,22 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@item GRUB_GFXMODE
|
||||
Set the resolution used on the @samp{gfxterm} graphical terminal. Note that
|
||||
@@ -1488,7 +1488,7 @@ boot sequence. If you have problems, set this option to @samp{text} and
|
||||
@@ -1519,20 +1526,20 @@ boot sequence. If you have problems, set this option to @samp{text} and
|
||||
GRUB will tell Linux to boot in normal text mode.
|
||||
|
||||
@item GRUB_DISABLE_OS_PROBER
|
||||
-Normally, @command{grub-mkconfig} will try to use the external
|
||||
+Normally, @command{grub2-mkconfig} will try to use the external
|
||||
@command{os-prober} program, if installed, to discover other operating
|
||||
systems installed on the same system and generate appropriate menu entries
|
||||
for them. Set this option to @samp{true} to disable this.
|
||||
@@ -1498,7 +1498,7 @@ List of space-separated FS UUIDs of filesystems to be ignored from os-prober
|
||||
-The @command{grub-mkconfig} has a feature to use the external
|
||||
+The @command{grub2-mkconfig} has a feature to use the external
|
||||
@command{os-prober} program to discover other operating systems installed on
|
||||
the same machine and generate appropriate menu entries for them. It is disabled
|
||||
by default since automatic and silent execution of @command{os-prober}, and
|
||||
creating boot entries based on that data, is a potential attack vector. Set
|
||||
this option to @samp{false} to enable this feature in the
|
||||
-@command{grub-mkconfig} command.
|
||||
+@command{grub2-mkconfig} command.
|
||||
|
||||
@item GRUB_OS_PROBER_SKIP_LIST
|
||||
List of space-separated FS UUIDs of filesystems to be ignored from os-prober
|
||||
output. For efi chainloaders it's <UUID>@@<EFI FILE>
|
||||
|
||||
@item GRUB_DISABLE_SUBMENU
|
||||
@ -387,7 +390,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
the kernel with highest version number and put all other found kernels
|
||||
or alternative menu entries for recovery mode in submenu. For entries returned
|
||||
by @command{os-prober} first entry will be put on top level and all others
|
||||
@@ -1506,11 +1506,11 @@ in submenu. If this option is set to @samp{y}, flat menu with all entries
|
||||
@@ -1540,11 +1547,11 @@ in submenu. If this option is set to @samp{true}, flat menu with all entries
|
||||
on top level will be generated instead. Changing this option will require
|
||||
changing existing values of @samp{GRUB_DEFAULT}, @samp{fallback} (@pxref{fallback})
|
||||
and @samp{default} (@pxref{default}) environment variables as well as saved
|
||||
@ -402,7 +405,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
check for encrypted disks and generate additional commands needed to access
|
||||
them during boot. Note that in this case unattended boot is not possible
|
||||
because GRUB will wait for passphrase to unlock encrypted container.
|
||||
@@ -1569,7 +1569,7 @@ confusing @samp{GRUB_TIMEOUT_STYLE=countdown} or
|
||||
@@ -1603,7 +1610,7 @@ confusing @samp{GRUB_TIMEOUT_STYLE=countdown} or
|
||||
|
||||
@end table
|
||||
|
||||
@ -411,7 +414,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
edit the scripts in @file{/etc/grub.d} directly.
|
||||
@file{/etc/grub.d/40_custom} is particularly useful for adding entire custom
|
||||
menu entries; simply type the menu entries you want to add at the end of
|
||||
@@ -1831,7 +1831,7 @@ images as well.
|
||||
@@ -1864,7 +1871,7 @@ images as well.
|
||||
Mount this partition on/mnt/boot and disable GRUB in all OSes and manually
|
||||
install self-compiled latest GRUB with:
|
||||
|
||||
@ -420,7 +423,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
In all the OSes install GRUB tools but disable installing GRUB in bootsector,
|
||||
so you'll have menu.lst and grub.cfg available for use. Also disable os-prober
|
||||
@@ -1841,20 +1841,20 @@ use by setting:
|
||||
@@ -1874,20 +1881,20 @@ use by setting:
|
||||
|
||||
in /etc/default/grub
|
||||
|
||||
@ -444,7 +447,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@}
|
||||
|
||||
menuentry "Windows XP" @{
|
||||
@@ -1917,15 +1917,15 @@ GRUB supports embedding a configuration file directly into the core image,
|
||||
@@ -1950,15 +1957,15 @@ GRUB supports embedding a configuration file directly into the core image,
|
||||
so that it is loaded before entering normal mode. This is useful, for
|
||||
example, when it is not straightforward to find the real configuration file,
|
||||
or when you need to debug problems with loading that file.
|
||||
@ -463,7 +466,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
After the embedded configuration file (if any) is executed, GRUB will load
|
||||
the @samp{normal} module (@pxref{normal}), which will then read the real
|
||||
@@ -1960,13 +1960,13 @@ included in the core image:
|
||||
@@ -1993,13 +2000,13 @@ included in the core image:
|
||||
@example
|
||||
@group
|
||||
search.fs_label grub root
|
||||
@ -481,7 +484,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
else
|
||||
echo "Could not find an example configuration file!"
|
||||
fi
|
||||
@@ -2490,7 +2490,7 @@ grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i38
|
||||
@@ -2523,7 +2530,7 @@ grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i38
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@ -490,7 +493,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
server.
|
||||
|
||||
The grub.cfg file is placed in the same directory as the path output by
|
||||
@@ -2675,7 +2675,7 @@ team are:
|
||||
@@ -2717,7 +2724,7 @@ team are:
|
||||
@end table
|
||||
|
||||
To take full advantage of this function, install GRUB into the MBR
|
||||
@ -499,7 +502,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
If you have a laptop which has a similar feature and not in the above list
|
||||
could you figure your address and contribute?
|
||||
@@ -2736,7 +2736,7 @@ bytes.
|
||||
@@ -2778,7 +2785,7 @@ bytes.
|
||||
The sole function of @file{boot.img} is to read the first sector of the core
|
||||
image from a local disk and jump to it. Because of the size restriction,
|
||||
@file{boot.img} cannot understand any file system structure, so
|
||||
@ -508,7 +511,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
core image into @file{boot.img} when installing GRUB.
|
||||
|
||||
@item diskboot.img
|
||||
@@ -2766,7 +2766,7 @@ images.
|
||||
@@ -2808,7 +2815,7 @@ images.
|
||||
|
||||
@item core.img
|
||||
This is the core image of GRUB. It is built dynamically from the kernel
|
||||
@ -517,7 +520,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
program. Usually, it contains enough modules to access @file{/boot/grub},
|
||||
and loads everything else (including menu handling, the ability to load
|
||||
target operating systems, and so on) from the file system at run-time. The
|
||||
@@ -2818,7 +2818,7 @@ GRUB 2 has no single Stage 2 image. Instead, it loads modules from
|
||||
@@ -2860,7 +2867,7 @@ GRUB 2 has no single Stage 2 image. Instead, it loads modules from
|
||||
In GRUB 2, images for booting from CD-ROM drives are now constructed using
|
||||
@file{cdboot.img} and @file{core.img}, making sure that the core image
|
||||
contains the @samp{iso9660} module. It is usually best to use the
|
||||
@ -526,7 +529,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@item nbgrub
|
||||
There is as yet no equivalent for @file{nbgrub} in GRUB 2; it was used by
|
||||
@@ -2974,8 +2974,8 @@ There are two ways to specify files, by @dfn{absolute file name} and by
|
||||
@@ -3016,8 +3023,8 @@ There are two ways to specify files, by @dfn{absolute file name} and by
|
||||
|
||||
An absolute file name resembles a Unix absolute file name, using
|
||||
@samp{/} for the directory separator (not @samp{\} as in DOS). One
|
||||
@ -537,7 +540,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
disk. If you omit the device name in an absolute file name, GRUB uses
|
||||
GRUB's @dfn{root device} implicitly. So if you set the root device to,
|
||||
say, @samp{(hd1,1)} by the command @samp{set root=(hd1,1)} (@pxref{set}),
|
||||
@@ -2983,8 +2983,8 @@ then @code{/boot/kernel} is the same as @code{(hd1,1)/boot/kernel}.
|
||||
@@ -3025,8 +3032,8 @@ then @code{/boot/kernel} is the same as @code{(hd1,1)/boot/kernel}.
|
||||
|
||||
On ZFS filesystem the first path component must be
|
||||
@var{volume}@samp{@@}[@var{snapshot}].
|
||||
@ -548,7 +551,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@samp{snap-129}. Trailing @samp{@@} after volume name is mandatory even if
|
||||
snapshot name is omitted.
|
||||
|
||||
@@ -3387,7 +3387,7 @@ The more recent release of Minix would then be identified as
|
||||
@@ -3429,7 +3436,7 @@ The more recent release of Minix would then be identified as
|
||||
@samp{other>minix>minix-3.4.0}.
|
||||
|
||||
This variable is often set by @samp{GRUB_DEFAULT} (@pxref{Simple
|
||||
@ -557,7 +560,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
|
||||
@node fallback
|
||||
@@ -3477,7 +3477,7 @@ If this variable is set, it names the language code that the
|
||||
@@ -3519,7 +3526,7 @@ If this variable is set, it names the language code that the
|
||||
example, French would be named as @samp{fr}, and Simplified Chinese as
|
||||
@samp{zh_CN}.
|
||||
|
||||
@ -566,7 +569,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
reasonable default for this variable based on the system locale.
|
||||
|
||||
|
||||
@@ -3485,10 +3485,10 @@ reasonable default for this variable based on the system locale.
|
||||
@@ -3527,10 +3534,10 @@ reasonable default for this variable based on the system locale.
|
||||
@subsection locale_dir
|
||||
|
||||
If this variable is set, it names the directory where translation files may
|
||||
@ -579,7 +582,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
default for this variable if internationalization is needed and any
|
||||
translation files are available.
|
||||
|
||||
@@ -3606,7 +3606,7 @@ input. The default is not to pause output.
|
||||
@@ -3648,7 +3655,7 @@ input. The default is not to pause output.
|
||||
|
||||
The location of the @samp{/boot/grub} directory as an absolute file name
|
||||
(@pxref{File name syntax}). This is normally set by GRUB at startup based
|
||||
@ -588,7 +591,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
dynamically loaded from this directory, so it must be set correctly in order
|
||||
for many parts of GRUB to work.
|
||||
|
||||
@@ -3697,17 +3697,17 @@ GRUB provides an ``environment block'' which can be used to save a small
|
||||
@@ -3739,17 +3746,17 @@ GRUB provides an ``environment block'' which can be used to save a small
|
||||
amount of state.
|
||||
|
||||
The environment block is a preallocated 1024-byte file, which normally lives
|
||||
@ -609,7 +612,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@samp{GRUB_SAVEDEFAULT} (@pxref{Simple configuration}).
|
||||
|
||||
|
||||
@@ -4398,7 +4398,7 @@ Translate @var{string} into the current language.
|
||||
@@ -4473,7 +4480,7 @@ Translate @var{string} into the current language.
|
||||
|
||||
The current language code is stored in the @samp{lang} variable in GRUB's
|
||||
environment (@pxref{lang}). Translation files in MO format are read from
|
||||
@ -618,7 +621,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@end deffn
|
||||
|
||||
|
||||
@@ -4793,7 +4793,7 @@ Define a user named @var{user} with password @var{clear-password}.
|
||||
@@ -4868,7 +4875,7 @@ Define a user named @var{user} with password @var{clear-password}.
|
||||
|
||||
@deffn Command password_pbkdf2 user hashed-password
|
||||
Define a user named @var{user} with password hash @var{hashed-password}.
|
||||
@ -627,7 +630,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
to generate password hashes. @xref{Security}.
|
||||
@end deffn
|
||||
|
||||
@@ -5651,8 +5651,8 @@ The @samp{password} (@pxref{password}) and @samp{password_pbkdf2}
|
||||
@@ -5811,8 +5818,8 @@ The @samp{password} (@pxref{password}) and @samp{password_pbkdf2}
|
||||
which has an associated password. @samp{password} sets the password in
|
||||
plain text, requiring @file{grub.cfg} to be secure; @samp{password_pbkdf2}
|
||||
sets the password hashed using the Password-Based Key Derivation Function
|
||||
@ -638,7 +641,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
In order to enable authentication support, the @samp{superusers} environment
|
||||
variable must be set to a list of usernames, separated by any of spaces,
|
||||
@@ -5696,7 +5696,7 @@ menuentry "May be run by user1 or a superuser" --users user1 @{
|
||||
@@ -5857,7 +5864,7 @@ menuentry "May be run by user1 or a superuser" --users user1 @{
|
||||
@end group
|
||||
@end example
|
||||
|
||||
@ -647,28 +650,26 @@ index 221064b5679..960e5f3ba41 100644
|
||||
generating configuration files with authentication. You can use
|
||||
@file{/etc/grub.d/40_custom} to add simple superuser authentication, by
|
||||
adding @kbd{set superusers=} and @kbd{password} or @kbd{password_pbkdf2}
|
||||
@@ -5721,15 +5721,15 @@ verified with a public key currently trusted by GRUB
|
||||
validation fails, then file @file{foo} cannot be opened. This failure
|
||||
may halt or otherwise impact the boot process.
|
||||
@@ -5884,7 +5891,17 @@ may halt or otherwise impact the boot process.
|
||||
|
||||
-@comment Unfortunately --pubkey is not yet supported by grub-install,
|
||||
-@comment but we should not bring up internal detail grub-mkimage here
|
||||
An initial trusted public key can be embedded within the GRUB @file{core.img}
|
||||
using the @code{--pubkey} option to @command{grub-install}
|
||||
-(@pxref{Invoking grub-install}).
|
||||
+(@pxref{Invoking grub2-install}).
|
||||
+
|
||||
+@comment Unfortunately --pubkey is not yet supported by grub2-install,
|
||||
+@comment but we should not bring up internal detail grub2-mkimage here
|
||||
@comment in the user guide (as opposed to developer's manual).
|
||||
|
||||
@comment An initial trusted public key can be embedded within the GRUB
|
||||
@comment @file{core.img} using the @code{--pubkey} option to
|
||||
-@comment @command{grub-mkimage} (@pxref{Invoking grub-install}). Presently it
|
||||
-@comment is necessary to write a custom wrapper around @command{grub-mkimage}
|
||||
-@comment using the @code{--grub-mkimage} flag to @command{grub-install}.
|
||||
+@comment in the user guide (as opposed to developer's manual).
|
||||
+
|
||||
+@comment An initial trusted public key can be embedded within the GRUB
|
||||
+@comment @file{core.img} using the @code{--pubkey} option to
|
||||
+@comment @command{grub2-mkimage} (@pxref{Invoking grub2-install}). Presently it
|
||||
+@comment is necessary to write a custom wrapper around @command{grub2-mkimage}
|
||||
+@comment using the @code{--grub-mkimage} flag to @command{grub2-install}.
|
||||
|
||||
GRUB uses GPG-style detached signatures (meaning that a file
|
||||
@file{foo.sig} will be produced when file @file{foo} is signed), and
|
||||
@@ -5749,8 +5749,8 @@ gpg --detach-sign /path/to/file
|
||||
@@ -5904,8 +5921,8 @@ gpg --detach-sign /path/to/file
|
||||
For successful validation of all of GRUB's subcomponents and the
|
||||
loaded OS kernel, they must all be signed. One way to accomplish this
|
||||
is the following (after having already produced the desired
|
||||
@ -679,7 +680,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@example
|
||||
@group
|
||||
@@ -5772,7 +5772,7 @@ See also: @ref{check_signatures}, @ref{verify_detached}, @ref{trust},
|
||||
@@ -5927,7 +5944,7 @@ See also: @ref{check_signatures}, @ref{verify_detached}, @ref{trust},
|
||||
Note that internally signature enforcement is controlled by setting
|
||||
the environment variable @code{check_signatures} equal to
|
||||
@code{enforce}. Passing one or more @code{--pubkey} options to
|
||||
@ -688,7 +689,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
equal to @code{enforce} in @file{core.img} prior to processing any
|
||||
configuration files.
|
||||
|
||||
@@ -6189,10 +6189,10 @@ Required files are:
|
||||
@@ -6385,10 +6402,10 @@ Required files are:
|
||||
|
||||
GRUB's normal start-up procedure involves setting the @samp{prefix}
|
||||
environment variable to a value set in the core image by
|
||||
@ -701,7 +702,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
things GRUB is supposed to do.
|
||||
|
||||
If, instead, you only get a rescue shell, this usually means that GRUB
|
||||
@@ -6218,8 +6218,8 @@ normal
|
||||
@@ -6414,8 +6431,8 @@ normal
|
||||
|
||||
However, any problem that leaves you in the rescue shell probably means that
|
||||
GRUB was not correctly installed. It may be more useful to try to reinstall
|
||||
@ -712,7 +713,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@itemize @bullet{}
|
||||
@item
|
||||
@@ -6231,7 +6231,7 @@ is usually better to use UUIDs or file system labels and avoid depending on
|
||||
@@ -6427,7 +6444,7 @@ is usually better to use UUIDs or file system labels and avoid depending on
|
||||
drive ordering entirely.
|
||||
|
||||
@item
|
||||
@ -721,7 +722,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
to a partition but GRUB has already been installed in the master boot
|
||||
record, then the GRUB installation in the partition will be ignored.
|
||||
|
||||
@@ -6262,21 +6262,21 @@ entry which claims partition start at block 0. This change will not hamper
|
||||
@@ -6458,21 +6475,21 @@ entry which claims partition start at block 0. This change will not hamper
|
||||
bootability on other machines.
|
||||
|
||||
|
||||
@ -749,7 +750,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@table @option
|
||||
@item --help
|
||||
@@ -6292,13 +6292,13 @@ separate partition or a removable disk.
|
||||
@@ -6488,13 +6505,13 @@ separate partition or a removable disk.
|
||||
If this option is not specified then it defaults to @file{/boot}, so
|
||||
|
||||
@example
|
||||
@ -765,7 +766,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
@end example
|
||||
|
||||
Here is an example in which you have a separate @dfn{boot} partition which is
|
||||
@@ -6306,16 +6306,16 @@ mounted on
|
||||
@@ -6502,16 +6519,16 @@ mounted on
|
||||
@file{/mnt/boot}:
|
||||
|
||||
@example
|
||||
@ -785,7 +786,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
extra space in the bootloader embedding area for Reed-Solomon
|
||||
error-correcting codes. This enables GRUB to still boot successfully
|
||||
if some blocks are corrupted. The exact amount of protection offered
|
||||
@@ -6328,17 +6328,17 @@ installation}) where GRUB does not reside in any unpartitioned space
|
||||
@@ -6524,17 +6541,17 @@ installation}) where GRUB does not reside in any unpartitioned space
|
||||
outside of the MBR. Disable the Reed-Solomon codes with this option.
|
||||
@end table
|
||||
|
||||
@ -808,7 +809,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@table @option
|
||||
@item --help
|
||||
@@ -6354,17 +6354,17 @@ it to standard output.
|
||||
@@ -6550,17 +6567,17 @@ it to standard output.
|
||||
@end table
|
||||
|
||||
|
||||
@ -830,7 +831,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@table @option
|
||||
@item -c @var{number}
|
||||
@@ -6382,23 +6382,23 @@ Length of the salt. Defaults to 64.
|
||||
@@ -6578,23 +6595,23 @@ Length of the salt. Defaults to 64.
|
||||
@end table
|
||||
|
||||
|
||||
@ -860,7 +861,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@table @option
|
||||
@item --help
|
||||
@@ -6409,17 +6409,17 @@ Print the version number of GRUB and exit.
|
||||
@@ -6605,17 +6622,17 @@ Print the version number of GRUB and exit.
|
||||
@end table
|
||||
|
||||
|
||||
@ -882,7 +883,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
passed on directly to @command{xorriso} in @command{mkisofs} emulation mode.
|
||||
Options passed to @command{xorriso} will normally be interpreted as
|
||||
@command{mkisofs} options; if the option @samp{--} is used, then anything
|
||||
@@ -6434,7 +6434,7 @@ mkdir -p disk/boot/grub
|
||||
@@ -6630,7 +6647,7 @@ mkdir -p disk/boot/grub
|
||||
grub-mkrescue -o grub.iso disk
|
||||
@end example
|
||||
|
||||
@ -891,7 +892,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@table @option
|
||||
@item --help
|
||||
@@ -6462,15 +6462,15 @@ Use @var{file} as the @command{xorriso} program, rather than the built-in
|
||||
@@ -6658,15 +6675,15 @@ Use @var{file} as the @command{xorriso} program, rather than the built-in
|
||||
default.
|
||||
|
||||
@item --grub-mkimage=@var{file}
|
||||
@ -911,7 +912,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
system or file system image that GRUB understands, using GRUB's file system
|
||||
drivers via FUSE. (It is only available if FUSE development files were
|
||||
present when GRUB was built.) This has a number of uses:
|
||||
@@ -6502,13 +6502,13 @@ even if nobody has yet written a FUSE module specifically for that file
|
||||
@@ -6698,13 +6715,13 @@ even if nobody has yet written a FUSE module specifically for that file
|
||||
system type.
|
||||
@end itemize
|
||||
|
||||
@ -927,7 +928,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
non-option arguments (if it is given more than one image, it will treat them
|
||||
as a RAID set), and also accepts the following options:
|
||||
|
||||
@@ -6530,13 +6530,13 @@ Show debugging output for conditions matching @var{string}.
|
||||
@@ -6726,13 +6743,13 @@ Show debugging output for conditions matching @var{string}.
|
||||
@item -K prompt|@var{file}
|
||||
@itemx --zfs-key=prompt|@var{file}
|
||||
Load a ZFS encryption key. If you use @samp{prompt} as the argument,
|
||||
@ -943,7 +944,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
root of the supplied file system.
|
||||
|
||||
If @var{device} is just a number, then it will be treated as a partition
|
||||
@@ -6554,10 +6554,10 @@ Print verbose messages.
|
||||
@@ -6750,10 +6767,10 @@ Print verbose messages.
|
||||
@end table
|
||||
|
||||
|
||||
@ -957,7 +958,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
or device.
|
||||
|
||||
@example
|
||||
@@ -6565,7 +6565,7 @@ grub-probe --target=fs /boot/grub
|
||||
@@ -6761,7 +6778,7 @@ grub-probe --target=fs /boot/grub
|
||||
grub-probe --target=drive --device /dev/sda1
|
||||
@end example
|
||||
|
||||
@ -966,7 +967,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
argument, and also accepts the following options:
|
||||
|
||||
@table @option
|
||||
@@ -6578,16 +6578,16 @@ Print the version number of GRUB and exit.
|
||||
@@ -6774,16 +6791,16 @@ Print the version number of GRUB and exit.
|
||||
@item -d
|
||||
@itemx --device
|
||||
If this option is given, then the non-option argument is a system device
|
||||
@ -986,7 +987,7 @@ index 221064b5679..960e5f3ba41 100644
|
||||
|
||||
@item -t @var{target}
|
||||
@itemx --target=@var{target}
|
||||
@@ -6640,19 +6640,19 @@ Print verbose messages.
|
||||
@@ -6836,19 +6853,19 @@ Print verbose messages.
|
||||
@end table
|
||||
|
||||
|
@ -20,10 +20,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 18 insertions(+), 60 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
|
||||
index 9b8f5968e2d..13a3a6bc752 100644
|
||||
index 94622481284..9d6ea55bdd3 100644
|
||||
--- a/util/grub.d/30_os-prober.in
|
||||
+++ b/util/grub.d/30_os-prober.in
|
||||
@@ -42,68 +42,25 @@ if [ -z "${OSPROBED}" ] ; then
|
||||
@@ -45,68 +45,25 @@ if [ -z "${OSPROBED}" ] ; then
|
||||
fi
|
||||
|
||||
osx_entry() {
|
||||
@ -104,7 +104,7 @@ index 9b8f5968e2d..13a3a6bc752 100644
|
||||
}
|
||||
EOF
|
||||
}
|
||||
@@ -284,11 +241,12 @@ EOF
|
||||
@@ -295,11 +252,12 @@ EOF
|
||||
echo "$title_correction_code"
|
||||
;;
|
||||
macosx)
|
@ -24,7 +24,7 @@ Signed-off-by: Jeff Mahoney <jeffm@suse.com>
|
||||
2 files changed, 533 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 48bd3d04a5e..6823d9765c4 100644
|
||||
index 63203034dfc..f1fff7385b5 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -38,6 +38,9 @@
|
||||
@ -36,8 +36,8 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
+#include <grub/extcmd.h>
|
||||
#include <grub/crypto.h>
|
||||
#include <grub/diskfilter.h>
|
||||
|
||||
@@ -78,9 +81,11 @@ struct grub_btrfs_superblock
|
||||
#include <grub/safemath.h>
|
||||
@@ -79,9 +82,11 @@ struct grub_btrfs_superblock
|
||||
grub_uint64_t generation;
|
||||
grub_uint64_t root_tree;
|
||||
grub_uint64_t chunk_tree;
|
||||
@ -51,7 +51,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
struct grub_btrfs_device this_device;
|
||||
char label[0x100];
|
||||
grub_uint8_t dummy4[0x100];
|
||||
@@ -120,6 +125,7 @@ struct grub_btrfs_data
|
||||
@@ -121,6 +126,7 @@ struct grub_btrfs_data
|
||||
grub_uint64_t exttree;
|
||||
grub_size_t extsize;
|
||||
struct grub_btrfs_extent_data *extent;
|
||||
@ -59,7 +59,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
};
|
||||
|
||||
struct grub_btrfs_chunk_item
|
||||
@@ -188,6 +194,14 @@ struct grub_btrfs_leaf_descriptor
|
||||
@@ -191,6 +197,14 @@ struct grub_btrfs_leaf_descriptor
|
||||
} *data;
|
||||
};
|
||||
|
||||
@ -74,7 +74,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
struct grub_btrfs_time
|
||||
{
|
||||
grub_int64_t sec;
|
||||
@@ -233,6 +247,14 @@ struct grub_btrfs_extent_data
|
||||
@@ -236,6 +250,14 @@ struct grub_btrfs_extent_data
|
||||
|
||||
#define GRUB_BTRFS_OBJECT_ID_CHUNK 0x100
|
||||
|
||||
@ -89,7 +89,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
static grub_disk_addr_t superblock_sectors[] = { 64 * 2, 64 * 1024 * 2,
|
||||
256 * 1048576 * 2, 1048576ULL * 1048576ULL * 2
|
||||
};
|
||||
@@ -1153,6 +1175,62 @@ grub_btrfs_read_logical (struct grub_btrfs_data *data, grub_disk_addr_t addr,
|
||||
@@ -1173,6 +1195,62 @@ grub_btrfs_read_logical (struct grub_btrfs_data *data, grub_disk_addr_t addr,
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
static struct grub_btrfs_data *
|
||||
grub_btrfs_mount (grub_device_t dev)
|
||||
{
|
||||
@@ -1188,6 +1266,13 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
@@ -1208,6 +1286,13 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
data->devices_attached[0].dev = dev;
|
||||
data->devices_attached[0].id = data->sblock.this_device.device_id;
|
||||
|
||||
@ -166,7 +166,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -1653,6 +1738,91 @@ get_root (struct grub_btrfs_data *data, struct grub_btrfs_key *key,
|
||||
@@ -1673,6 +1758,91 @@ get_root (struct grub_btrfs_data *data, struct grub_btrfs_key *key,
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
static grub_err_t
|
||||
find_path (struct grub_btrfs_data *data,
|
||||
const char *path, struct grub_btrfs_key *key,
|
||||
@@ -1671,14 +1841,26 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1691,14 +1861,26 @@ find_path (struct grub_btrfs_data *data,
|
||||
char *origpath = NULL;
|
||||
unsigned symlinks_max = 32;
|
||||
|
||||
@ -289,7 +289,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
while (1)
|
||||
{
|
||||
while (path[0] == '/')
|
||||
@@ -1851,9 +2033,21 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1871,9 +2053,21 @@ find_path (struct grub_btrfs_data *data,
|
||||
path = path_alloc = tmp;
|
||||
if (path[0] == '/')
|
||||
{
|
||||
@ -314,7 +314,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -2094,18 +2288,10 @@ grub_btrfs_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
@@ -2114,18 +2308,10 @@ grub_btrfs_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
data->tree, file->offset, buf, len);
|
||||
}
|
||||
|
||||
@ -336,7 +336,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
grub_be_to_cpu16 (data->sblock.uuid[0]),
|
||||
grub_be_to_cpu16 (data->sblock.uuid[1]),
|
||||
grub_be_to_cpu16 (data->sblock.uuid[2]),
|
||||
@@ -2114,6 +2300,20 @@ grub_btrfs_uuid (grub_device_t device, char **uuid)
|
||||
@@ -2134,6 +2320,20 @@ grub_btrfs_uuid (grub_device_t device, char **uuid)
|
||||
grub_be_to_cpu16 (data->sblock.uuid[5]),
|
||||
grub_be_to_cpu16 (data->sblock.uuid[6]),
|
||||
grub_be_to_cpu16 (data->sblock.uuid[7]));
|
||||
@ -357,7 +357,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
|
||||
grub_btrfs_unmount (data);
|
||||
|
||||
@@ -2170,6 +2370,242 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
|
||||
@@ -2190,6 +2390,242 @@ grub_btrfs_embed (grub_device_t device __attribute__ ((unused)),
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -600,7 +600,7 @@ index 48bd3d04a5e..6823d9765c4 100644
|
||||
static struct grub_fs grub_btrfs_fs = {
|
||||
.name = "btrfs",
|
||||
.fs_dir = grub_btrfs_dir,
|
||||
@@ -2185,12 +2621,88 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
@@ -2205,12 +2641,88 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
#endif
|
||||
};
|
||||
|
@ -12,10 +12,10 @@ Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 6823d9765c4..2d099b18ea1 100644
|
||||
index f1fff7385b5..ad1b56b716d 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -2694,6 +2694,8 @@ GRUB_MOD_INIT (btrfs)
|
||||
@@ -2714,6 +2714,8 @@ GRUB_MOD_INIT (btrfs)
|
||||
subvol_set_env);
|
||||
grub_register_variable_hook ("btrfs_subvolid", subvolid_get_env,
|
||||
subvolid_set_env);
|
@ -1,66 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Robert Marshall <rmarshall@redhat.com>
|
||||
Date: Mon, 16 Mar 2015 16:34:51 -0400
|
||||
Subject: [PATCH] Update info with grub.cfg netboot selection order (#1148650)
|
||||
|
||||
Added documentation to the grub info page that specifies the order
|
||||
netboot clients will use to select a grub configuration file.
|
||||
|
||||
Resolves rhbz#1148650
|
||||
---
|
||||
docs/grub.texi | 42 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 42 insertions(+)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 6f524305085..221064b5679 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -2493,6 +2493,48 @@ grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i38
|
||||
Then follow instructions printed out by grub-mknetdir on configuring your DHCP
|
||||
server.
|
||||
|
||||
+The grub.cfg file is placed in the same directory as the path output by
|
||||
+grub-mknetdir hereafter referred to as FWPATH. GRUB will search for its
|
||||
+configuration files in order using the following rules where the appended
|
||||
+value corresponds to a value on the client machine.
|
||||
+
|
||||
+@example
|
||||
+@group
|
||||
+@samp{(FWPATH)}/grub.cfg-@samp{(UUID OF NIC)}
|
||||
+@samp{(FWPATH)}/grub.cfg-@samp{(MAC ADDRESS OF NIC)}
|
||||
+@samp{(FWPATH)}/grub.cfg-@samp{(IPv4 OR IPv6 ADDRESS)}
|
||||
+@samp{(FWPATH)}/grub.cfg
|
||||
+@end group
|
||||
+@end example
|
||||
+
|
||||
+The client will only attempt to look up an IPv6 address config once, however,
|
||||
+it will try the IPv4 multiple times. The concrete example below shows what
|
||||
+would happen under the IPv4 case.
|
||||
+
|
||||
+@example
|
||||
+@group
|
||||
+UUID: 7726a678-7fc0-4853-a4f6-c85ac36a120a
|
||||
+MAC: 52:54:00:ec:33:81
|
||||
+IPV4: 10.0.0.130 (0A000082)
|
||||
+@end group
|
||||
+@end example
|
||||
+
|
||||
+@example
|
||||
+@group
|
||||
+@samp{(FWPATH)}/grub.cfg-7726a678-7fc0-4853-a4f6-c85ac36a120a
|
||||
+@samp{(FWPATH)}/grub.cfg-52-54-00-ec-33-81
|
||||
+@samp{(FWPATH)}/grub.cfg-0A000082
|
||||
+@samp{(FWPATH)}/grub.cfg-0A00008
|
||||
+@samp{(FWPATH)}/grub.cfg-0A0000
|
||||
+@samp{(FWPATH)}/grub.cfg-0A000
|
||||
+@samp{(FWPATH)}/grub.cfg-0A00
|
||||
+@samp{(FWPATH)}/grub.cfg-0A0
|
||||
+@samp{(FWPATH)}/grub.cfg-0A
|
||||
+@samp{(FWPATH)}/grub.cfg-0
|
||||
+@samp{(FWPATH)}/grub.cfg
|
||||
+@end group
|
||||
+@end example
|
||||
+
|
||||
After GRUB has started, files on the TFTP server will be accessible via the
|
||||
@samp{(tftp)} device.
|
||||
|
@ -8,10 +8,10 @@ Subject: [PATCH] grub2-btrfs-03-follow_default
|
||||
1 file changed, 76 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 2d099b18ea1..2db89f71ea5 100644
|
||||
index ad1b56b716d..113c1f746c9 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -1236,6 +1236,7 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
@@ -1256,6 +1256,7 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
{
|
||||
struct grub_btrfs_data *data;
|
||||
grub_err_t err;
|
||||
@ -19,7 +19,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
|
||||
if (!dev->disk)
|
||||
{
|
||||
@@ -1266,11 +1267,14 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
@@ -1286,11 +1287,14 @@ grub_btrfs_mount (grub_device_t dev)
|
||||
data->devices_attached[0].dev = dev;
|
||||
data->devices_attached[0].id = data->sblock.this_device.device_id;
|
||||
|
||||
@ -38,7 +38,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
}
|
||||
|
||||
return data;
|
||||
@@ -1835,24 +1839,39 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1855,24 +1859,39 @@ find_path (struct grub_btrfs_data *data,
|
||||
grub_size_t allocated = 0;
|
||||
struct grub_btrfs_dir_item *direl = NULL;
|
||||
struct grub_btrfs_key key_out;
|
||||
@ -85,7 +85,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1863,15 +1882,23 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1883,15 +1902,23 @@ find_path (struct grub_btrfs_data *data,
|
||||
|
||||
while (1)
|
||||
{
|
||||
@ -118,7 +118,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
|
||||
if (*type != GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY)
|
||||
{
|
||||
@@ -1882,7 +1909,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1902,7 +1929,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
|
||||
if (ctokenlen == 1 && ctoken[0] == '.')
|
||||
{
|
||||
@ -129,7 +129,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
continue;
|
||||
}
|
||||
if (ctokenlen == 2 && ctoken[0] == '.' && ctoken[1] == '.')
|
||||
@@ -1913,8 +1942,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -1933,8 +1962,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
*type = GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY;
|
||||
key->object_id = key_out.offset;
|
||||
|
||||
@ -141,7 +141,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1983,7 +2013,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -2003,7 +2033,9 @@ find_path (struct grub_btrfs_data *data,
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
if (cdirel->type == GRUB_BTRFS_DIR_ITEM_TYPE_SYMLINK)
|
||||
{
|
||||
struct grub_btrfs_inode inode;
|
||||
@@ -2033,14 +2065,26 @@ find_path (struct grub_btrfs_data *data,
|
||||
@@ -2053,14 +2085,26 @@ find_path (struct grub_btrfs_data *data,
|
||||
path = path_alloc = tmp;
|
||||
if (path[0] == '/')
|
||||
{
|
||||
@ -186,7 +186,7 @@ index 2d099b18ea1..2db89f71ea5 100644
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2696,6 +2740,7 @@ GRUB_MOD_INIT (btrfs)
|
||||
@@ -2716,6 +2760,7 @@ GRUB_MOD_INIT (btrfs)
|
||||
subvolid_set_env);
|
||||
grub_env_export ("btrfs_subvol");
|
||||
grub_env_export ("btrfs_subvolid");
|
@ -13,7 +13,7 @@ Subject: [PATCH] grub2-btrfs-04-grub2-install
|
||||
6 files changed, 54 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
|
||||
index 6d9f4e5faa2..5d50dd6f8dc 100644
|
||||
index 001b818fe58..caf9b1ccd3f 100644
|
||||
--- a/grub-core/osdep/linux/getroot.c
|
||||
+++ b/grub-core/osdep/linux/getroot.c
|
||||
@@ -376,6 +376,7 @@ get_btrfs_fs_prefix (const char *mount_path)
|
||||
@ -38,7 +38,7 @@ index 6d9f4e5faa2..5d50dd6f8dc 100644
|
||||
else if (!retry && grub_strcmp (entries[i].fstype, "autofs") == 0)
|
||||
{
|
||||
diff --git a/grub-core/osdep/unix/config.c b/grub-core/osdep/unix/config.c
|
||||
index 65effa9f3a7..b637c58efb7 100644
|
||||
index 7d6325138ce..46a881530c0 100644
|
||||
--- a/grub-core/osdep/unix/config.c
|
||||
+++ b/grub-core/osdep/unix/config.c
|
||||
@@ -82,6 +82,19 @@ grub_util_load_config (struct grub_util_config *cfg)
|
||||
@ -94,10 +94,10 @@ index ebcdd8f5e22..f044a880a76 100644
|
||||
sizeof ("GRUB_DISTRIBUTOR=") - 1) == 0)
|
||||
{
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 8a55ad4b8dc..0e807b09c36 100644
|
||||
index a0babe3eff9..427ae013701 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -819,6 +819,8 @@ fill_core_services (const char *core_services)
|
||||
@@ -827,6 +827,8 @@ fill_core_services (const char *core_services)
|
||||
free (sysv_plist);
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ index 8a55ad4b8dc..0e807b09c36 100644
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -852,6 +854,9 @@ main (int argc, char *argv[])
|
||||
@@ -860,6 +862,9 @@ main (int argc, char *argv[])
|
||||
|
||||
grub_util_load_config (&config);
|
||||
|
||||
@ -116,7 +116,7 @@ index 8a55ad4b8dc..0e807b09c36 100644
|
||||
if (!bootloader_id && config.grub_distributor)
|
||||
{
|
||||
char *ptr;
|
||||
@@ -1344,6 +1349,16 @@ main (int argc, char *argv[])
|
||||
@@ -1352,6 +1357,16 @@ main (int argc, char *argv[])
|
||||
fprintf (load_cfg_f, "set debug='%s'\n",
|
||||
debug_image);
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 30 Jun 2015 15:50:41 -0400
|
||||
Subject: [PATCH] Handle rssd storage devices.
|
||||
|
||||
Resolves: rhbz#1087962
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/osdep/linux/getroot.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
|
||||
index 90d92d3ad5c..6d9f4e5faa2 100644
|
||||
--- a/grub-core/osdep/linux/getroot.c
|
||||
+++ b/grub-core/osdep/linux/getroot.c
|
||||
@@ -921,6 +921,19 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st,
|
||||
return path;
|
||||
}
|
||||
|
||||
+ /* If this is an rssd device. */
|
||||
+ if ((strncmp ("rssd", p, 4) == 0) && p[4] >= 'a' && p[4] <= 'z')
|
||||
+ {
|
||||
+ char *pp = p + 4;
|
||||
+ while (*pp >= 'a' && *pp <= 'z')
|
||||
+ pp++;
|
||||
+ if (*pp)
|
||||
+ *is_part = 1;
|
||||
+ /* /dev/rssd[a-z]+[0-9]* */
|
||||
+ *pp = '\0';
|
||||
+ return path;
|
||||
+ }
|
||||
+
|
||||
/* If this is a loop device */
|
||||
if ((strncmp ("loop", p, 4) == 0) && p[4] >= '0' && p[4] <= '9')
|
||||
{
|
@ -13,10 +13,10 @@ Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
5 files changed, 38 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 6247a0ba850..4649e92eb0f 100644
|
||||
index 60beaaa6962..e671ce68aec 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -258,7 +258,8 @@ export GRUB_DEFAULT \
|
||||
@@ -255,7 +255,8 @@ export GRUB_DEFAULT \
|
||||
GRUB_BADRAM \
|
||||
GRUB_OS_PROBER_SKIP_LIST \
|
||||
GRUB_DISABLE_SUBMENU \
|
||||
@ -27,7 +27,7 @@ index 6247a0ba850..4649e92eb0f 100644
|
||||
if test "x${grub_cfg}" != "x"; then
|
||||
rm -f "${grub_cfg}.new"
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 113a41f9409..b3aae534ddc 100644
|
||||
index 42c2ea9ba50..fafeac95061 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -52,7 +52,11 @@ grub_warn ()
|
||||
@ -90,7 +90,7 @@ index 858b526c925..de727e6ee6b 100644
|
||||
+EOF
|
||||
+fi
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 55f4aa783cf..5cab299dc08 100644
|
||||
index 0f3c19e30cc..cbfaca34cc7 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -66,10 +66,14 @@ fi
|
||||
@ -109,7 +109,7 @@ index 55f4aa783cf..5cab299dc08 100644
|
||||
xzfs)
|
||||
rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 47e0d3f5cd6..1519ec692fe 100644
|
||||
index ada20775a14..e9e73b815fb 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -73,10 +73,14 @@ fi
|
@ -11,7 +11,7 @@ Subject: [PATCH] grub2-btrfs-06-subvol-mount
|
||||
4 files changed, 392 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 2db89f71ea5..162723423ca 100644
|
||||
index 113c1f746c9..d323746ecfa 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -41,6 +41,7 @@
|
||||
@ -21,8 +21,8 @@ index 2db89f71ea5..162723423ca 100644
|
||||
+#include <grub/list.h>
|
||||
#include <grub/crypto.h>
|
||||
#include <grub/diskfilter.h>
|
||||
|
||||
@@ -263,6 +264,12 @@ static grub_err_t
|
||||
#include <grub/safemath.h>
|
||||
@@ -266,6 +267,12 @@ static grub_err_t
|
||||
grub_btrfs_read_logical (struct grub_btrfs_data *data,
|
||||
grub_disk_addr_t addr, void *buf, grub_size_t size,
|
||||
int recursion_depth);
|
||||
@ -35,7 +35,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
|
||||
static grub_err_t
|
||||
read_sblock (grub_disk_t disk, struct grub_btrfs_superblock *sb)
|
||||
@@ -1203,9 +1210,26 @@ lookup_root_by_name(struct grub_btrfs_data *data, const char *path)
|
||||
@@ -1223,9 +1230,26 @@ lookup_root_by_name(struct grub_btrfs_data *data, const char *path)
|
||||
grub_err_t err;
|
||||
grub_uint64_t tree = 0;
|
||||
grub_uint8_t type;
|
||||
@ -62,7 +62,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
if (err)
|
||||
return grub_error(GRUB_ERR_FILE_NOT_FOUND, "couldn't locate %s\n", path);
|
||||
|
||||
@@ -2179,11 +2203,20 @@ grub_btrfs_dir (grub_device_t device, const char *path,
|
||||
@@ -2199,11 +2223,20 @@ grub_btrfs_dir (grub_device_t device, const char *path,
|
||||
int r = 0;
|
||||
grub_uint64_t tree;
|
||||
grub_uint8_t type;
|
||||
@ -84,7 +84,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
if (err)
|
||||
{
|
||||
grub_btrfs_unmount (data);
|
||||
@@ -2285,11 +2318,21 @@ grub_btrfs_open (struct grub_file *file, const char *name)
|
||||
@@ -2305,11 +2338,21 @@ grub_btrfs_open (struct grub_file *file, const char *name)
|
||||
struct grub_btrfs_inode inode;
|
||||
grub_uint8_t type;
|
||||
struct grub_btrfs_key key_in;
|
||||
@ -107,7 +107,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
if (err)
|
||||
{
|
||||
grub_btrfs_unmount (data);
|
||||
@@ -2460,6 +2503,150 @@ grub_cmd_btrfs_info (grub_command_t cmd __attribute__ ((unused)), int argc,
|
||||
@@ -2480,6 +2523,150 @@ grub_cmd_btrfs_info (grub_command_t cmd __attribute__ ((unused)), int argc,
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
static grub_err_t
|
||||
get_fs_root(struct grub_btrfs_data *data, grub_uint64_t tree,
|
||||
grub_uint64_t objectid, grub_uint64_t offset,
|
||||
@@ -2666,6 +2853,7 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
@@ -2686,6 +2873,7 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
};
|
||||
|
||||
static grub_command_t cmd_info;
|
||||
@ -266,7 +266,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
static grub_extcmd_t cmd_list_subvols;
|
||||
|
||||
static char *
|
||||
@@ -2729,6 +2917,9 @@ GRUB_MOD_INIT (btrfs)
|
||||
@@ -2749,6 +2937,9 @@ GRUB_MOD_INIT (btrfs)
|
||||
cmd_info = grub_register_command("btrfs-info", grub_cmd_btrfs_info,
|
||||
"DEVICE",
|
||||
"Print BtrFS info about DEVICE.");
|
||||
@ -277,7 +277,7 @@ index 2db89f71ea5..162723423ca 100644
|
||||
grub_cmd_btrfs_list_subvols, 0,
|
||||
"[-p|-n] [-o var] DEVICE",
|
||||
diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
|
||||
index 5d50dd6f8dc..4c5a13022dc 100644
|
||||
index caf9b1ccd3f..28790307e00 100644
|
||||
--- a/grub-core/osdep/linux/getroot.c
|
||||
+++ b/grub-core/osdep/linux/getroot.c
|
||||
@@ -107,6 +107,14 @@ struct btrfs_ioctl_search_key
|
||||
@ -460,10 +460,10 @@ index 5d50dd6f8dc..4c5a13022dc 100644
|
||||
grub_make_system_path_relative_to_its_root_os (const char *path)
|
||||
{
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 0e807b09c36..3e718b9e3fb 100644
|
||||
index 427ae013701..c03214bdfcf 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -1561,6 +1561,55 @@ main (int argc, char *argv[])
|
||||
@@ -1569,6 +1569,55 @@ main (int argc, char *argv[])
|
||||
prefix_drive = xasprintf ("(%s)", grub_drives[0]);
|
||||
}
|
||||
|
@ -10,10 +10,10 @@ Ref: bsc#953538
|
||||
1 file changed, 31 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 162723423ca..69c30e62354 100644
|
||||
index d323746ecfa..673ded03522 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -1240,11 +1240,41 @@ lookup_root_by_name(struct grub_btrfs_data *data, const char *path)
|
||||
@@ -1260,11 +1260,41 @@ lookup_root_by_name(struct grub_btrfs_data *data, const char *path)
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
@ -8,10 +8,10 @@ Subject: [PATCH] Grub not working correctly with btrfs snapshots (bsc#1026511)
|
||||
1 file changed, 238 insertions(+)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 69c30e62354..ba99d04f8ed 100644
|
||||
index 673ded03522..2b21cbaa67e 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -2867,6 +2867,238 @@ out:
|
||||
@@ -2887,6 +2887,238 @@ out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -250,7 +250,7 @@ index 69c30e62354..ba99d04f8ed 100644
|
||||
static struct grub_fs grub_btrfs_fs = {
|
||||
.name = "btrfs",
|
||||
.fs_dir = grub_btrfs_dir,
|
||||
@@ -2885,6 +3117,7 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
@@ -2905,6 +3137,7 @@ static struct grub_fs grub_btrfs_fs = {
|
||||
static grub_command_t cmd_info;
|
||||
static grub_command_t cmd_mount_subvol;
|
||||
static grub_extcmd_t cmd_list_subvols;
|
||||
@ -258,7 +258,7 @@ index 69c30e62354..ba99d04f8ed 100644
|
||||
|
||||
static char *
|
||||
subvolid_set_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||
@@ -2955,6 +3188,11 @@ GRUB_MOD_INIT (btrfs)
|
||||
@@ -2975,6 +3208,11 @@ GRUB_MOD_INIT (btrfs)
|
||||
"[-p|-n] [-o var] DEVICE",
|
||||
"Print list of BtrFS subvolumes on "
|
||||
"DEVICE.", options);
|
@ -10,7 +10,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 32 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index 090c8621066..5e2b479daec 100644
|
||||
index 585fa6662b6..03f9a9d0118 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -24,6 +24,10 @@
|
||||
@ -58,7 +58,7 @@ index 090c8621066..5e2b479daec 100644
|
||||
grub_efi_loaded_image_t *EXPORT_FUNC(grub_efi_get_loaded_image) (grub_efi_handle_t image_handle);
|
||||
void EXPORT_FUNC(grub_efi_print_device_path) (grub_efi_device_path_t *dp);
|
||||
char *EXPORT_FUNC(grub_efi_get_filename) (grub_efi_device_path_t *dp);
|
||||
@@ -109,10 +140,7 @@ void grub_efi_init (void);
|
||||
@@ -115,10 +146,7 @@ void grub_efi_init (void);
|
||||
void grub_efi_fini (void);
|
||||
void grub_efi_set_prefix (void);
|
||||
|
@ -1,44 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Date: Fri, 13 Nov 2015 16:21:09 +0100
|
||||
Subject: [PATCH] Fix security issue when reading username and password
|
||||
|
||||
This patch fixes two integer underflows at:
|
||||
* grub-core/lib/crypto.c
|
||||
* grub-core/normal/auth.c
|
||||
|
||||
Resolves: CVE-2015-8370
|
||||
|
||||
Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Signed-off-by: Ismael Ripoll-Ripoll <iripoll@disca.upv.es>
|
||||
---
|
||||
grub-core/lib/crypto.c | 2 +-
|
||||
grub-core/normal/auth.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/lib/crypto.c b/grub-core/lib/crypto.c
|
||||
index ca334d5a40e..e6c78d16d39 100644
|
||||
--- a/grub-core/lib/crypto.c
|
||||
+++ b/grub-core/lib/crypto.c
|
||||
@@ -468,7 +468,7 @@ grub_password_get (char buf[], unsigned buf_size)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == '\b')
|
||||
+ if (key == '\b' && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
cur_len--;
|
||||
diff --git a/grub-core/normal/auth.c b/grub-core/normal/auth.c
|
||||
index 6be678c0de1..c35ce972473 100644
|
||||
--- a/grub-core/normal/auth.c
|
||||
+++ b/grub-core/normal/auth.c
|
||||
@@ -172,7 +172,7 @@ grub_username_get (char buf[], unsigned buf_size)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == GRUB_TERM_BACKSPACE)
|
||||
+ if (key == GRUB_TERM_BACKSPACE && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
{
|
File diff suppressed because it is too large
Load Diff
@ -13,7 +13,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 9 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
index 3ff305b1d32..ba3d2930197 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -65,7 +65,7 @@ grub_chainloader_unload (void)
|
||||
@ -34,7 +34,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
|
||||
grub_loader_unset ();
|
||||
|
||||
@@ -506,10 +506,9 @@ grub_efi_get_media_file_path (grub_efi_device_path_t *dp)
|
||||
@@ -523,10 +523,9 @@ grub_efi_get_media_file_path (grub_efi_device_path_t *dp)
|
||||
static grub_efi_boolean_t
|
||||
handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
{
|
||||
@ -46,7 +46,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
char *buffer_aligned = NULL;
|
||||
grub_efi_uint32_t i;
|
||||
struct grub_pe32_section_table *section;
|
||||
@@ -520,8 +519,6 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
@@ -537,8 +536,6 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
int found_entry_point = 0;
|
||||
int rc;
|
||||
|
||||
@ -55,7 +55,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
rc = read_header (data, datasize, &context);
|
||||
if (rc < 0)
|
||||
{
|
||||
@@ -561,8 +558,8 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
@@ -578,8 +575,8 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
grub_dprintf ("chain", "image size is %08"PRIxGRUB_UINT64_T", datasize is %08x\n",
|
||||
context.image_size, datasize);
|
||||
|
||||
@ -66,7 +66,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
|
||||
if (efi_status != GRUB_EFI_SUCCESS)
|
||||
{
|
||||
@@ -794,14 +791,14 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
@@ -811,14 +808,14 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
|
||||
grub_dprintf ("chain", "entry_point returned %ld\n", efi_status);
|
||||
grub_memcpy (li, &li_bak, sizeof (grub_efi_loaded_image_t));
|
||||
@ -83,7 +83,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -809,10 +806,7 @@ error_exit:
|
||||
@@ -826,10 +823,7 @@ error_exit:
|
||||
static grub_err_t
|
||||
grub_secureboot_chainloader_unload (void)
|
||||
{
|
||||
@ -95,7 +95,7 @@ index 5aa3a5dc7dd..3a724a9fcbf 100644
|
||||
grub_free (file_path);
|
||||
grub_free (cmdline);
|
||||
cmdline = 0;
|
||||
@@ -1079,7 +1073,7 @@ fail:
|
||||
@@ -1096,7 +1090,7 @@ fail:
|
||||
grub_free (file_path);
|
||||
|
||||
if (address)
|
@ -8,14 +8,14 @@ This avoids syntax checkers getting confused about if it's llx or lx.
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/loader/efi/chainloader.c | 3 ++-
|
||||
include/grub/efi/api.h | 8 ++++++++
|
||||
2 files changed, 10 insertions(+), 1 deletion(-)
|
||||
include/grub/efi/api.h | 9 +++++++++
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index 3a724a9fcbf..f4ddbeda687 100644
|
||||
index ba3d2930197..47f5aa14817 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -789,7 +789,8 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
@@ -806,7 +806,8 @@ handle_image (void *data, grub_efi_uint32_t datasize)
|
||||
efi_status = efi_call_2 (entry_point, grub_efi_image_handle,
|
||||
grub_efi_system_table);
|
||||
|
||||
@ -26,13 +26,15 @@ index 3a724a9fcbf..f4ddbeda687 100644
|
||||
efi_status = grub_efi_free_pool (buffer);
|
||||
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index d97cdf98c80..955973ed484 100644
|
||||
index 117469450d3..99628801478 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -527,6 +527,14 @@ typedef grub_uint8_t grub_efi_char8_t;
|
||||
@@ -546,7 +546,16 @@ typedef grub_uint64_t grub_efi_uint64_t;
|
||||
typedef grub_uint8_t grub_efi_char8_t;
|
||||
typedef grub_uint16_t grub_efi_char16_t;
|
||||
|
||||
typedef grub_efi_intn_t grub_efi_status_t;
|
||||
+
|
||||
typedef grub_efi_uintn_t grub_efi_status_t;
|
||||
+/* Make grub_efi_status_t reasonably printable. */
|
||||
+#if GRUB_CPU_SIZEOF_VOID_P == 8
|
||||
+#define PRIxGRUB_EFI_STATUS "lx"
|
@ -8,10 +8,10 @@ Subject: [PATCH] don't use int for efi status
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index a1af9b46559..2cf6a5ad526 100644
|
||||
index 05d8237a9b2..ae9885edb84 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -166,7 +166,7 @@ grub_reboot (void)
|
||||
@@ -167,7 +167,7 @@ grub_reboot (void)
|
||||
void
|
||||
grub_exit (int retval)
|
||||
{
|
@ -1,61 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Lenny Szubowicz <lszubowi@redhat.com>
|
||||
Date: Mon, 29 Aug 2016 11:04:48 -0400
|
||||
Subject: [PATCH] Normalize slashes in tftp paths.
|
||||
|
||||
Some tftp servers do not handle multiple consecutive slashes correctly;
|
||||
this patch avoids sending tftp requests with non-normalized paths.
|
||||
|
||||
Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
|
||||
[msalter: fix malformed tftp packets]
|
||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
||||
---
|
||||
grub-core/net/tftp.c | 28 +++++++++++++++++++++++++---
|
||||
1 file changed, 25 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
||||
index a5c5038130a..e6d831f1bc9 100644
|
||||
--- a/grub-core/net/tftp.c
|
||||
+++ b/grub-core/net/tftp.c
|
||||
@@ -300,6 +300,25 @@ destroy_pq (tftp_data_t data)
|
||||
grub_priority_queue_destroy (data->pq);
|
||||
}
|
||||
|
||||
+/* Create a normalized copy of the filename.
|
||||
+ Compress any string of consecutive forward slashes to a single forward
|
||||
+ slash. */
|
||||
+static void
|
||||
+grub_normalize_filename (char *normalized, const char *filename)
|
||||
+{
|
||||
+ char *dest = normalized;
|
||||
+ char *src = filename;
|
||||
+
|
||||
+ while (*src != '\0')
|
||||
+ {
|
||||
+ if (src[0] == '/' && src[1] == '/')
|
||||
+ src++;
|
||||
+ else
|
||||
+ *dest++ = *src++;
|
||||
+ }
|
||||
+ *dest = '\0';
|
||||
+}
|
||||
+
|
||||
static grub_err_t
|
||||
tftp_open (struct grub_file *file, const char *filename)
|
||||
{
|
||||
@@ -337,9 +356,12 @@ tftp_open (struct grub_file *file, const char *filename)
|
||||
rrqlen = 0;
|
||||
|
||||
tftph->opcode = grub_cpu_to_be16_compile_time (TFTP_RRQ);
|
||||
- grub_strcpy (rrq, filename);
|
||||
- rrqlen += grub_strlen (filename) + 1;
|
||||
- rrq += grub_strlen (filename) + 1;
|
||||
+
|
||||
+ /* Copy and normalize the filename to work-around issues on some tftp
|
||||
+ servers when file names are being matched for remapping. */
|
||||
+ grub_normalize_filename (rrq, filename);
|
||||
+ rrqlen += grub_strlen (rrq) + 1;
|
||||
+ rrq += grub_strlen (rrq) + 1;
|
||||
|
||||
grub_strcpy (rrq, "octet");
|
||||
rrqlen += grub_strlen ("octet") + 1;
|
@ -8,7 +8,7 @@ Subject: [PATCH] make GRUB_MOD_INIT() declare its function prototypes.
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/include/grub/dl.h b/include/grub/dl.h
|
||||
index f03c03561a1..90dc9bb1017 100644
|
||||
index b3753c9ca26..91933b85f2c 100644
|
||||
--- a/include/grub/dl.h
|
||||
+++ b/include/grub/dl.h
|
||||
@@ -54,6 +54,7 @@ grub_mod_fini (void)
|
@ -16,10 +16,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 1 insertion(+), 11 deletions(-)
|
||||
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 3e718b9e3fb..37fcdac12cc 100644
|
||||
index c03214bdfcf..1e47491bc21 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -1182,18 +1182,8 @@ main (int argc, char *argv[])
|
||||
@@ -1190,18 +1190,8 @@ main (int argc, char *argv[])
|
||||
char *d;
|
||||
|
||||
is_guess = 1;
|
@ -9,10 +9,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 1519ec692fe..b6e4608db6e 100644
|
||||
index e9e73b815fb..c23b064be6c 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -136,6 +136,7 @@ linux_entry ()
|
||||
@@ -153,6 +153,7 @@ linux_entry_xsm ()
|
||||
else
|
||||
xen_rm_opts="no-real-mode edd=off"
|
||||
fi
|
||||
@ -20,7 +20,7 @@ index 1519ec692fe..b6e4608db6e 100644
|
||||
${xen_loader} ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
|
||||
echo '$(echo "$lmessage" | grub_quote)'
|
||||
${module_loader} ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
|
||||
@@ -149,6 +150,7 @@ EOF
|
||||
@@ -166,6 +167,7 @@ EOF
|
||||
done
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
echo '$(echo "$message" | grub_quote)'
|
||||
@ -28,7 +28,7 @@ index 1519ec692fe..b6e4608db6e 100644
|
||||
${module_loader} --nounzip $(echo $initrd_path)
|
||||
EOF
|
||||
fi
|
||||
@@ -225,13 +227,16 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
@@ -253,13 +255,16 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
|
||||
fi
|
||||
if ($grub_file --is-arm64-efi $current_xen); then
|
@ -20,7 +20,7 @@ index 36d2dedf47e..9d93ba88bac 100644
|
||||
+} GRUB_PACKED GRUB_ALIGNED(8);
|
||||
#endif /* ! GRUB_EFI_EMU_RUNTIME_HEADER */
|
||||
diff --git a/include/grub/types.h b/include/grub/types.h
|
||||
index 035a4b528fc..2fc4be4039a 100644
|
||||
index b36b26a79d4..30e57254889 100644
|
||||
--- a/include/grub/types.h
|
||||
+++ b/include/grub/types.h
|
||||
@@ -29,6 +29,7 @@
|
@ -1,42 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Salter <msalter@redhat.com>
|
||||
Date: Mon, 17 Apr 2017 08:44:29 -0400
|
||||
Subject: [PATCH] arm64: make sure fdt has #address-cells and #size-cells
|
||||
properties
|
||||
|
||||
Recent upstream changes to kexec-tools relies on #address-cells
|
||||
and #size-cells properties in the FDT. If grub2 needs to create
|
||||
a chosen node, it is likely because firmware did not provide one.
|
||||
In that case, set #address-cells and #size-cells properties to
|
||||
make sure they exist.
|
||||
---
|
||||
grub-core/loader/arm64/linux.c | 16 +++++++++++++++-
|
||||
1 file changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
|
||||
index 04994d5c67d..4c0a09c06de 100644
|
||||
--- a/grub-core/loader/arm64/linux.c
|
||||
+++ b/grub-core/loader/arm64/linux.c
|
||||
@@ -81,7 +81,21 @@ finalize_params_linux (void)
|
||||
|
||||
node = grub_fdt_find_subnode (fdt, 0, "chosen");
|
||||
if (node < 0)
|
||||
- node = grub_fdt_add_subnode (fdt, 0, "chosen");
|
||||
+ {
|
||||
+ /*
|
||||
+ * If we have to create a chosen node, Make sure we
|
||||
+ * have #address-cells and #size-cells properties.
|
||||
+ */
|
||||
+ retval = grub_fdt_set_prop32(fdt, 0, "#address-cells", 2);
|
||||
+ if (retval)
|
||||
+ goto failure;
|
||||
+
|
||||
+ retval = grub_fdt_set_prop32(fdt, 0, "#size-cells", 2);
|
||||
+ if (retval)
|
||||
+ goto failure;
|
||||
+
|
||||
+ node = grub_fdt_add_subnode (fdt, 0, "chosen");
|
||||
+ }
|
||||
|
||||
if (node < 1)
|
||||
goto failure;
|
397
0071-Add-BLS-support-to-grub-mkconfig.patch
Normal file
397
0071-Add-BLS-support-to-grub-mkconfig.patch
Normal file
@ -0,0 +1,397 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Fri, 9 Dec 2016 15:40:29 -0500
|
||||
Subject: [PATCH] Add BLS support to grub-mkconfig
|
||||
|
||||
GRUB now has BootLoaderSpec support, the user can choose to use this by
|
||||
setting GRUB_ENABLE_BLSCFG to true in /etc/default/grub. On this setup,
|
||||
the boot menu entries are not added to the grub.cfg, instead BLS config
|
||||
files are parsed by blscfg command and the entries created dynamically.
|
||||
|
||||
A 10_linux_bls grub.d snippet to generate menu entries from BLS files
|
||||
is also added that can be used on platforms where the bootloader doesn't
|
||||
have BLS support and only can parse a normal grub configuration file.
|
||||
|
||||
Portions of the 10_linux_bls were taken from the ostree-grub-generator
|
||||
script that's included in the OSTree project.
|
||||
|
||||
Fixes to support multi-devices and generate a BLS section even if no
|
||||
kernels are found in the boot directory were proposed by Yclept Nemo
|
||||
and Tom Gundersen respectively.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
---
|
||||
util/grub-mkconfig.8 | 4 +
|
||||
util/grub-mkconfig.in | 9 +-
|
||||
util/grub-mkconfig_lib.in | 22 ++++-
|
||||
util/grub.d/10_linux.in | 223 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
4 files changed, 252 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkconfig.8 b/util/grub-mkconfig.8
|
||||
index a2d1f577b9b..434fa4deda4 100644
|
||||
--- a/util/grub-mkconfig.8
|
||||
+++ b/util/grub-mkconfig.8
|
||||
@@ -13,5 +13,9 @@
|
||||
\fB--output\fR=\fIFILE\fR
|
||||
Write generated output to \fIFILE\fR.
|
||||
|
||||
+.TP
|
||||
+\fB--no-grubenv-update\fR
|
||||
+Do not update variables in the grubenv file.
|
||||
+
|
||||
.SH SEE ALSO
|
||||
.BR "info grub"
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index e671ce68aec..1a70b7ea056 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -50,6 +50,8 @@ grub_get_kernel_settings="${sbindir}/@grub_get_kernel_settings@"
|
||||
export TEXTDOMAIN=@PACKAGE@
|
||||
export TEXTDOMAINDIR="@localedir@"
|
||||
|
||||
+export GRUB_GRUBENV_UPDATE="yes"
|
||||
+
|
||||
. "${pkgdatadir}/grub-mkconfig_lib"
|
||||
|
||||
# Usage: usage
|
||||
@@ -59,6 +61,7 @@ usage () {
|
||||
gettext "Generate a grub config file"; echo
|
||||
echo
|
||||
print_option_help "-o, --output=$(gettext FILE)" "$(gettext "output generated config to FILE [default=stdout]")"
|
||||
+ print_option_help "--no-grubenv-update" "$(gettext "do not update variables in the grubenv file")"
|
||||
print_option_help "-h, --help" "$(gettext "print this message and exit")"
|
||||
print_option_help "-V, --version" "$(gettext "print the version information and exit")"
|
||||
echo
|
||||
@@ -94,6 +97,9 @@ do
|
||||
--output=*)
|
||||
grub_cfg=`echo "$option" | sed 's/--output=//'`
|
||||
;;
|
||||
+ --no-grubenv-update)
|
||||
+ GRUB_GRUBENV_UPDATE="no"
|
||||
+ ;;
|
||||
-*)
|
||||
gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
|
||||
usage
|
||||
@@ -256,7 +262,8 @@ export GRUB_DEFAULT \
|
||||
GRUB_OS_PROBER_SKIP_LIST \
|
||||
GRUB_DISABLE_SUBMENU \
|
||||
GRUB_DEFAULT_DTB \
|
||||
- SUSE_BTRFS_SNAPSHOT_BOOTING
|
||||
+ SUSE_BTRFS_SNAPSHOT_BOOTING \
|
||||
+ GRUB_ENABLE_BLSCFG
|
||||
|
||||
if test "x${grub_cfg}" != "x"; then
|
||||
rm -f "${grub_cfg}.new"
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index fafeac95061..d8bb4069360 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -30,6 +30,9 @@ fi
|
||||
if test "x$grub_file" = x; then
|
||||
grub_file="${bindir}/@grub_file@"
|
||||
fi
|
||||
+if test "x$grub_editenv" = x; then
|
||||
+ grub_editenv="${bindir}/@grub_editenv@"
|
||||
+fi
|
||||
if test "x$grub_mkrelpath" = x; then
|
||||
grub_mkrelpath="${bindir}/@grub_mkrelpath@"
|
||||
fi
|
||||
@@ -125,8 +128,19 @@ EOF
|
||||
fi
|
||||
}
|
||||
|
||||
+prepare_grub_to_access_device_with_variable ()
|
||||
+{
|
||||
+ device_variable="$1"
|
||||
+ shift
|
||||
+ prepare_grub_to_access_device "$@"
|
||||
+ unset "device_variable"
|
||||
+}
|
||||
+
|
||||
prepare_grub_to_access_device ()
|
||||
{
|
||||
+ if [ -z "$device_variable" ]; then
|
||||
+ device_variable="root"
|
||||
+ fi
|
||||
old_ifs="$IFS"
|
||||
IFS='
|
||||
'
|
||||
@@ -161,18 +175,18 @@ prepare_grub_to_access_device ()
|
||||
# otherwise set root as per value in device.map.
|
||||
fs_hint="`"${grub_probe}" --device $@ --target=compatibility_hint`"
|
||||
if [ "x$fs_hint" != x ]; then
|
||||
- echo "set root='$fs_hint'"
|
||||
+ echo "set ${device_variable}='$fs_hint'"
|
||||
fi
|
||||
if [ "x${GRUB_DISABLE_UUID}" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
|
||||
hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints=
|
||||
if [ "x$hints" != x ]; then
|
||||
echo "if [ x\$feature_platform_search_hint = xy ]; then"
|
||||
- echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
|
||||
+ echo " search --no-floppy --fs-uuid --set=${device_variable} ${hints} ${fs_uuid}"
|
||||
echo "else"
|
||||
- echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
|
||||
+ echo " search --no-floppy --fs-uuid --set=${device_variable} ${fs_uuid}"
|
||||
echo "fi"
|
||||
else
|
||||
- echo "search --no-floppy --fs-uuid --set=root ${fs_uuid}"
|
||||
+ echo "search --no-floppy --fs-uuid --set=${device_variable} ${fs_uuid}"
|
||||
fi
|
||||
fi
|
||||
IFS="$old_ifs"
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index cbfaca34cc7..68adb55d893 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -82,6 +82,223 @@ case x"$GRUB_FS" in
|
||||
;;
|
||||
esac
|
||||
|
||||
+populate_header_warn()
|
||||
+{
|
||||
+if [ "x${BLS_POPULATE_MENU}" = "xtrue" ]; then
|
||||
+ bls_parser="10_linux script"
|
||||
+else
|
||||
+ bls_parser="blscfg command"
|
||||
+fi
|
||||
+cat <<EOF
|
||||
+
|
||||
+# This section was generated by a script. Do not modify the generated file - all changes
|
||||
+# will be lost the next time file is regenerated. Instead edit the BootLoaderSpec files.
|
||||
+#
|
||||
+# The $bls_parser parses the BootLoaderSpec files stored in /boot/loader/entries and
|
||||
+# populates the boot menu. Please refer to the Boot Loader Specification documentation
|
||||
+# for the files format: https://www.freedesktop.org/wiki/Specifications/BootLoaderSpec/.
|
||||
+
|
||||
+EOF
|
||||
+}
|
||||
+
|
||||
+read_config()
|
||||
+{
|
||||
+ config_file=${1}
|
||||
+ title=""
|
||||
+ initrd=""
|
||||
+ options=""
|
||||
+ linux=""
|
||||
+ grub_arg=""
|
||||
+
|
||||
+ while read -r line
|
||||
+ do
|
||||
+ record=$(echo ${line} | cut -f 1 -d ' ')
|
||||
+ value=$(echo ${line} | cut -s -f2- -d ' ')
|
||||
+ case "${record}" in
|
||||
+ "title")
|
||||
+ title=${value}
|
||||
+ ;;
|
||||
+ "initrd")
|
||||
+ initrd=${value}
|
||||
+ ;;
|
||||
+ "linux")
|
||||
+ linux=${value}
|
||||
+ ;;
|
||||
+ "options")
|
||||
+ options=${value}
|
||||
+ ;;
|
||||
+ "grub_arg")
|
||||
+ grub_arg=${value}
|
||||
+ ;;
|
||||
+ esac
|
||||
+ done < ${config_file}
|
||||
+}
|
||||
+
|
||||
+blsdir="/boot/loader/entries"
|
||||
+
|
||||
+get_sorted_bls()
|
||||
+{
|
||||
+ if ! [ -d "${blsdir}" ] || ! [ -e /etc/machine-id ]; then
|
||||
+ return
|
||||
+ fi
|
||||
+
|
||||
+ read machine_id < /etc/machine-id
|
||||
+ if [ -z "${machine_id}" ]; then
|
||||
+ return
|
||||
+ fi
|
||||
+
|
||||
+ local IFS=$'\n'
|
||||
+
|
||||
+ files=($(for bls in ${blsdir}/${machine_id}-*.conf; do
|
||||
+ if ! [[ -e "${bls}" ]] ; then
|
||||
+ continue
|
||||
+ fi
|
||||
+ bls="${bls%.conf}"
|
||||
+ bls="${bls##*/}"
|
||||
+ echo "${bls}"
|
||||
+ done | ${kernel_sort} 2>/dev/null | tac)) || :
|
||||
+
|
||||
+ echo "${files[@]}"
|
||||
+}
|
||||
+
|
||||
+update_bls_cmdline()
|
||||
+{
|
||||
+ local cmdline="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||
+ local -a files=($(get_sorted_bls))
|
||||
+
|
||||
+ for bls in "${files[@]}"; do
|
||||
+ local options="${cmdline}"
|
||||
+ if [ -z "${bls##*debug*}" ]; then
|
||||
+ options="${options} ${GRUB_CMDLINE_LINUX_DEBUG}"
|
||||
+ fi
|
||||
+ options="$(echo "${options}" | sed -e 's/\//\\\//g')"
|
||||
+ sed -i -e "s/^options.*/options ${options}/" "${blsdir}/${bls}.conf"
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
+populate_menu()
|
||||
+{
|
||||
+ local -a files=($(get_sorted_bls))
|
||||
+
|
||||
+ gettext_printf "Generating boot entries from BLS files...\n" >&2
|
||||
+
|
||||
+ for bls in "${files[@]}"; do
|
||||
+ read_config "${blsdir}/${bls}.conf"
|
||||
+
|
||||
+ menu="${menu}menuentry '${title}' ${grub_arg} --id=${bls} {\n"
|
||||
+ menu="${menu}\t linux ${linux} ${options}\n"
|
||||
+ if [ -n "${initrd}" ] ; then
|
||||
+ menu="${menu}\t initrd ${boot_prefix}${initrd}\n"
|
||||
+ fi
|
||||
+ menu="${menu}}\n\n"
|
||||
+ done
|
||||
+ # The printf command seems to be more reliable across shells for special character (\n, \t) evaluation
|
||||
+ printf "$menu"
|
||||
+}
|
||||
+
|
||||
+# Make BLS the default if GRUB_ENABLE_BLSCFG was not set and grubby is not installed.
|
||||
+if [ -z "${GRUB_ENABLE_BLSCFG}" ] && [ -z "$(which new-kernel-pkg 2> /dev/null)" ]; then
|
||||
+ GRUB_ENABLE_BLSCFG="true"
|
||||
+fi
|
||||
+
|
||||
+if [ "x${GRUB_ENABLE_BLSCFG}" = "xtrue" ]; then
|
||||
+ if [ x$dirname = x/ ]; then
|
||||
+ if [ -z "${prepare_root_cache}" ]; then
|
||||
+ prepare_grub_to_access_device ${GRUB_DEVICE}
|
||||
+ fi
|
||||
+ else
|
||||
+ if [ -z "${prepare_boot_cache}" ]; then
|
||||
+ prepare_grub_to_access_device ${GRUB_DEVICE_BOOT}
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ if [ -d /sys/firmware/efi ]; then
|
||||
+ bootefi_device="`${grub_probe} --target=device /boot/efi/`"
|
||||
+ prepare_grub_to_access_device_with_variable boot ${bootefi_device}
|
||||
+ else
|
||||
+ boot_device="`${grub_probe} --target=device /boot/`"
|
||||
+ prepare_grub_to_access_device_with_variable boot ${boot_device}
|
||||
+ fi
|
||||
+
|
||||
+ arch="$(uname -m)"
|
||||
+ if [ "x${arch}" = "xppc64le" ] && [ -d /sys/firmware/opal ]; then
|
||||
+
|
||||
+ BLS_POPULATE_MENU="true"
|
||||
+ petitboot_path="/sys/firmware/devicetree/base/ibm,firmware-versions/petitboot"
|
||||
+
|
||||
+ if test -e ${petitboot_path}; then
|
||||
+ read -r -d '' petitboot_version < ${petitboot_path}
|
||||
+ petitboot_version="$(echo ${petitboot_version//v})"
|
||||
+
|
||||
+ if test -n ${petitboot_version}; then
|
||||
+ major_version="$(echo ${petitboot_version} | cut -d . -f1)"
|
||||
+ minor_version="$(echo ${petitboot_version} | cut -d . -f2)"
|
||||
+
|
||||
+ re='^[0-9]+$'
|
||||
+ if [[ $major_version =~ $re ]] && [[ $minor_version =~ $re ]] &&
|
||||
+ ([[ ${major_version} -gt 1 ]] ||
|
||||
+ [[ ${major_version} -eq 1 &&
|
||||
+ ${minor_version} -ge 8 ]]); then
|
||||
+ BLS_POPULATE_MENU="false"
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ populate_header_warn
|
||||
+
|
||||
+ cat << EOF
|
||||
+# The kernelopts variable should be defined in the grubenv file. But to ensure that menu
|
||||
+# entries populated from BootLoaderSpec files that use this variable work correctly even
|
||||
+# without a grubenv file, define a fallback kernelopts variable if this has not been set.
|
||||
+#
|
||||
+# The kernelopts variable in the grubenv file can be modified using the grubby tool or by
|
||||
+# executing the grub2-mkconfig tool. For the latter, the values of the GRUB_CMDLINE_LINUX
|
||||
+# and GRUB_CMDLINE_LINUX_DEFAULT options from /etc/default/grub file are used to set both
|
||||
+# the kernelopts variable in the grubenv file and the fallback kernelopts variable.
|
||||
+if [ -z "\${kernelopts}" ]; then
|
||||
+ set kernelopts="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||
+fi
|
||||
+EOF
|
||||
+
|
||||
+ update_bls_cmdline
|
||||
+
|
||||
+ if [ "x${BLS_POPULATE_MENU}" = "xtrue" ]; then
|
||||
+ populate_menu
|
||||
+ else
|
||||
+ cat << EOF
|
||||
+
|
||||
+insmod blscfg
|
||||
+blscfg
|
||||
+EOF
|
||||
+ fi
|
||||
+
|
||||
+ if [ "x${GRUB_GRUBENV_UPDATE}" = "xyes" ]; then
|
||||
+ blsdir="/boot/loader/entries"
|
||||
+ [ -d "${blsdir}" ] && GRUB_BLS_FS="$(${grub_probe} --target=fs ${blsdir})"
|
||||
+ if [ "x${GRUB_BLS_FS}" = "xbtrfs" ] || [ "x${GRUB_BLS_FS}" = "xzfs" ]; then
|
||||
+ blsdir=$(make_system_path_relative_to_its_root "${blsdir}")
|
||||
+ if [ "x${blsdir}" != "x/loader/entries" ] && [ "x${blsdir}" != "x/boot/loader/entries" ]; then
|
||||
+ ${grub_editenv} - set blsdir="${blsdir}"
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ if [ -n "${GRUB_EARLY_INITRD_LINUX_CUSTOM}" ]; then
|
||||
+ ${grub_editenv} - set early_initrd="${GRUB_EARLY_INITRD_LINUX_CUSTOM}"
|
||||
+ fi
|
||||
+
|
||||
+ if [ -n "${GRUB_DEFAULT_DTB}" ]; then
|
||||
+ ${grub_editenv} - set devicetree="${GRUB_DEFAULT_DTB}"
|
||||
+ fi
|
||||
+
|
||||
+ if [ -n "${GRUB_SAVEDEFAULT}" ]; then
|
||||
+ ${grub_editenv} - set save_default="${GRUB_SAVEDEFAULT}"
|
||||
+ fi
|
||||
+ fi
|
||||
+
|
||||
+ exit 0
|
||||
+fi
|
||||
+
|
||||
mktitle ()
|
||||
{
|
||||
local title_type
|
||||
@@ -121,6 +338,7 @@ linux_entry ()
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
fi
|
||||
+
|
||||
if [ x$type != xsimple ] ; then
|
||||
title=$(mktitle "$type" "$version")
|
||||
if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
|
||||
@@ -224,6 +442,7 @@ is_top_level=true
|
||||
while [ "x$list" != "x" ] ; do
|
||||
linux=`version_find_latest $list`
|
||||
gettext_printf "Found linux image: %s\n" "$linux" >&2
|
||||
+
|
||||
basename=`basename $linux`
|
||||
dirname=`dirname $linux`
|
||||
rel_dirname=`make_system_path_relative_to_its_root $dirname`
|
||||
@@ -262,7 +481,9 @@ while [ "x$list" != "x" ] ; do
|
||||
for i in ${initrd}; do
|
||||
initrd_display="${initrd_display} ${dirname}/${i}"
|
||||
done
|
||||
- gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
|
||||
+ if [ "x${GRUB_ENABLE_BLSCFG}" != "xtrue" ]; then
|
||||
+ gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
|
||||
+ fi
|
||||
fi
|
||||
|
||||
fdt=
|
@ -12,10 +12,10 @@ Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index 04371ac49f2..636f97e1ba1 100644
|
||||
index a3e215155bd..c60601b699d 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -1103,7 +1103,7 @@ static void __attribute__ ((noreturn))
|
||||
@@ -1201,7 +1201,7 @@ static void __attribute__ ((noreturn))
|
||||
grub_abort (void)
|
||||
{
|
||||
#ifndef GRUB_UTIL
|
@ -1,41 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 1 May 2017 11:19:40 -0400
|
||||
Subject: [PATCH] print more debug info in our module loader.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
grub-core/kern/efi/efi.c | 16 +++++++++++++---
|
||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 370ce03c5d7..a1af9b46559 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -313,13 +313,23 @@ grub_efi_modules_addr (void)
|
||||
}
|
||||
|
||||
if (i == coff_header->num_sections)
|
||||
- return 0;
|
||||
+ {
|
||||
+ grub_dprintf("sections", "section %d is last section; invalid.\n", i);
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
info = (struct grub_module_info *) ((char *) image->image_base
|
||||
+ section->virtual_address);
|
||||
- if (info->magic != GRUB_MODULE_MAGIC)
|
||||
- return 0;
|
||||
+ if (section->name[0] != '.' && info->magic != GRUB_MODULE_MAGIC)
|
||||
+ {
|
||||
+ grub_dprintf("sections",
|
||||
+ "section %d has bad magic %08x, should be %08x\n",
|
||||
+ i, info->magic, GRUB_MODULE_MAGIC);
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
+ grub_dprintf("sections", "returning section info for section %d: \"%s\"\n",
|
||||
+ i, section->name);
|
||||
return (grub_addr_t) info;
|
||||
}
|
||||
|
@ -18,10 +18,10 @@ to the kexec command line tool, to allow booting the selected menu entry.
|
||||
create mode 100644 grub-core/loader/emu/linux.c
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index ebc558019cd..528f76a8c8e 100644
|
||||
index 058c88ac3af..5354f9613d3 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -1802,7 +1802,6 @@ module = {
|
||||
@@ -1826,7 +1826,6 @@ module = {
|
||||
|
||||
common = loader/linux.c;
|
||||
common = lib/cmdline.c;
|
||||
@ -52,7 +52,7 @@ index 55ea5a11ccd..846fe9715ec 100644
|
||||
case ARGP_KEY_ARG:
|
||||
{
|
||||
diff --git a/grub-core/kern/emu/misc.c b/grub-core/kern/emu/misc.c
|
||||
index 19cd007d448..245b69cab51 100644
|
||||
index 0ff13bcaf8c..eeea092752d 100644
|
||||
--- a/grub-core/kern/emu/misc.c
|
||||
+++ b/grub-core/kern/emu/misc.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@ -72,7 +72,7 @@ index 19cd007d448..245b69cab51 100644
|
||||
}
|
||||
|
||||
void *
|
||||
@@ -142,6 +143,9 @@ void
|
||||
@@ -154,6 +155,9 @@ void
|
||||
__attribute__ ((noreturn))
|
||||
grub_exit (int rc)
|
||||
{
|
||||
@ -82,7 +82,7 @@ index 19cd007d448..245b69cab51 100644
|
||||
exit (rc < 0 ? 1 : rc);
|
||||
}
|
||||
#endif
|
||||
@@ -203,3 +207,15 @@ grub_util_load_image (const char *path, char *buf)
|
||||
@@ -215,3 +219,15 @@ grub_util_load_image (const char *path, char *buf)
|
||||
|
||||
fclose (fp);
|
||||
}
|
||||
@ -320,10 +320,10 @@ index cfb1e2b5661..a61568e36e9 100644
|
||||
char *
|
||||
grub_util_path_concat (size_t n, ...);
|
||||
diff --git a/include/grub/emu/misc.h b/include/grub/emu/misc.h
|
||||
index ce464cfd007..5ef4f79e689 100644
|
||||
index ff9c48a6490..01056954b96 100644
|
||||
--- a/include/grub/emu/misc.h
|
||||
+++ b/include/grub/emu/misc.h
|
||||
@@ -56,6 +56,9 @@ void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (
|
||||
@@ -57,6 +57,9 @@ void EXPORT_FUNC(grub_util_warn) (const char *fmt, ...) __attribute__ ((format (
|
||||
void EXPORT_FUNC(grub_util_info) (const char *fmt, ...) __attribute__ ((format (GNU_PRINTF, 1, 2)));
|
||||
void EXPORT_FUNC(grub_util_error) (const char *fmt, ...) __attribute__ ((format (GNU_PRINTF, 1, 2), noreturn));
|
||||
|
||||
@ -334,10 +334,10 @@ index ce464cfd007..5ef4f79e689 100644
|
||||
|
||||
#ifdef HAVE_DEVICE_MAPPER
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index c6ba5b2d763..5ff3afd62fa 100644
|
||||
index ee88e44e97a..80e7a83edf9 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -304,6 +304,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/net.h
|
||||
@@ -307,6 +307,7 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/net.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostdisk.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/emu/hostfile.h
|
||||
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
|
@ -11,13 +11,13 @@ Signed-off-by: Jan Hlavac <jhlavac@redhat.com>
|
||||
Makefile.util.def | 7 +
|
||||
util/grub-set-password.in | 2 +-
|
||||
util/grub-switch-to-blscfg.8 | 33 +++++
|
||||
util/grub-switch-to-blscfg.in | 314 ++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 355 insertions(+), 1 deletion(-)
|
||||
util/grub-switch-to-blscfg.in | 317 ++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 358 insertions(+), 1 deletion(-)
|
||||
create mode 100644 util/grub-switch-to-blscfg.8
|
||||
create mode 100644 util/grub-switch-to-blscfg.in
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index a61613656d1..f55473c76aa 100644
|
||||
index cdd2f51fe4b..afc4d7b0c3e 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -1364,6 +1364,13 @@ program = {
|
||||
@ -87,10 +87,10 @@ index 00000000000..9a886282976
|
||||
+.BR "info grub"
|
||||
diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in
|
||||
new file mode 100644
|
||||
index 00000000000..49b3985fadb
|
||||
index 00000000000..a851424beb2
|
||||
--- /dev/null
|
||||
+++ b/util/grub-switch-to-blscfg.in
|
||||
@@ -0,0 +1,314 @@
|
||||
@@ -0,0 +1,317 @@
|
||||
+#! /bin/sh
|
||||
+#
|
||||
+# Set a default boot entry for GRUB.
|
||||
@ -283,7 +283,7 @@ index 00000000000..49b3985fadb
|
||||
+mkbls() {
|
||||
+ local kernelver=$1 && shift
|
||||
+ local datetime=$1 && shift
|
||||
+ local bootprefix=$1 && shift
|
||||
+ local kernelopts=$1 && shift
|
||||
+
|
||||
+ local debugname=""
|
||||
+ local debugid=""
|
||||
@ -302,10 +302,9 @@ index 00000000000..49b3985fadb
|
||||
+ cat <<EOF
|
||||
+title ${NAME} (${kernelver}) ${VERSION}${debugname}
|
||||
+version ${kernelver}${debugid}
|
||||
+linux ${bootprefix}/vmlinuz-${kernelver}
|
||||
+initrd ${bootprefix}/initramfs-${kernelver}.img
|
||||
+options \$kernelopts
|
||||
+id ${ID}-${datetime}-${kernelver}
|
||||
+linux /vmlinuz-${kernelver}
|
||||
+initrd /initramfs-${kernelver}.img
|
||||
+options ${kernelopts}
|
||||
+grub_users \$grub_users
|
||||
+grub_arg --unrestricted
|
||||
+grub_class kernel${flavor}
|
||||
@ -329,28 +328,19 @@ index 00000000000..49b3985fadb
|
||||
+
|
||||
+ linux_relpath="$("${grub_mkrelpath}" "${linux_path}")"
|
||||
+ bootprefix="${linux_relpath%%"${linux}"}"
|
||||
+ cmdline="root=${LINUX_ROOT_DEVICE} ro ${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||
+
|
||||
+ if [ -f "${kernel_dir}/bls.conf" ] ; then
|
||||
+ cp -af "${kernel_dir}/bls.conf" "${bls_target}"
|
||||
+ if [ -n "${bootprefix}" ]; then
|
||||
+ sed -i -e "s,^\(linux[^ \t]*[ \t]\+\).*,\1${bootprefix}${linux},g" "${bls_target}"
|
||||
+ sed -i -e "/^initrd/ s,\([ \t]\+\)\([^ \t]\+\),\1${bootprefix}\2,g" "${bls_target}"
|
||||
+ fi
|
||||
+ else
|
||||
+ mkbls "${kernelver}" \
|
||||
+ "$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")" \
|
||||
+ "${bootprefix}" \
|
||||
+ >"${bls_target}"
|
||||
+ fi
|
||||
+ mkbls "${kernelver}" \
|
||||
+ "$(date -u +%Y%m%d%H%M%S -d "$(stat -c '%y' "${kernel_dir}")")" \
|
||||
+ "${bootprefix}" "${cmdline}" >"${bls_target}"
|
||||
+
|
||||
+ if [ "x$GRUB_LINUX_MAKE_DEBUG" = "xtrue" ]; then
|
||||
+ bls_debug="$(echo ${bls_target} | sed -e "s/${kernelver}/${kernelver}~debug/")"
|
||||
+ cp -aT "${bls_target}" "${bls_debug}"
|
||||
+ title="$(grep '^title[ \t]' "${bls_debug}" | sed -e 's/^title[ \t]*//')"
|
||||
+ blsid="$(grep '^id[ \t]' "${bls_debug}" | sed -e "s/\.${ARCH}/-debug.${arch}/")"
|
||||
+ options="$(echo "${cmdline} ${GRUB_CMDLINE_LINUX_DEBUG}" | sed -e 's/\//\\\//g')"
|
||||
+ sed -i -e "s/^title.*/title ${title}${GRUB_LINUX_DEBUG_TITLE_POSTFIX}/" "${bls_debug}"
|
||||
+ sed -i -e "s/^id.*/${blsid}/" "${bls_debug}"
|
||||
+ sed -i -e "s/^options.*/options \$kernelopts ${GRUB_CMDLINE_LINUX_DEBUG}/" "${bls_debug}"
|
||||
+ sed -i -e "s/^options.*/options ${options}/" "${bls_debug}"
|
||||
+ fi
|
||||
+ done
|
||||
+
|
||||
@ -359,6 +349,19 @@ index 00000000000..49b3985fadb
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+# The grub2 EFI binary is not copied to the ESP as a part of an ostree
|
||||
+# transaction. Make sure a grub2 version with BLS support is installed
|
||||
+# but only do this if the blsdir is not set, to make sure that the BLS
|
||||
+# parsing module will search for the BLS snippets in the default path.
|
||||
+if test -f /run/ostree-booted && test -d /sys/firmware/efi/efivars && \
|
||||
+ ! ${grub_editenv} - list | grep -q blsdir && \
|
||||
+ mountpoint -q /boot; then
|
||||
+ grub_binary="$(find /usr/lib/ostree-boot/efi/EFI/${EFIDIR}/ -name grub*.efi)"
|
||||
+ install -m 700 ${grub_binary} ${grubdir} || exit 1
|
||||
+ # Create a hidden file to indicate that grub2 now has BLS support.
|
||||
+ touch /boot/grub2/.grub2-blscfg-supported
|
||||
+fi
|
||||
+
|
||||
+GENERATE=0
|
||||
+if grep '^GRUB_ENABLE_BLSCFG=.*' "${etcdefaultgrub}" \
|
||||
+ | grep -vq '^GRUB_ENABLE_BLSCFG="*true"*\s*$' ; then
|
||||
@ -388,13 +391,13 @@ index 00000000000..49b3985fadb
|
||||
+
|
||||
+ if [ -n "${mod_dir}" ]; then
|
||||
+ for mod in blscfg increment; do
|
||||
+ cp ${prefix}/lib/grub/${mod_dir}/${mod}.mod ${grubdir}/$mod_dir/ || exit 1
|
||||
+ install -m 700 ${prefix}/lib/grub/${mod_dir}/${mod}.mod ${grubdir}/$mod_dir/ || exit 1
|
||||
+ done
|
||||
+ fi
|
||||
+
|
||||
+ cp -af "${GRUB_CONFIG_FILE}" "${GRUB_CONFIG_FILE}${backupsuffix}"
|
||||
+ if ! grub2-mkconfig -o "${GRUB_CONFIG_FILE}" ; then
|
||||
+ cp -af "${GRUB_CONFIG_FILE}${backupsuffix}" "${GRUB_CONFIG_FILE}"
|
||||
+ install -m 700 "${GRUB_CONFIG_FILE}${backupsuffix}" "${GRUB_CONFIG_FILE}"
|
||||
+ sed -i"${backupsuffix}" \
|
||||
+ -e 's,^GRUB_ENABLE_BLSCFG=.*,GRUB_ENABLE_BLSCFG=false,' \
|
||||
+ "${etcdefaultgrub}"
|
@ -38,10 +38,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
delete mode 100644 grub-core/lib/i386/backtrace.c
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index f55473c76aa..c13ca685ce1 100644
|
||||
index afc4d7b0c3e..41906486a71 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -49,6 +49,12 @@ library = {
|
||||
@@ -51,6 +51,12 @@ library = {
|
||||
common = grub-core/partmap/msdos.c;
|
||||
common = grub-core/fs/proc.c;
|
||||
common = grub-core/fs/archelp.c;
|
||||
@ -55,13 +55,13 @@ index f55473c76aa..c13ca685ce1 100644
|
||||
|
||||
library = {
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 528f76a8c8e..49c5dc4c3b7 100644
|
||||
index 5354f9613d3..4b7c45a7b06 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -140,6 +140,12 @@ kernel = {
|
||||
common = kern/rescue_parser.c;
|
||||
@@ -142,6 +142,12 @@ kernel = {
|
||||
common = kern/rescue_reader.c;
|
||||
common = kern/term.c;
|
||||
common = kern/verifiers.c;
|
||||
+ common = kern/backtrace.c;
|
||||
+
|
||||
+ x86 = kern/i386/backtrace.c;
|
||||
@ -71,7 +71,7 @@ index 528f76a8c8e..49c5dc4c3b7 100644
|
||||
|
||||
noemu = kern/compiler-rt.c;
|
||||
noemu = kern/mm.c;
|
||||
@@ -186,9 +192,6 @@ kernel = {
|
||||
@@ -188,9 +194,6 @@ kernel = {
|
||||
|
||||
softdiv = lib/division.c;
|
||||
|
||||
@ -81,7 +81,7 @@ index 528f76a8c8e..49c5dc4c3b7 100644
|
||||
i386 = kern/i386/dl.c;
|
||||
i386_xen = kern/i386/dl.c;
|
||||
i386_xen_pvh = kern/i386/dl.c;
|
||||
@@ -2376,15 +2379,12 @@ module = {
|
||||
@@ -2398,15 +2401,12 @@ module = {
|
||||
|
||||
module = {
|
||||
name = backtrace;
|
||||
@ -331,7 +331,7 @@ index 00000000000..4a82e865cc6
|
||||
+ grub_backtrace (skip + 1);
|
||||
+}
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index d7718d26abc..2e57e5e6829 100644
|
||||
index 7afb9e6f724..88d2077709e 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -124,6 +124,50 @@ grub_dl_resolve_symbol (const char *name)
|
||||
@ -559,11 +559,11 @@ index 0cd2a627231..937c1bc44cb 100644
|
||||
|
||||
#ifdef __sparc__
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index e758ab3416d..5c2d2039d0b 100644
|
||||
index c60601b699d..a432a6be54a 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -1110,15 +1110,15 @@ grub_xasprintf (const char *fmt, ...)
|
||||
}
|
||||
@@ -1197,15 +1197,15 @@ grub_printf_fmt_check (const char *fmt, const char *fmt_expected)
|
||||
|
||||
|
||||
/* Abort GRUB. This function does not return. */
|
||||
-static void __attribute__ ((noreturn))
|
||||
@ -584,7 +584,7 @@ index e758ab3416d..5c2d2039d0b 100644
|
||||
|
||||
#ifndef GRUB_UTIL
|
||||
if (grub_term_inputs)
|
||||
@@ -1145,6 +1145,7 @@ grub_fatal (const char *fmt, ...)
|
||||
@@ -1232,6 +1232,7 @@ grub_fatal (const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
@ -593,10 +593,10 @@ index e758ab3416d..5c2d2039d0b 100644
|
||||
grub_vprintf (_(fmt), ap);
|
||||
va_end (ap);
|
||||
diff --git a/grub-core/kern/mm.c b/grub-core/kern/mm.c
|
||||
index ee88ff61187..002cbfa4f3d 100644
|
||||
index c070afc621f..d8c8377578b 100644
|
||||
--- a/grub-core/kern/mm.c
|
||||
+++ b/grub-core/kern/mm.c
|
||||
@@ -95,13 +95,13 @@ get_header_from_pointer (void *ptr, grub_mm_header_t *p, grub_mm_region_t *r)
|
||||
@@ -97,13 +97,13 @@ get_header_from_pointer (void *ptr, grub_mm_header_t *p, grub_mm_region_t *r)
|
||||
break;
|
||||
|
||||
if (! *r)
|
||||
@ -787,10 +787,10 @@ index 395519762f0..275cf85e2d3 100644
|
||||
|
||||
#endif
|
||||
diff --git a/include/grub/dl.h b/include/grub/dl.h
|
||||
index 90dc9bb1017..4fe2b524f73 100644
|
||||
index 91933b85f2c..2f76e6b0437 100644
|
||||
--- a/include/grub/dl.h
|
||||
+++ b/include/grub/dl.h
|
||||
@@ -257,6 +257,8 @@ grub_dl_is_persistent (grub_dl_t mod)
|
||||
@@ -259,6 +259,8 @@ grub_dl_is_persistent (grub_dl_t mod)
|
||||
|
||||
#endif
|
||||
|
||||
@ -800,10 +800,10 @@ index 90dc9bb1017..4fe2b524f73 100644
|
||||
int isfunc, grub_dl_t mod);
|
||||
|
||||
diff --git a/include/grub/kernel.h b/include/grub/kernel.h
|
||||
index 133a37c8d03..e5a5f436709 100644
|
||||
index abbca5ea335..300a9766cda 100644
|
||||
--- a/include/grub/kernel.h
|
||||
+++ b/include/grub/kernel.h
|
||||
@@ -110,6 +110,9 @@ grub_addr_t grub_modules_get_end (void);
|
||||
@@ -111,6 +111,9 @@ grub_addr_t grub_modules_get_end (void);
|
||||
|
||||
#endif
|
||||
|
||||
@ -897,7 +897,7 @@ index 03b916f0534..701bf63abcf 100644
|
||||
ba codestart
|
||||
mov %o4, %o0
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index 5ff3afd62fa..d9ad30052f1 100644
|
||||
index 80e7a83edf9..f512573c0da 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -66,6 +66,7 @@ CLEANFILES += grub_script.yy.c grub_script.yy.h
|
@ -8,10 +8,10 @@ Subject: [PATCH] normal: don't draw our startup message if debug is set
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c
|
||||
index 2fe6743399d..f7ee912e715 100644
|
||||
index d5968797f4f..e349303c29b 100644
|
||||
--- a/grub-core/normal/main.c
|
||||
+++ b/grub-core/normal/main.c
|
||||
@@ -425,6 +425,9 @@ grub_normal_reader_init (int nested)
|
||||
@@ -432,6 +432,9 @@ grub_normal_reader_init (int nested)
|
||||
const char *msg_esc = _("ESC at any time exits.");
|
||||
char *msg_formatted;
|
||||
|
@ -10,10 +10,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
2 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index eb851b8d722..8ee18ba159a 100644
|
||||
index 6c16968ad9c..f4cfd06cbe6 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1414,7 +1414,15 @@ grub_PROG_TARGET_CC
|
||||
@@ -1470,7 +1470,15 @@ grub_PROG_TARGET_CC
|
||||
if test "x$TARGET_APPLE_LINKER" != x1 ; then
|
||||
grub_PROG_OBJCOPY_ABSOLUTE
|
||||
fi
|
||||
@ -30,7 +30,7 @@ index eb851b8d722..8ee18ba159a 100644
|
||||
if test "$platform" != emu && test "x$TARGET_APPLE_LINKER" != x1 ; then
|
||||
if test ! -z "$TARGET_IMG_LDSCRIPT"; then
|
||||
diff --git a/acinclude.m4 b/acinclude.m4
|
||||
index 78cdf6e1d01..242e829ff23 100644
|
||||
index 6e14bb553c6..21238fcfd03 100644
|
||||
--- a/acinclude.m4
|
||||
+++ b/acinclude.m4
|
||||
@@ -136,6 +136,25 @@ if test "x$grub_cv_prog_ld_build_id_none" = xyes; then
|
@ -13,10 +13,10 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index 5c2d2039d0b..0e89c483d5e 100644
|
||||
index a432a6be54a..9a2fae6398e 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -190,6 +190,24 @@ grub_real_dprintf (const char *file, const int line, const char *condition,
|
||||
@@ -191,6 +191,24 @@ grub_real_dprintf (const char *file, const int line, const char *condition,
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,10 +42,10 @@ index 5c2d2039d0b..0e89c483d5e 100644
|
||||
|
||||
int
|
||||
diff --git a/include/grub/misc.h b/include/grub/misc.h
|
||||
index 4a4f485a5f6..960097fbd06 100644
|
||||
index fd18e6320b8..3adc4036e3b 100644
|
||||
--- a/include/grub/misc.h
|
||||
+++ b/include/grub/misc.h
|
||||
@@ -372,6 +372,8 @@ void EXPORT_FUNC(grub_real_dprintf) (const char *file,
|
||||
@@ -345,6 +345,8 @@ void EXPORT_FUNC(grub_real_dprintf) (const char *file,
|
||||
const int line,
|
||||
const char *condition,
|
||||
const char *fmt, ...) __attribute__ ((format (GNU_PRINTF, 4, 5)));
|
@ -20,7 +20,7 @@ Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
4 files changed, 78 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/dl.c b/grub-core/kern/dl.c
|
||||
index 2e57e5e6829..6a5e7706143 100644
|
||||
index 88d2077709e..9557254035e 100644
|
||||
--- a/grub-core/kern/dl.c
|
||||
+++ b/grub-core/kern/dl.c
|
||||
@@ -501,6 +501,23 @@ grub_dl_find_section (Elf_Ehdr *e, const char *name)
|
||||
@ -47,7 +47,7 @@ index 2e57e5e6829..6a5e7706143 100644
|
||||
|
||||
/* Me, Vladimir Serbinenko, hereby I add this module check as per new
|
||||
GNU module policy. Note that this license check is informative only.
|
||||
@@ -644,6 +661,37 @@ grub_dl_relocate_symbols (grub_dl_t mod, void *ehdr)
|
||||
@@ -653,6 +670,37 @@ grub_dl_relocate_symbols (grub_dl_t mod, void *ehdr)
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
@ -85,7 +85,7 @@ index 2e57e5e6829..6a5e7706143 100644
|
||||
|
||||
/* Load a module from core memory. */
|
||||
grub_dl_t
|
||||
@@ -703,6 +751,8 @@ grub_dl_load_core_noinit (void *addr, grub_size_t size)
|
||||
@@ -712,6 +760,8 @@ grub_dl_load_core_noinit (void *addr, grub_size_t size)
|
||||
grub_dprintf ("modules", "module name: %s\n", mod->name);
|
||||
grub_dprintf ("modules", "init function: %p\n", mod->init);
|
||||
|
||||
@ -95,10 +95,10 @@ index 2e57e5e6829..6a5e7706143 100644
|
||||
{
|
||||
grub_dl_unload (mod);
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 2cf6a5ad526..19054b1465f 100644
|
||||
index ae9885edb84..d6a2fb57789 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -283,7 +283,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
@@ -296,7 +296,7 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
/* Search the mods section from the PE32/PE32+ image. This code uses
|
||||
a PE32 header, but should work with PE32+ as well. */
|
||||
grub_addr_t
|
||||
@ -107,7 +107,7 @@ index 2cf6a5ad526..19054b1465f 100644
|
||||
{
|
||||
grub_efi_loaded_image_t *image;
|
||||
struct grub_pe32_header *header;
|
||||
@@ -308,7 +308,7 @@ grub_efi_modules_addr (void)
|
||||
@@ -321,7 +321,7 @@ grub_efi_modules_addr (void)
|
||||
i < coff_header->num_sections;
|
||||
i++, section++)
|
||||
{
|
||||
@ -117,10 +117,10 @@ index 2cf6a5ad526..19054b1465f 100644
|
||||
}
|
||||
|
||||
diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
|
||||
index 71d2279a0c1..e6183a4c44d 100644
|
||||
index 6d39bd3ad29..2d12e6188fd 100644
|
||||
--- a/grub-core/kern/efi/init.c
|
||||
+++ b/grub-core/kern/efi/init.c
|
||||
@@ -59,10 +59,33 @@ grub_efi_env_init (void)
|
||||
@@ -115,10 +115,33 @@ grub_efi_env_init (void)
|
||||
grub_free (envblk_s.buf);
|
||||
}
|
||||
|
||||
@ -155,7 +155,7 @@ index 71d2279a0c1..e6183a4c44d 100644
|
||||
/* First of all, initialize the console so that GRUB can display
|
||||
messages. */
|
||||
grub_console_init ();
|
||||
@@ -74,6 +97,7 @@ grub_efi_init (void)
|
||||
@@ -142,6 +165,7 @@ grub_efi_init (void)
|
||||
0, 0, 0, NULL);
|
||||
|
||||
grub_efi_env_init ();
|
||||
@ -164,10 +164,10 @@ index 71d2279a0c1..e6183a4c44d 100644
|
||||
}
|
||||
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index 5e2b479daec..8ca3981d7a1 100644
|
||||
index 03f9a9d0118..2e0691454b1 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -132,7 +132,7 @@ grub_err_t grub_arch_efi_linux_check_image(struct linux_arch_kernel_header *lh);
|
||||
@@ -138,7 +138,7 @@ grub_err_t grub_arch_efi_linux_check_image(struct linux_arch_kernel_header *lh);
|
||||
grub_err_t grub_arch_efi_linux_boot_image(grub_addr_t addr, char *args);
|
||||
#endif
|
||||
|
@ -9,10 +9,10 @@ Subject: [PATCH] Fixup for newer compiler
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index ba99d04f8ed..9cd7f4bdf65 100644
|
||||
index 2b21cbaa67e..4cc86e9b79e 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -215,7 +215,7 @@ struct grub_btrfs_inode
|
||||
@@ -218,7 +218,7 @@ struct grub_btrfs_inode
|
||||
grub_uint64_t size;
|
||||
grub_uint8_t dummy2[0x70];
|
||||
struct grub_btrfs_time mtime;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user