Rebased to newer upstream for fedora-29
Signed-off-by: Peter Jones <pjones@redhat.com>
This commit is contained in:
parent
dd0009ec4d
commit
752ceb1640
23
0064-grub.texi-Fix-typo.patch
Normal file
23
0064-grub.texi-Fix-typo.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From 7108c0c86ea26f75dfba4e21e78bf8464c433143 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 11:36:50 +0200
|
||||
Subject: [PATCH] grub.texi: Fix typo
|
||||
|
||||
Reported by: Ori Avtalion <saltyhorse>
|
||||
---
|
||||
docs/grub.texi | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index a0c4b9e4e8e..137b894fa09 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -4643,7 +4643,7 @@ range 0-0xFF (prefix with @samp{0x} to enter it in hexadecimal).
|
||||
When enabled, this hides the selected partition by setting the @dfn{hidden}
|
||||
bit in its partition type code; when disabled, unhides the selected
|
||||
partition by clearing this bit. This is useful only when booting DOS or
|
||||
-Wwindows and multiple primary FAT partitions exist in one disk. See also
|
||||
+Windows and multiple primary FAT partitions exist in one disk. See also
|
||||
@ref{DOS/Windows}.
|
||||
@end table
|
||||
@end deffn
|
@ -0,0 +1,22 @@
|
||||
From 6662372053bb7f580cf1b6a56b11e1190d81a40c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 12:48:58 +0200
|
||||
Subject: [PATCH] hdparm: Depend on hexdump rather than having a second copy of
|
||||
hexdump.
|
||||
|
||||
---
|
||||
grub-core/Makefile.core.def | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index a65c27f7ff2..8d57a59a0e1 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -902,7 +902,6 @@ module = {
|
||||
module = {
|
||||
name = hdparm;
|
||||
common = commands/hdparm.c;
|
||||
- common = lib/hexdump.c;
|
||||
enable = pci;
|
||||
enable = mips_qemu_mips;
|
||||
};
|
617
0066-multiboot-disentangle-multiboot-and-multiboot2.patch
Normal file
617
0066-multiboot-disentangle-multiboot-and-multiboot2.patch
Normal file
@ -0,0 +1,617 @@
|
||||
From 21e4a6fa039bb7dc6be42e1e4c171ddc398b8431 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 12:51:26 +0200
|
||||
Subject: [PATCH] multiboot: disentangle multiboot and multiboot2.
|
||||
|
||||
Previously we had multiboot and multiboot2 declaring the same symbols.
|
||||
This can potentially lead to aliasing and strange behaviours when e.g.
|
||||
module instead of module2 is used with multiboot2.
|
||||
|
||||
Bug: #51137
|
||||
---
|
||||
grub-core/loader/i386/multiboot_mbi.c | 4 +--
|
||||
grub-core/loader/multiboot.c | 66 ++++++++++++++++++++--------------
|
||||
grub-core/loader/multiboot_elfxx.c | 14 ++++----
|
||||
grub-core/loader/multiboot_mbi2.c | 68 +++++++++++++++++------------------
|
||||
include/grub/i386/multiboot.h | 9 ++++-
|
||||
include/grub/mips/multiboot.h | 4 +--
|
||||
include/grub/multiboot.h | 11 +-----
|
||||
include/multiboot2.h | 4 +--
|
||||
8 files changed, 95 insertions(+), 85 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/multiboot_mbi.c b/grub-core/loader/i386/multiboot_mbi.c
|
||||
index fd7b41b0cad..dc98dbcae25 100644
|
||||
--- a/grub-core/loader/i386/multiboot_mbi.c
|
||||
+++ b/grub-core/loader/i386/multiboot_mbi.c
|
||||
@@ -239,7 +239,7 @@ grub_multiboot_get_mbi_size (void)
|
||||
ret = sizeof (struct multiboot_info) + ALIGN_UP (cmdline_size, 4)
|
||||
+ modcnt * sizeof (struct multiboot_mod_list) + total_modcmd
|
||||
+ ALIGN_UP (sizeof(PACKAGE_STRING), 4)
|
||||
- + grub_get_multiboot_mmap_count () * sizeof (struct multiboot_mmap_entry)
|
||||
+ + grub_multiboot_get_mmap_count () * sizeof (struct multiboot_mmap_entry)
|
||||
+ elf_sec_entsize * elf_sec_num
|
||||
+ 256 * sizeof (struct multiboot_color)
|
||||
#if GRUB_MACHINE_HAS_VBE || GRUB_MACHINE_HAS_VGA_TEXT
|
||||
@@ -542,7 +542,7 @@ grub_multiboot_make_mbi (grub_uint32_t *target)
|
||||
mbi->mods_count = 0;
|
||||
}
|
||||
|
||||
- mmap_size = grub_get_multiboot_mmap_count ()
|
||||
+ mmap_size = grub_multiboot_get_mmap_count ()
|
||||
* sizeof (struct multiboot_mmap_entry);
|
||||
grub_fill_multiboot_mmap ((struct multiboot_mmap_entry *) ptrorig);
|
||||
mbi->mmap_length = mmap_size;
|
||||
diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c
|
||||
index bd9d5b3e698..bd3dc1990e3 100644
|
||||
--- a/grub-core/loader/multiboot.c
|
||||
+++ b/grub-core/loader/multiboot.c
|
||||
@@ -28,7 +28,15 @@
|
||||
|
||||
#include <grub/loader.h>
|
||||
#include <grub/command.h>
|
||||
+#ifdef GRUB_USE_MULTIBOOT2
|
||||
+#include <grub/multiboot2.h>
|
||||
+#define GRUB_MULTIBOOT_CONSOLE_FRAMEBUFFER GRUB_MULTIBOOT2_CONSOLE_FRAMEBUFFER
|
||||
+#define GRUB_MULTIBOOT_CONSOLE_EGA_TEXT GRUB_MULTIBOOT2_CONSOLE_EGA_TEXT
|
||||
+#define GRUB_MULTIBOOT(x) grub_multiboot2_ ## x
|
||||
+#else
|
||||
#include <grub/multiboot.h>
|
||||
+#define GRUB_MULTIBOOT(x) grub_multiboot_ ## x
|
||||
+#endif
|
||||
#include <grub/cpu/multiboot.h>
|
||||
#include <grub/elf.h>
|
||||
#include <grub/aout.h>
|
||||
@@ -49,8 +57,8 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
#include <grub/efi/efi.h>
|
||||
#endif
|
||||
|
||||
-struct grub_relocator *grub_multiboot_relocator = NULL;
|
||||
-grub_uint32_t grub_multiboot_payload_eip;
|
||||
+struct grub_relocator *GRUB_MULTIBOOT (relocator) = NULL;
|
||||
+grub_uint32_t GRUB_MULTIBOOT (payload_eip);
|
||||
#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU)
|
||||
#define DEFAULT_VIDEO_MODE "text"
|
||||
#else
|
||||
@@ -78,7 +86,7 @@ count_hook (grub_uint64_t addr __attribute__ ((unused)),
|
||||
/* Return the length of the Multiboot mmap that will be needed to allocate
|
||||
our platform's map. */
|
||||
grub_uint32_t
|
||||
-grub_get_multiboot_mmap_count (void)
|
||||
+GRUB_MULTIBOOT (get_mmap_count) (void)
|
||||
{
|
||||
grub_size_t count = 0;
|
||||
|
||||
@@ -88,7 +96,7 @@ grub_get_multiboot_mmap_count (void)
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_set_video_mode (void)
|
||||
+GRUB_MULTIBOOT (set_video_mode) (void)
|
||||
{
|
||||
grub_err_t err;
|
||||
const char *modevar;
|
||||
@@ -164,19 +172,23 @@ static grub_err_t
|
||||
grub_multiboot_boot (void)
|
||||
{
|
||||
grub_err_t err;
|
||||
+
|
||||
+#ifdef GRUB_USE_MULTIBOOT2
|
||||
+ struct grub_relocator32_state state = MULTIBOOT2_INITIAL_STATE;
|
||||
+#else
|
||||
struct grub_relocator32_state state = MULTIBOOT_INITIAL_STATE;
|
||||
+#endif
|
||||
+ state.MULTIBOOT_ENTRY_REGISTER = GRUB_MULTIBOOT (payload_eip);
|
||||
|
||||
- state.MULTIBOOT_ENTRY_REGISTER = grub_multiboot_payload_eip;
|
||||
-
|
||||
- err = grub_multiboot_make_mbi (&state.MULTIBOOT_MBI_REGISTER);
|
||||
+ err = GRUB_MULTIBOOT (make_mbi) (&state.MULTIBOOT_MBI_REGISTER);
|
||||
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (grub_efi_is_finished)
|
||||
- normal_boot (grub_multiboot_relocator, state);
|
||||
+ normal_boot (GRUB_MULTIBOOT (relocator), state);
|
||||
else
|
||||
- efi_boot (grub_multiboot_relocator, state.MULTIBOOT_MBI_REGISTER);
|
||||
+ efi_boot (GRUB_MULTIBOOT (relocator), state.MULTIBOOT_MBI_REGISTER);
|
||||
|
||||
/* Not reached. */
|
||||
return GRUB_ERR_NONE;
|
||||
@@ -185,10 +197,10 @@ grub_multiboot_boot (void)
|
||||
static grub_err_t
|
||||
grub_multiboot_unload (void)
|
||||
{
|
||||
- grub_multiboot_free_mbi ();
|
||||
+ GRUB_MULTIBOOT (free_mbi) ();
|
||||
|
||||
- grub_relocator_unload (grub_multiboot_relocator);
|
||||
- grub_multiboot_relocator = NULL;
|
||||
+ grub_relocator_unload (GRUB_MULTIBOOT (relocator));
|
||||
+ GRUB_MULTIBOOT (relocator) = NULL;
|
||||
|
||||
grub_dl_unref (my_mod);
|
||||
|
||||
@@ -207,7 +219,7 @@ static grub_uint64_t highest_load;
|
||||
|
||||
/* Load ELF32 or ELF64. */
|
||||
grub_err_t
|
||||
-grub_multiboot_load_elf (mbi_load_data_t *mld)
|
||||
+GRUB_MULTIBOOT (load_elf) (mbi_load_data_t *mld)
|
||||
{
|
||||
if (grub_multiboot_is_elf32 (mld->buffer))
|
||||
return grub_multiboot_load_elf32 (mld);
|
||||
@@ -218,9 +230,9 @@ grub_multiboot_load_elf (mbi_load_data_t *mld)
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_set_console (int console_type, int accepted_consoles,
|
||||
- int width, int height, int depth,
|
||||
- int console_req)
|
||||
+GRUB_MULTIBOOT (set_console) (int console_type, int accepted_consoles,
|
||||
+ int width, int height, int depth,
|
||||
+ int console_req)
|
||||
{
|
||||
console_required = console_req;
|
||||
if (!(accepted_consoles
|
||||
@@ -313,19 +325,19 @@ grub_cmd_multiboot (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
/* Skip filename. */
|
||||
- grub_multiboot_init_mbi (argc - 1, argv + 1);
|
||||
+ GRUB_MULTIBOOT (init_mbi) (argc - 1, argv + 1);
|
||||
|
||||
- grub_relocator_unload (grub_multiboot_relocator);
|
||||
- grub_multiboot_relocator = grub_relocator_new ();
|
||||
+ grub_relocator_unload (GRUB_MULTIBOOT (relocator));
|
||||
+ GRUB_MULTIBOOT (relocator) = grub_relocator_new ();
|
||||
|
||||
- if (!grub_multiboot_relocator)
|
||||
+ if (!GRUB_MULTIBOOT (relocator))
|
||||
goto fail;
|
||||
|
||||
- err = grub_multiboot_load (file, argv[0]);
|
||||
+ err = GRUB_MULTIBOOT (load) (file, argv[0]);
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
- grub_multiboot_set_bootdev ();
|
||||
+ GRUB_MULTIBOOT (set_bootdev) ();
|
||||
|
||||
grub_loader_set (grub_multiboot_boot, grub_multiboot_unload, 0);
|
||||
|
||||
@@ -335,8 +347,8 @@ grub_cmd_multiboot (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
if (grub_errno != GRUB_ERR_NONE)
|
||||
{
|
||||
- grub_relocator_unload (grub_multiboot_relocator);
|
||||
- grub_multiboot_relocator = NULL;
|
||||
+ grub_relocator_unload (GRUB_MULTIBOOT (relocator));
|
||||
+ GRUB_MULTIBOOT (relocator) = NULL;
|
||||
grub_dl_unref (my_mod);
|
||||
}
|
||||
|
||||
@@ -368,7 +380,7 @@ grub_cmd_module (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
- if (!grub_multiboot_relocator)
|
||||
+ if (!GRUB_MULTIBOOT (relocator))
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
N_("you need to load the kernel first"));
|
||||
|
||||
@@ -389,7 +401,7 @@ grub_cmd_module (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (size)
|
||||
{
|
||||
grub_relocator_chunk_t ch;
|
||||
- err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,
|
||||
+ err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch,
|
||||
lowest_addr, (0xffffffff - size) + 1,
|
||||
size, MULTIBOOT_MOD_ALIGN,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE, 1);
|
||||
@@ -407,7 +419,7 @@ grub_cmd_module (grub_command_t cmd __attribute__ ((unused)),
|
||||
target = 0;
|
||||
}
|
||||
|
||||
- err = grub_multiboot_add_module (target, size, argc - 1, argv + 1);
|
||||
+ err = GRUB_MULTIBOOT (add_module) (target, size, argc - 1, argv + 1);
|
||||
if (err)
|
||||
{
|
||||
grub_file_close (file);
|
||||
diff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
|
||||
index 5e649ed2545..67daf5944b0 100644
|
||||
--- a/grub-core/loader/multiboot_elfxx.c
|
||||
+++ b/grub-core/loader/multiboot_elfxx.c
|
||||
@@ -104,13 +104,13 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
if (load_size > mld->max_addr || mld->min_addr > mld->max_addr - load_size)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid min/max address and/or load size");
|
||||
|
||||
- err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,
|
||||
+ err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch,
|
||||
mld->min_addr, mld->max_addr - load_size,
|
||||
load_size, mld->align ? mld->align : 1,
|
||||
mld->preference, mld->avoid_efi_boot_services);
|
||||
}
|
||||
else
|
||||
- err = grub_relocator_alloc_chunk_addr (grub_multiboot_relocator, &ch,
|
||||
+ err = grub_relocator_alloc_chunk_addr (GRUB_MULTIBOOT (relocator), &ch,
|
||||
mld->link_base_addr, load_size);
|
||||
|
||||
if (err)
|
||||
@@ -167,7 +167,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
if (phdr(i)->p_vaddr <= ehdr->e_entry
|
||||
&& phdr(i)->p_vaddr + phdr(i)->p_memsz > ehdr->e_entry)
|
||||
{
|
||||
- grub_multiboot_payload_eip = (ehdr->e_entry - phdr(i)->p_vaddr)
|
||||
+ GRUB_MULTIBOOT (payload_eip) = (ehdr->e_entry - phdr(i)->p_vaddr)
|
||||
+ phdr(i)->p_paddr;
|
||||
#ifdef MULTIBOOT_LOAD_ELF64
|
||||
# ifdef __mips
|
||||
@@ -191,7 +191,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
#if defined (__i386__) || defined (__x86_64__)
|
||||
|
||||
#elif defined (__mips)
|
||||
- grub_multiboot_payload_eip |= 0x80000000;
|
||||
+ GRUB_MULTIBOOT (payload_eip) |= 0x80000000;
|
||||
#else
|
||||
#error Please complete this
|
||||
#endif
|
||||
@@ -238,7 +238,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
if (sh->sh_size == 0)
|
||||
continue;
|
||||
|
||||
- err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch, 0,
|
||||
+ err = grub_relocator_alloc_chunk_align (GRUB_MULTIBOOT (relocator), &ch, 0,
|
||||
(0xffffffff - sh->sh_size) + 1,
|
||||
sh->sh_size, sh->sh_addralign,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE,
|
||||
@@ -264,8 +264,8 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
}
|
||||
sh->sh_addr = target;
|
||||
}
|
||||
- grub_multiboot_add_elfsyms (ehdr->e_shnum, ehdr->e_shentsize,
|
||||
- ehdr->e_shstrndx, shdr);
|
||||
+ GRUB_MULTIBOOT (add_elfsyms) (ehdr->e_shnum, ehdr->e_shentsize,
|
||||
+ ehdr->e_shstrndx, shdr);
|
||||
}
|
||||
|
||||
#undef phdr
|
||||
diff --git a/grub-core/loader/multiboot_mbi2.c b/grub-core/loader/multiboot_mbi2.c
|
||||
index b0679a9f6c9..4df6595954d 100644
|
||||
--- a/grub-core/loader/multiboot_mbi2.c
|
||||
+++ b/grub-core/loader/multiboot_mbi2.c
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <grub/machine/apm.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#endif
|
||||
-#include <grub/multiboot.h>
|
||||
+#include <grub/multiboot2.h>
|
||||
#include <grub/cpu/multiboot.h>
|
||||
#include <grub/cpu/relocator.h>
|
||||
#include <grub/disk.h>
|
||||
@@ -71,7 +71,7 @@ static int keep_bs = 0;
|
||||
static grub_uint32_t load_base_addr;
|
||||
|
||||
void
|
||||
-grub_multiboot_add_elfsyms (grub_size_t num, grub_size_t entsize,
|
||||
+grub_multiboot2_add_elfsyms (grub_size_t num, grub_size_t entsize,
|
||||
unsigned shndx, void *data)
|
||||
{
|
||||
elf_sec_num = num;
|
||||
@@ -90,17 +90,17 @@ find_header (grub_properly_aligned_t *buffer, grub_ssize_t len)
|
||||
((char *) header <= (char *) buffer + len - 12);
|
||||
header = (struct multiboot_header *) ((grub_uint32_t *) header + MULTIBOOT_HEADER_ALIGN / 4))
|
||||
{
|
||||
- if (header->magic == MULTIBOOT_HEADER_MAGIC
|
||||
+ if (header->magic == MULTIBOOT2_HEADER_MAGIC
|
||||
&& !(header->magic + header->architecture
|
||||
+ header->header_length + header->checksum)
|
||||
- && header->architecture == MULTIBOOT_ARCHITECTURE_CURRENT)
|
||||
+ && header->architecture == MULTIBOOT2_ARCHITECTURE_CURRENT)
|
||||
return header;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
+grub_multiboot2_load (grub_file_t file, const char *filename)
|
||||
{
|
||||
grub_ssize_t len;
|
||||
struct multiboot_header *header;
|
||||
@@ -112,7 +112,7 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
grub_addr_t entry = 0, efi_entry = 0;
|
||||
grub_uint32_t console_required = 0;
|
||||
struct multiboot_header_tag_framebuffer *fbtag = NULL;
|
||||
- int accepted_consoles = GRUB_MULTIBOOT_CONSOLE_EGA_TEXT;
|
||||
+ int accepted_consoles = GRUB_MULTIBOOT2_CONSOLE_EGA_TEXT;
|
||||
mbi_load_data_t mld;
|
||||
|
||||
mld.mbi_ver = 2;
|
||||
@@ -210,7 +210,7 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
case MULTIBOOT_HEADER_TAG_CONSOLE_FLAGS:
|
||||
if (!(((struct multiboot_header_tag_console_flags *) tag)->console_flags
|
||||
& MULTIBOOT_CONSOLE_FLAGS_EGA_TEXT_SUPPORTED))
|
||||
- accepted_consoles &= ~GRUB_MULTIBOOT_CONSOLE_EGA_TEXT;
|
||||
+ accepted_consoles &= ~GRUB_MULTIBOOT2_CONSOLE_EGA_TEXT;
|
||||
if (((struct multiboot_header_tag_console_flags *) tag)->console_flags
|
||||
& MULTIBOOT_CONSOLE_FLAGS_CONSOLE_REQUIRED)
|
||||
console_required = 1;
|
||||
@@ -218,7 +218,7 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
|
||||
case MULTIBOOT_HEADER_TAG_FRAMEBUFFER:
|
||||
fbtag = (struct multiboot_header_tag_framebuffer *) tag;
|
||||
- accepted_consoles |= GRUB_MULTIBOOT_CONSOLE_FRAMEBUFFER;
|
||||
+ accepted_consoles |= GRUB_MULTIBOOT2_CONSOLE_FRAMEBUFFER;
|
||||
break;
|
||||
|
||||
case MULTIBOOT_HEADER_TAG_RELOCATABLE:
|
||||
@@ -295,13 +295,13 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid min/max address and/or load size");
|
||||
}
|
||||
|
||||
- err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,
|
||||
+ err = grub_relocator_alloc_chunk_align (grub_multiboot2_relocator, &ch,
|
||||
mld.min_addr, mld.max_addr - code_size,
|
||||
code_size, mld.align ? mld.align : 1,
|
||||
mld.preference, keep_bs);
|
||||
}
|
||||
else
|
||||
- err = grub_relocator_alloc_chunk_addr (grub_multiboot_relocator,
|
||||
+ err = grub_relocator_alloc_chunk_addr (grub_multiboot2_relocator,
|
||||
&ch, load_addr, code_size);
|
||||
if (err)
|
||||
{
|
||||
@@ -343,7 +343,7 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
mld.file = file;
|
||||
mld.filename = filename;
|
||||
mld.avoid_efi_boot_services = keep_bs;
|
||||
- err = grub_multiboot_load_elf (&mld);
|
||||
+ err = grub_multiboot2_load_elf (&mld);
|
||||
if (err)
|
||||
{
|
||||
grub_free (mld.buffer);
|
||||
@@ -354,9 +354,9 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
load_base_addr = mld.load_base_addr;
|
||||
|
||||
if (keep_bs && efi_entry_specified)
|
||||
- grub_multiboot_payload_eip = efi_entry;
|
||||
+ grub_multiboot2_payload_eip = efi_entry;
|
||||
else if (entry_specified)
|
||||
- grub_multiboot_payload_eip = entry;
|
||||
+ grub_multiboot2_payload_eip = entry;
|
||||
|
||||
if (mld.relocatable)
|
||||
{
|
||||
@@ -370,20 +370,20 @@ grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
* 64-bit int here.
|
||||
*/
|
||||
if (mld.load_base_addr >= mld.link_base_addr)
|
||||
- grub_multiboot_payload_eip += mld.load_base_addr - mld.link_base_addr;
|
||||
+ grub_multiboot2_payload_eip += mld.load_base_addr - mld.link_base_addr;
|
||||
else
|
||||
- grub_multiboot_payload_eip -= mld.link_base_addr - mld.load_base_addr;
|
||||
+ grub_multiboot2_payload_eip -= mld.link_base_addr - mld.load_base_addr;
|
||||
}
|
||||
|
||||
if (fbtag)
|
||||
- err = grub_multiboot_set_console (GRUB_MULTIBOOT_CONSOLE_FRAMEBUFFER,
|
||||
- accepted_consoles,
|
||||
- fbtag->width, fbtag->height,
|
||||
- fbtag->depth, console_required);
|
||||
+ err = grub_multiboot2_set_console (GRUB_MULTIBOOT2_CONSOLE_FRAMEBUFFER,
|
||||
+ accepted_consoles,
|
||||
+ fbtag->width, fbtag->height,
|
||||
+ fbtag->depth, console_required);
|
||||
else
|
||||
- err = grub_multiboot_set_console (GRUB_MULTIBOOT_CONSOLE_EGA_TEXT,
|
||||
- accepted_consoles,
|
||||
- 0, 0, 0, console_required);
|
||||
+ err = grub_multiboot2_set_console (GRUB_MULTIBOOT2_CONSOLE_EGA_TEXT,
|
||||
+ accepted_consoles,
|
||||
+ 0, 0, 0, console_required);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -459,7 +459,7 @@ net_size (void)
|
||||
}
|
||||
|
||||
static grub_size_t
|
||||
-grub_multiboot_get_mbi_size (void)
|
||||
+grub_multiboot2_get_mbi_size (void)
|
||||
{
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
if (!keep_bs && !efi_mmap_size)
|
||||
@@ -478,7 +478,7 @@ grub_multiboot_get_mbi_size (void)
|
||||
+ ALIGN_UP (sizeof (struct multiboot_tag_elf_sections), MULTIBOOT_TAG_ALIGN)
|
||||
+ ALIGN_UP (elf_sec_entsize * elf_sec_num, MULTIBOOT_TAG_ALIGN)
|
||||
+ ALIGN_UP ((sizeof (struct multiboot_tag_mmap)
|
||||
- + grub_get_multiboot_mmap_count ()
|
||||
+ + grub_multiboot2_get_mmap_count ()
|
||||
* sizeof (struct multiboot_mmap_entry)), MULTIBOOT_TAG_ALIGN)
|
||||
+ ALIGN_UP (sizeof (struct multiboot_tag_framebuffer), MULTIBOOT_TAG_ALIGN)
|
||||
+ ALIGN_UP (sizeof (struct multiboot_tag_old_acpi)
|
||||
@@ -522,7 +522,7 @@ grub_fill_multiboot_mmap (struct multiboot_tag_mmap *tag)
|
||||
|
||||
tag->type = MULTIBOOT_TAG_TYPE_MMAP;
|
||||
tag->size = sizeof (struct multiboot_tag_mmap)
|
||||
- + sizeof (struct multiboot_mmap_entry) * grub_get_multiboot_mmap_count ();
|
||||
+ + sizeof (struct multiboot_mmap_entry) * grub_multiboot2_get_mmap_count ();
|
||||
tag->entry_size = sizeof (struct multiboot_mmap_entry);
|
||||
tag->entry_version = 0;
|
||||
|
||||
@@ -588,7 +588,7 @@ retrieve_video_parameters (grub_properly_aligned_t **ptrorig)
|
||||
struct multiboot_tag_framebuffer *tag
|
||||
= (struct multiboot_tag_framebuffer *) *ptrorig;
|
||||
|
||||
- err = grub_multiboot_set_video_mode ();
|
||||
+ err = grub_multiboot2_set_video_mode ();
|
||||
if (err)
|
||||
{
|
||||
grub_print_error ();
|
||||
@@ -731,7 +731,7 @@ retrieve_video_parameters (grub_properly_aligned_t **ptrorig)
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_make_mbi (grub_uint32_t *target)
|
||||
+grub_multiboot2_make_mbi (grub_uint32_t *target)
|
||||
{
|
||||
grub_properly_aligned_t *ptrorig;
|
||||
grub_properly_aligned_t *mbistart;
|
||||
@@ -739,11 +739,11 @@ grub_multiboot_make_mbi (grub_uint32_t *target)
|
||||
grub_size_t bufsize;
|
||||
grub_relocator_chunk_t ch;
|
||||
|
||||
- bufsize = grub_multiboot_get_mbi_size ();
|
||||
+ bufsize = grub_multiboot2_get_mbi_size ();
|
||||
|
||||
COMPILE_TIME_ASSERT (MULTIBOOT_TAG_ALIGN % sizeof (grub_properly_aligned_t) == 0);
|
||||
|
||||
- err = grub_relocator_alloc_chunk_align (grub_multiboot_relocator, &ch,
|
||||
+ err = grub_relocator_alloc_chunk_align (grub_multiboot2_relocator, &ch,
|
||||
0, 0xffffffff - bufsize,
|
||||
bufsize, MULTIBOOT_TAG_ALIGN,
|
||||
GRUB_RELOCATOR_PREFERENCE_NONE, 1);
|
||||
@@ -1039,7 +1039,7 @@ grub_multiboot_make_mbi (grub_uint32_t *target)
|
||||
}
|
||||
|
||||
void
|
||||
-grub_multiboot_free_mbi (void)
|
||||
+grub_multiboot2_free_mbi (void)
|
||||
{
|
||||
struct module *cur, *next;
|
||||
|
||||
@@ -1061,11 +1061,11 @@ grub_multiboot_free_mbi (void)
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_init_mbi (int argc, char *argv[])
|
||||
+grub_multiboot2_init_mbi (int argc, char *argv[])
|
||||
{
|
||||
grub_ssize_t len = 0;
|
||||
|
||||
- grub_multiboot_free_mbi ();
|
||||
+ grub_multiboot2_free_mbi ();
|
||||
|
||||
len = grub_loader_cmdline_size (argc, argv);
|
||||
|
||||
@@ -1081,7 +1081,7 @@ grub_multiboot_init_mbi (int argc, char *argv[])
|
||||
}
|
||||
|
||||
grub_err_t
|
||||
-grub_multiboot_add_module (grub_addr_t start, grub_size_t size,
|
||||
+grub_multiboot2_add_module (grub_addr_t start, grub_size_t size,
|
||||
int argc, char *argv[])
|
||||
{
|
||||
struct module *newmod;
|
||||
@@ -1119,7 +1119,7 @@ grub_multiboot_add_module (grub_addr_t start, grub_size_t size,
|
||||
}
|
||||
|
||||
void
|
||||
-grub_multiboot_set_bootdev (void)
|
||||
+grub_multiboot2_set_bootdev (void)
|
||||
{
|
||||
grub_device_t dev;
|
||||
|
||||
diff --git a/include/grub/i386/multiboot.h b/include/grub/i386/multiboot.h
|
||||
index 807a1de27f9..9cd97dfced8 100644
|
||||
--- a/include/grub/i386/multiboot.h
|
||||
+++ b/include/grub/i386/multiboot.h
|
||||
@@ -19,6 +19,13 @@
|
||||
#ifndef GRUB_MULTIBOOT_CPU_HEADER
|
||||
#define GRUB_MULTIBOOT_CPU_HEADER 1
|
||||
|
||||
+#define MULTIBOOT2_INITIAL_STATE { .eax = MULTIBOOT2_BOOTLOADER_MAGIC, \
|
||||
+ .ecx = 0, \
|
||||
+ .edx = 0, \
|
||||
+ /* Set esp to some random location in low memory to avoid breaking */ \
|
||||
+ /* non-compliant kernels. */ \
|
||||
+ .esp = 0x7ff00 \
|
||||
+ }
|
||||
#define MULTIBOOT_INITIAL_STATE { .eax = MULTIBOOT_BOOTLOADER_MAGIC, \
|
||||
.ecx = 0, \
|
||||
.edx = 0, \
|
||||
@@ -28,7 +35,7 @@
|
||||
}
|
||||
#define MULTIBOOT_ENTRY_REGISTER eip
|
||||
#define MULTIBOOT_MBI_REGISTER ebx
|
||||
-#define MULTIBOOT_ARCHITECTURE_CURRENT MULTIBOOT_ARCHITECTURE_I386
|
||||
+#define MULTIBOOT2_ARCHITECTURE_CURRENT MULTIBOOT2_ARCHITECTURE_I386
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
#ifdef __x86_64__
|
||||
diff --git a/include/grub/mips/multiboot.h b/include/grub/mips/multiboot.h
|
||||
index 4aebf29e732..c4eee2dd01b 100644
|
||||
--- a/include/grub/mips/multiboot.h
|
||||
+++ b/include/grub/mips/multiboot.h
|
||||
@@ -19,11 +19,11 @@
|
||||
#ifndef GRUB_MULTIBOOT_CPU_HEADER
|
||||
#define GRUB_MULTIBOOT_CPU_HEADER 1
|
||||
|
||||
-#define MULTIBOOT_INITIAL_STATE { .gpr[4] = MULTIBOOT_BOOTLOADER_MAGIC, \
|
||||
+#define MULTIBOOT2_INITIAL_STATE { .gpr[4] = MULTIBOOT2_BOOTLOADER_MAGIC, \
|
||||
.jumpreg = 1 }
|
||||
#define MULTIBOOT_ENTRY_REGISTER gpr[1]
|
||||
#define MULTIBOOT_MBI_REGISTER gpr[5]
|
||||
-#define MULTIBOOT_ARCHITECTURE_CURRENT MULTIBOOT_ARCHITECTURE_MIPS32
|
||||
+#define MULTIBOOT2_ARCHITECTURE_CURRENT MULTIBOOT_ARCHITECTURE_MIPS32
|
||||
|
||||
#define MULTIBOOT_ELF32_MACHINE EM_MIPS
|
||||
#define MULTIBOOT_ELF64_MACHINE EM_MIPS
|
||||
diff --git a/include/grub/multiboot.h b/include/grub/multiboot.h
|
||||
index c96492bb5fa..bd0a9873e6c 100644
|
||||
--- a/include/grub/multiboot.h
|
||||
+++ b/include/grub/multiboot.h
|
||||
@@ -22,19 +22,11 @@
|
||||
|
||||
#include <grub/file.h>
|
||||
|
||||
-#ifdef GRUB_USE_MULTIBOOT2
|
||||
-#include <multiboot2.h>
|
||||
-/* Same thing as far as our loader is concerned. */
|
||||
-#define MULTIBOOT_BOOTLOADER_MAGIC MULTIBOOT2_BOOTLOADER_MAGIC
|
||||
-#define MULTIBOOT_HEADER_MAGIC MULTIBOOT2_HEADER_MAGIC
|
||||
-#else
|
||||
#include <multiboot.h>
|
||||
-#endif
|
||||
|
||||
#include <grub/types.h>
|
||||
#include <grub/err.h>
|
||||
|
||||
-#ifndef GRUB_USE_MULTIBOOT2
|
||||
typedef enum
|
||||
{
|
||||
GRUB_MULTIBOOT_QUIRKS_NONE = 0,
|
||||
@@ -42,7 +34,6 @@ typedef enum
|
||||
GRUB_MULTIBOOT_QUIRK_MODULES_AFTER_KERNEL = 2
|
||||
} grub_multiboot_quirks_t;
|
||||
extern grub_multiboot_quirks_t grub_multiboot_quirks;
|
||||
-#endif
|
||||
|
||||
extern struct grub_relocator *grub_multiboot_relocator;
|
||||
|
||||
@@ -60,7 +51,7 @@ void
|
||||
grub_multiboot_add_elfsyms (grub_size_t num, grub_size_t entsize,
|
||||
unsigned shndx, void *data);
|
||||
|
||||
-grub_uint32_t grub_get_multiboot_mmap_count (void);
|
||||
+grub_uint32_t grub_multiboot_get_mmap_count (void);
|
||||
grub_err_t grub_multiboot_set_video_mode (void);
|
||||
|
||||
/* FIXME: support coreboot as well. */
|
||||
diff --git a/include/multiboot2.h b/include/multiboot2.h
|
||||
index 5a3db5a7cae..5693923c014 100644
|
||||
--- a/include/multiboot2.h
|
||||
+++ b/include/multiboot2.h
|
||||
@@ -75,8 +75,8 @@
|
||||
#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64 9
|
||||
#define MULTIBOOT_HEADER_TAG_RELOCATABLE 10
|
||||
|
||||
-#define MULTIBOOT_ARCHITECTURE_I386 0
|
||||
-#define MULTIBOOT_ARCHITECTURE_MIPS32 4
|
||||
+#define MULTIBOOT2_ARCHITECTURE_I386 0
|
||||
+#define MULTIBOOT2_ARCHITECTURE_MIPS32 4
|
||||
#define MULTIBOOT_HEADER_TAG_OPTIONAL 1
|
||||
|
||||
#define MULTIBOOT_LOAD_PREFERENCE_NONE 0
|
64
0067-Fix-symbols-appearing-in-several-modules-in-linux.patch
Normal file
64
0067-Fix-symbols-appearing-in-several-modules-in-linux.patch
Normal file
@ -0,0 +1,64 @@
|
||||
From 26e5aea9418aab83df0debd0c672086fa9f2d9c8 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 14:09:30 +0200
|
||||
Subject: [PATCH] Fix symbols appearing in several modules in linux*.
|
||||
|
||||
If same symbol is provided by 2 modules its semantics are undefined.
|
||||
Avoid this by depending rather than double-including files.
|
||||
---
|
||||
grub-core/Makefile.core.def | 7 +------
|
||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 8d57a59a0e1..66144222c5f 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -770,6 +770,7 @@ module = {
|
||||
module = {
|
||||
name = boot;
|
||||
common = commands/boot.c;
|
||||
+ common = lib/cmdline.c;
|
||||
i386_pc = lib/i386/pc/biosnum.c;
|
||||
enable = x86;
|
||||
enable = emu;
|
||||
@@ -1630,8 +1631,6 @@ module = {
|
||||
module = {
|
||||
name = linux16;
|
||||
common = loader/i386/pc/linux.c;
|
||||
- common = loader/linux.c;
|
||||
- common = lib/cmdline.c;
|
||||
enable = x86;
|
||||
};
|
||||
|
||||
@@ -1666,7 +1665,6 @@ module = {
|
||||
cppflags = "-DGRUB_USE_MULTIBOOT2";
|
||||
|
||||
common = loader/multiboot.c;
|
||||
- common = lib/cmdline.c;
|
||||
common = loader/multiboot_mbi2.c;
|
||||
enable = x86;
|
||||
enable = mips;
|
||||
@@ -1675,7 +1673,6 @@ module = {
|
||||
module = {
|
||||
name = multiboot;
|
||||
common = loader/multiboot.c;
|
||||
- common = lib/cmdline.c;
|
||||
x86 = loader/i386/multiboot_mbi.c;
|
||||
extra_dist = loader/multiboot_elfxx.c;
|
||||
enable = x86;
|
||||
@@ -1683,7 +1680,6 @@ module = {
|
||||
|
||||
module = {
|
||||
name = xen_boot;
|
||||
- common = lib/cmdline.c;
|
||||
arm64 = loader/arm64/xen_boot.c;
|
||||
enable = arm64;
|
||||
};
|
||||
@@ -1700,7 +1696,6 @@ module = {
|
||||
arm = loader/arm/linux.c;
|
||||
arm64 = loader/arm64/linux.c;
|
||||
common = loader/linux.c;
|
||||
- common = lib/cmdline.c;
|
||||
enable = noemu;
|
||||
};
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 3732816bc08ef605ed3b6c016ff0ed562829f243 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 14:10:48 +0200
|
||||
Subject: [PATCH] genmoddep: Check that no modules provide the same symbol.
|
||||
|
||||
The semantics of 2 modules providing the same symbol are undefined. So
|
||||
ensure that it doesn't happen.
|
||||
---
|
||||
grub-core/genmoddep.awk | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
|
||||
index bd98d84cdd7..8976beb91d0 100644
|
||||
--- a/grub-core/genmoddep.awk
|
||||
+++ b/grub-core/genmoddep.awk
|
||||
@@ -18,6 +18,10 @@ BEGIN {
|
||||
|
||||
{
|
||||
if ($1 == "defined") {
|
||||
+ if ($3 in symtab) {
|
||||
+ printf "%s in %s is duplicated in %s\n", $3, $2, symtab[$3] >"/dev/stderr";
|
||||
+ error++;
|
||||
+ }
|
||||
symtab[$3] = $2;
|
||||
modtab[$2] = "" modtab[$2]
|
||||
} else if ($1 == "undefined") {
|
23
0069-yylex-Explicilty-cast-fprintf-to-void.patch
Normal file
23
0069-yylex-Explicilty-cast-fprintf-to-void.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From c36c2a86404f373100775305f532c09d46f3c6ce Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 14:11:43 +0200
|
||||
Subject: [PATCH] yylex: Explicilty cast fprintf to void.
|
||||
|
||||
It's needed to avoid warning on recent GCC.
|
||||
---
|
||||
grub-core/script/yylex.l | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l
|
||||
index 95b2191705a..7b44c37b76f 100644
|
||||
--- a/grub-core/script/yylex.l
|
||||
+++ b/grub-core/script/yylex.l
|
||||
@@ -91,7 +91,7 @@ typedef size_t yy_size_t;
|
||||
#define stdin 0
|
||||
#define stdout 0
|
||||
|
||||
-#define fprintf(...) 0
|
||||
+#define fprintf(...) (void)0
|
||||
#define exit(...) grub_fatal("fatal error in lexer")
|
||||
#endif
|
||||
|
29
0070-linux-fixup.patch
Normal file
29
0070-linux-fixup.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 6cc79ec10ccafc5935d776e4a396193b93d7e842 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 16:23:52 +0200
|
||||
Subject: [PATCH] linux fixup
|
||||
|
||||
---
|
||||
grub-core/Makefile.core.def | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 66144222c5f..6edf68286c3 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -770,7 +770,6 @@ module = {
|
||||
module = {
|
||||
name = boot;
|
||||
common = commands/boot.c;
|
||||
- common = lib/cmdline.c;
|
||||
i386_pc = lib/i386/pc/biosnum.c;
|
||||
enable = x86;
|
||||
enable = emu;
|
||||
@@ -1696,6 +1695,7 @@ module = {
|
||||
arm = loader/arm/linux.c;
|
||||
arm64 = loader/arm64/linux.c;
|
||||
common = loader/linux.c;
|
||||
+ common = lib/cmdline.c;
|
||||
enable = noemu;
|
||||
};
|
||||
|
40
0071-multiboot-fixup.patch
Normal file
40
0071-multiboot-fixup.patch
Normal file
@ -0,0 +1,40 @@
|
||||
From 4bfd26623f590c8f19c516f4edd342ff18f07bc1 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 16:24:05 +0200
|
||||
Subject: [PATCH] multiboot fixup
|
||||
|
||||
---
|
||||
grub-core/loader/multiboot.c | 5 ++++-
|
||||
include/grub/mips/multiboot.h | 2 +-
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c
|
||||
index bd3dc1990e3..3b57cb132a6 100644
|
||||
--- a/grub-core/loader/multiboot.c
|
||||
+++ b/grub-core/loader/multiboot.c
|
||||
@@ -138,8 +138,11 @@ static void
|
||||
efi_boot (struct grub_relocator *rel,
|
||||
grub_uint32_t target)
|
||||
{
|
||||
+#ifdef GRUB_USE_MULTIBOOT2
|
||||
+ struct grub_relocator_efi_state state_efi = MULTIBOOT2_EFI_INITIAL_STATE;
|
||||
+#else
|
||||
struct grub_relocator_efi_state state_efi = MULTIBOOT_EFI_INITIAL_STATE;
|
||||
-
|
||||
+#endif
|
||||
state_efi.MULTIBOOT_EFI_ENTRY_REGISTER = grub_multiboot_payload_eip;
|
||||
state_efi.MULTIBOOT_EFI_MBI_REGISTER = target;
|
||||
|
||||
diff --git a/include/grub/mips/multiboot.h b/include/grub/mips/multiboot.h
|
||||
index c4eee2dd01b..cdfb41e315a 100644
|
||||
--- a/include/grub/mips/multiboot.h
|
||||
+++ b/include/grub/mips/multiboot.h
|
||||
@@ -23,7 +23,7 @@
|
||||
.jumpreg = 1 }
|
||||
#define MULTIBOOT_ENTRY_REGISTER gpr[1]
|
||||
#define MULTIBOOT_MBI_REGISTER gpr[5]
|
||||
-#define MULTIBOOT2_ARCHITECTURE_CURRENT MULTIBOOT_ARCHITECTURE_MIPS32
|
||||
+#define MULTIBOOT2_ARCHITECTURE_CURRENT MULTIBOOT2_ARCHITECTURE_MIPS32
|
||||
|
||||
#define MULTIBOOT_ELF32_MACHINE EM_MIPS
|
||||
#define MULTIBOOT_ELF64_MACHINE EM_MIPS
|
22
0072-enforcing-fixup.patch
Normal file
22
0072-enforcing-fixup.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 6ccb2d54bce2eef8e71b93b467c0f49253835c74 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 14 Aug 2017 16:27:10 +0200
|
||||
Subject: [PATCH] enforcing fixup
|
||||
|
||||
---
|
||||
grub-core/genmoddep.awk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/genmoddep.awk b/grub-core/genmoddep.awk
|
||||
index 8976beb91d0..04c2863e5ab 100644
|
||||
--- a/grub-core/genmoddep.awk
|
||||
+++ b/grub-core/genmoddep.awk
|
||||
@@ -18,7 +18,7 @@ BEGIN {
|
||||
|
||||
{
|
||||
if ($1 == "defined") {
|
||||
- if ($3 in symtab) {
|
||||
+ if ($3 !~ /^\.refptr\./ && $3 in symtab) {
|
||||
printf "%s in %s is duplicated in %s\n", $3, $2, symtab[$3] >"/dev/stderr";
|
||||
error++;
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
From 5435aaac3c8bfb14bb01a826ec747b783947c86f Mon Sep 17 00:00:00 2001
|
||||
From: Xuan Guo <nbdd0121>
|
||||
Date: Mon, 14 Aug 2017 16:27:53 +0200
|
||||
Subject: [PATCH] Set have_exec to y on cygwin so we have grub_mkrescue.
|
||||
|
||||
---
|
||||
configure.ac | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 571f7a0b5aa..c7888e40f66 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -204,7 +204,8 @@ case "$host_os" in
|
||||
esac
|
||||
|
||||
case "$host_os" in
|
||||
- cygwin | windows* | mingw32*) have_exec=n ;;
|
||||
+ cygwin) have_exec=y ;;
|
||||
+ windows* | mingw32*) have_exec=n ;;
|
||||
aros*) have_exec=n ;;
|
||||
*) have_exec=y;;
|
||||
esac
|
@ -0,0 +1,22 @@
|
||||
From 3d86efda0074285fb86aa6ffe5d97327ebd134a4 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 30 Aug 2017 15:18:24 +0200
|
||||
Subject: [PATCH] arc: Do not create spurious variable grub_arc_memory_type_t.
|
||||
|
||||
---
|
||||
include/grub/arc/arc.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/grub/arc/arc.h b/include/grub/arc/arc.h
|
||||
index 7615a49a92c..999de719675 100644
|
||||
--- a/include/grub/arc/arc.h
|
||||
+++ b/include/grub/arc/arc.h
|
||||
@@ -53,7 +53,7 @@ enum grub_arc_memory_type
|
||||
#ifndef GRUB_CPU_WORDS_BIGENDIAN
|
||||
GRUB_ARC_MEMORY_FREE_CONTIGUOUS,
|
||||
#endif
|
||||
- } grub_arc_memory_type_t;
|
||||
+ };
|
||||
|
||||
struct grub_arc_timeinfo
|
||||
{
|
70
0075-unix-exec-avoid-atexit-handlers-when-child-exits.patch
Normal file
70
0075-unix-exec-avoid-atexit-handlers-when-child-exits.patch
Normal file
@ -0,0 +1,70 @@
|
||||
From e75cf4a58b5eaf482804e5e1b2cc7d4399df350e Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Steinhardt <ps@pks.im>
|
||||
Date: Mon, 28 Aug 2017 20:57:19 +0200
|
||||
Subject: [PATCH] unix exec: avoid atexit handlers when child exits
|
||||
|
||||
The `grub_util_exec_redirect_all` helper function can be used to
|
||||
spawn an executable and redirect its output to some files. After calling
|
||||
`fork()`, the parent will wait for the child to terminate with
|
||||
`waitpid()` while the child prepares its file descriptors, environment
|
||||
and finally calls `execvp()`. If something in the children's setup
|
||||
fails, it will stop by calling `exit(127)`.
|
||||
|
||||
Calling `exit()` will cause any function registered via `atexit()` to be
|
||||
executed, which is usually the wrong thing to do in a child. And
|
||||
actually, one can easily observe faulty behaviour on musl-based systems
|
||||
without modprobe(8) installed: executing `grub-install --help` will call
|
||||
`grub_util_exec_redirect_all` with "modprobe", which obviously fails if
|
||||
modprobe(8) is not installed. Due to the child now exiting and invoking
|
||||
the `atexit()` handlers, it will clean up some data structures of the
|
||||
parent and cause it to be deadlocked in the `waitpid()` syscall.
|
||||
|
||||
The issue can easily be fixed by calling `_exit(127)` instead, which is
|
||||
especially designed to be called when the atexit-handlers should not be
|
||||
executed.
|
||||
|
||||
Signed-off-by: Patrick Steinhardt <ps@pks.im>
|
||||
---
|
||||
grub-core/osdep/unix/exec.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/grub-core/osdep/unix/exec.c b/grub-core/osdep/unix/exec.c
|
||||
index 935ff120ebe..db3259f6504 100644
|
||||
--- a/grub-core/osdep/unix/exec.c
|
||||
+++ b/grub-core/osdep/unix/exec.c
|
||||
@@ -99,7 +99,7 @@ grub_util_exec_redirect_all (const char *const *argv, const char *stdin_file,
|
||||
{
|
||||
fd = open (stdin_file, O_RDONLY);
|
||||
if (fd < 0)
|
||||
- exit (127);
|
||||
+ _exit (127);
|
||||
dup2 (fd, STDIN_FILENO);
|
||||
close (fd);
|
||||
}
|
||||
@@ -108,7 +108,7 @@ grub_util_exec_redirect_all (const char *const *argv, const char *stdin_file,
|
||||
{
|
||||
fd = open (stdout_file, O_WRONLY | O_CREAT, 0700);
|
||||
if (fd < 0)
|
||||
- exit (127);
|
||||
+ _exit (127);
|
||||
dup2 (fd, STDOUT_FILENO);
|
||||
close (fd);
|
||||
}
|
||||
@@ -117,7 +117,7 @@ grub_util_exec_redirect_all (const char *const *argv, const char *stdin_file,
|
||||
{
|
||||
fd = open (stderr_file, O_WRONLY | O_CREAT, 0700);
|
||||
if (fd < 0)
|
||||
- exit (127);
|
||||
+ _exit (127);
|
||||
dup2 (fd, STDERR_FILENO);
|
||||
close (fd);
|
||||
}
|
||||
@@ -126,7 +126,7 @@ grub_util_exec_redirect_all (const char *const *argv, const char *stdin_file,
|
||||
setenv ("LC_ALL", "C", 1);
|
||||
|
||||
execvp ((char *) argv[0], (char **) argv);
|
||||
- exit (127);
|
||||
+ _exit (127);
|
||||
}
|
||||
waitpid (pid, &status, 0);
|
||||
if (!WIFEXITED (status))
|
24
0076-xfs-Don-t-attempt-to-iterate-over-empty-directory.patch
Normal file
24
0076-xfs-Don-t-attempt-to-iterate-over-empty-directory.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From c42acc23ff91ea0170eab5f1e10499dcfc4e0c92 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 30 Aug 2017 15:56:19 +0200
|
||||
Subject: [PATCH] xfs: Don't attempt to iterate over empty directory.
|
||||
|
||||
Reported by: Tuomas Tynkkynen
|
||||
---
|
||||
grub-core/fs/xfs.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
|
||||
index 9f66dd6e4c6..c6031bd3f71 100644
|
||||
--- a/grub-core/fs/xfs.c
|
||||
+++ b/grub-core/fs/xfs.c
|
||||
@@ -828,6 +828,9 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
entries = (grub_be_to_cpu32 (tail->leaf_count)
|
||||
- grub_be_to_cpu32 (tail->leaf_stale));
|
||||
|
||||
+ if (!entries)
|
||||
+ continue;
|
||||
+
|
||||
/* Iterate over all entries within this block. */
|
||||
while ((char *)direntry < (char *)tail)
|
||||
{
|
127
0077-Implement-checksum-verification-for-gunzip.patch
Normal file
127
0077-Implement-checksum-verification-for-gunzip.patch
Normal file
@ -0,0 +1,127 @@
|
||||
From b18ce97c672615bb5ac44883676b37a9ec758d83 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Fritsch <sf@sfritsch.de>
|
||||
Date: Sun, 1 May 2016 14:32:30 +0200
|
||||
Subject: [PATCH] Implement checksum verification for gunzip
|
||||
|
||||
This implements the crc32 check for the gzip format. Support for zlib's
|
||||
adler checksum is not included, yet.
|
||||
---
|
||||
grub-core/io/gzio.c | 46 +++++++++++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 41 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
|
||||
index a8e33033bf8..dcf3a870147 100644
|
||||
--- a/grub-core/io/gzio.c
|
||||
+++ b/grub-core/io/gzio.c
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <grub/dl.h>
|
||||
#include <grub/deflate.h>
|
||||
#include <grub/i18n.h>
|
||||
+#include <grub/crypto.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -94,6 +95,14 @@ struct grub_gzio
|
||||
struct huft *tl;
|
||||
/* The distance code table. */
|
||||
struct huft *td;
|
||||
+ /* The checksum algorithm */
|
||||
+ const gcry_md_spec_t *hdesc;
|
||||
+ /* The wanted checksum */
|
||||
+ grub_uint32_t orig_checksum;
|
||||
+ /* The uncompressed length */
|
||||
+ grub_size_t orig_len;
|
||||
+ /* Context for checksum calculation */
|
||||
+ grub_uint8_t *hcontext;
|
||||
/* The lookup bits for the literal/length code table. */
|
||||
int bl;
|
||||
/* The lookup bits for the distance code table. */
|
||||
@@ -180,7 +189,7 @@ test_gzip_header (grub_file_t file)
|
||||
grub_uint8_t os_type;
|
||||
} hdr;
|
||||
grub_uint16_t extra_len;
|
||||
- grub_uint32_t orig_len;
|
||||
+ grub_uint32_t crc32;
|
||||
grub_gzio_t gzio = file->data;
|
||||
|
||||
if (grub_file_tell (gzio->file) != 0)
|
||||
@@ -215,12 +224,15 @@ test_gzip_header (grub_file_t file)
|
||||
|
||||
/* FIXME: don't do this on not easily seekable files. */
|
||||
{
|
||||
- grub_file_seek (gzio->file, grub_file_size (gzio->file) - 4);
|
||||
- if (grub_file_read (gzio->file, &orig_len, 4) != 4)
|
||||
+ grub_file_seek (gzio->file, grub_file_size (gzio->file) - 8);
|
||||
+ if (grub_file_read (gzio->file, &crc32, 4) != 4)
|
||||
+ return 0;
|
||||
+ gzio->orig_checksum = grub_le_to_cpu32 (crc32);
|
||||
+ if (grub_file_read (gzio->file, &gzio->orig_len, 4) != 4)
|
||||
return 0;
|
||||
/* FIXME: this does not handle files whose original size is over 4GB.
|
||||
But how can we know the real original size? */
|
||||
- file->size = grub_le_to_cpu32 (orig_len);
|
||||
+ file->size = grub_le_to_cpu32 (gzio->orig_len);
|
||||
}
|
||||
|
||||
initialize_tables (gzio);
|
||||
@@ -1095,7 +1107,23 @@ inflate_window (grub_gzio_t gzio)
|
||||
|
||||
gzio->saved_offset += gzio->wp;
|
||||
|
||||
- /* XXX do CRC calculation here! */
|
||||
+ if (gzio->hcontext)
|
||||
+ {
|
||||
+ gzio->hdesc->write (gzio->hcontext, gzio->slide, gzio->wp);
|
||||
+
|
||||
+ if (gzio->saved_offset == gzio->orig_len)
|
||||
+ {
|
||||
+ grub_uint32_t csum;
|
||||
+
|
||||
+ gzio->hdesc->final (gzio->hcontext);
|
||||
+ csum = *(grub_uint32_t *)gzio->hdesc->read (gzio->hcontext);
|
||||
+ csum = grub_be_to_cpu32 (csum);
|
||||
+ if (csum != gzio->orig_checksum)
|
||||
+ grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
||||
+ "checksum mismatch %08x/%08x",
|
||||
+ gzio->orig_checksum, csum);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -1118,6 +1146,9 @@ initialize_tables (grub_gzio_t gzio)
|
||||
huft_free (gzio->td);
|
||||
gzio->tl = NULL;
|
||||
gzio->td = NULL;
|
||||
+
|
||||
+ if (gzio->hcontext)
|
||||
+ gzio->hdesc->init(gzio->hcontext);
|
||||
}
|
||||
|
||||
|
||||
@@ -1143,6 +1174,9 @@ grub_gzio_open (grub_file_t io, const char *name __attribute__ ((unused)))
|
||||
|
||||
gzio->file = io;
|
||||
|
||||
+ gzio->hdesc = GRUB_MD_CRC32;
|
||||
+ gzio->hcontext = grub_malloc(gzio->hdesc->contextsize);
|
||||
+
|
||||
file->device = io->device;
|
||||
file->data = gzio;
|
||||
file->fs = &grub_gzio_fs;
|
||||
@@ -1151,6 +1185,7 @@ grub_gzio_open (grub_file_t io, const char *name __attribute__ ((unused)))
|
||||
if (! test_gzip_header (file))
|
||||
{
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
+ grub_free (gzio->hcontext);
|
||||
grub_free (gzio);
|
||||
grub_free (file);
|
||||
grub_file_seek (io, 0);
|
||||
@@ -1287,6 +1322,7 @@ grub_gzio_close (grub_file_t file)
|
||||
grub_file_close (gzio->file);
|
||||
huft_free (gzio->tl);
|
||||
huft_free (gzio->td);
|
||||
+ grub_free (gzio->hcontext);
|
||||
grub_free (gzio);
|
||||
|
||||
/* No need to close the same device twice. */
|
@ -0,0 +1,53 @@
|
||||
From ec763ed00ac55deb1c429bda5057bd5a147183d1 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 30 Aug 2017 16:29:59 +0200
|
||||
Subject: [PATCH] qemu, coreboot, multiboot: Change linking address to 0x9000.
|
||||
|
||||
It's common for distros to use a defective ld which links at 0x9000. Instead
|
||||
of fighting it, just move link target to 0x9000.
|
||||
---
|
||||
grub-core/Makefile.core.def | 6 +++---
|
||||
include/grub/offsets.h | 4 ++--
|
||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 6edf68286c3..d90ad622082 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -68,11 +68,11 @@ kernel = {
|
||||
i386_pc_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
i386_pc_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||
i386_qemu_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
- i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||
+ i386_qemu_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||
i386_coreboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
- i386_coreboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||
+ i386_coreboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||
i386_multiboot_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
- i386_multiboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x8200';
|
||||
+ i386_multiboot_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x9000';
|
||||
i386_ieee1275_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
i386_ieee1275_ldflags = '$(TARGET_IMG_BASE_LDOPT),0x10000';
|
||||
i386_xen_ldflags = '$(TARGET_IMG_LDFLAGS)';
|
||||
diff --git a/include/grub/offsets.h b/include/grub/offsets.h
|
||||
index bf0689fc99a..330e4c70738 100644
|
||||
--- a/include/grub/offsets.h
|
||||
+++ b/include/grub/offsets.h
|
||||
@@ -50,7 +50,7 @@
|
||||
/* The offset of GRUB_CORE_ENTRY_ADDR. */
|
||||
#define GRUB_KERNEL_I386_QEMU_CORE_ENTRY_ADDR 0x8
|
||||
|
||||
-#define GRUB_KERNEL_I386_QEMU_LINK_ADDR 0x8200
|
||||
+#define GRUB_KERNEL_I386_QEMU_LINK_ADDR 0x9000
|
||||
|
||||
/* The offset of GRUB_TOTAL_MODULE_SIZE. */
|
||||
#define GRUB_KERNEL_SPARC64_IEEE1275_TOTAL_MODULE_SIZE 0x8
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
#define GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE 0x08
|
||||
|
||||
-#define GRUB_KERNEL_I386_COREBOOT_LINK_ADDR 0x8200
|
||||
+#define GRUB_KERNEL_I386_COREBOOT_LINK_ADDR 0x9000
|
||||
#define GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR 0x100000
|
||||
|
||||
#define GRUB_KERNEL_I386_IEEE1275_LINK_ADDR 0x10000
|
@ -0,0 +1,25 @@
|
||||
From 32099228e6ccf209f64d509cd7e13413ea10778e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 30 Aug 2017 16:59:25 +0200
|
||||
Subject: [PATCH] printf_unit_test: Disable Wformat-truncation on GCC >= 7
|
||||
|
||||
We intentionally pass NULL as argument to format, hence disable the warning.
|
||||
---
|
||||
tests/printf_unit_test.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/tests/printf_unit_test.c b/tests/printf_unit_test.c
|
||||
index d7b12c6dbee..098c29fd9ce 100644
|
||||
--- a/tests/printf_unit_test.c
|
||||
+++ b/tests/printf_unit_test.c
|
||||
@@ -23,6 +23,10 @@
|
||||
|
||||
#define MSG "printf test failed: %s, %s", real, expected
|
||||
|
||||
+#if defined(__GNUC__) && __GNUC__ >= 7
|
||||
+#pragma GCC diagnostic ignored "-Wformat-truncation="
|
||||
+#endif
|
||||
+
|
||||
static void
|
||||
printf_test (void)
|
||||
{
|
274
0080-Regenerate-checksum.h-with-newer-unifont.patch
Normal file
274
0080-Regenerate-checksum.h-with-newer-unifont.patch
Normal file
@ -0,0 +1,274 @@
|
||||
From 061258a05edd7077f3cb15f51bda2823f513d261 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 30 Aug 2017 17:12:04 +0200
|
||||
Subject: [PATCH] Regenerate checksum.h with newer unifont.
|
||||
|
||||
Old link is broken. New unifont is
|
||||
http://ftp.de.debian.org/debian/pool/main/u/unifont/xfonts-unifont_9.0.06-2_all.deb
|
||||
---
|
||||
grub-core/tests/checksums.h | 258 ++++++++++++++++++++++----------------------
|
||||
1 file changed, 129 insertions(+), 129 deletions(-)
|
||||
|
||||
diff --git a/grub-core/tests/checksums.h b/grub-core/tests/checksums.h
|
||||
index 921e57ff48d..8273bd105de 100644
|
||||
--- a/grub-core/tests/checksums.h
|
||||
+++ b/grub-core/tests/checksums.h
|
||||
@@ -1,129 +1,129 @@
|
||||
- { "cmdline_cat", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x8851b0ee, 0x8851b0ee, 0xafb59f0b, 0xafb59f0b, 0x8c9b72f1, 0x8c9b72f1, 0x6eec5116, 0x6eec5116, 0xad82053e, 0xad82053e, 0x2eeae2ae, 0x2eeae2ae, 0x58cf8def, 0x58cf8def, 0x926f4d2f, 0x926f4d2f, 0xbd1c3236, 0xbd1c3236, 0x56012a95, 0x56012a95, 0x6d7c40ae, 0x6d7c40ae, 0xef750bc8, 0xef750bc8, 0x1080dd4a, 0x1080dd4a, 0xd7f9e5af, 0xd7f9e5af, 0x80b1b4a9, 0x80b1b4a9, 0x2c99415e, 0x2c99415e, 0x8d5761ff, 0x8d5761ff, 0xb964b489, 0xb964b489, 0x88a51f74, 0x88a51f74, 0x1da6c458, 0x1da6c458, 0x85e94025, 0x206ea54f, 0x7ee6c8fd, 0x7ee6c8fd, }, 45 },
|
||||
- { "cmdline_cat", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x834b70a0, 0x834b70a0, 0xe7cc129f, 0xe7cc129f, 0x5ee2edc, 0x5ee2edc, 0xa1135cd7, 0xa1135cd7, 0xf7ce1f26, 0xf7ce1f26, 0xe9f803e8, 0xe9f803e8, 0x4b8f9724, 0x4b8f9724, 0x3fe3771a, 0x3fe3771a, 0x5584ee63, 0x5584ee63, 0xac193250, 0xac193250, 0x801f25f4, 0x801f25f4, 0x8d33aece, 0x8d33aece, 0xc6d95edc, 0xc6d95edc, 0xf121dee2, 0xf121dee2, 0x6ab10812, 0x6ab10812, 0x41a5b112, 0x41a5b112, 0xac6f712b, 0xac6f712b, 0x8aee7a19, 0x8aee7a19, 0xfe37c0ad, 0xfe37c0ad, 0x99c6a336, 0x99c6a336, 0x53b844c6, 0x73015447, 0x7a1a2254, 0x7a1a2254, }, 45 },
|
||||
- { "cmdline_cat", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xb121c912, 0xb121c912, 0x635a8739, 0x635a8739, 0x8288cba6, 0x8288cba6, 0xf5589d0, 0xf5589d0, 0x471642b3, 0x471642b3, 0xfb4826cf, 0xfb4826cf, 0x8b1083cf, 0x8b1083cf, 0x738b0c94, 0x738b0c94, 0x859c41b0, 0x859c41b0, 0x7c8d1be9, 0x7c8d1be9, 0x5b685e40, 0x5b685e40, 0x9cf80d95, 0x9cf80d95, 0x3541f915, 0x3541f915, 0x582b8557, 0x582b8557, 0x24cf88f7, 0x24cf88f7, 0x9e0af23, 0x9e0af23, 0x1033164b, 0x1033164b, 0x70ba51e2, 0x70ba51e2, 0xb051585c, 0xb051585c, 0xe1389f04, 0xe1389f04, 0x308bbb74, 0xdc9e6805, 0x4ddcff9f, 0x4ddcff9f, }, 45 },
|
||||
- { "cmdline_cat", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xac16e832, 0xac16e832, 0xbf6ab9c6, 0xbf6ab9c6, 0x1063e15a, 0x1063e15a, 0xf908e3ff, 0xf908e3ff, 0xcb37d841, 0xcb37d841, 0x9b8ffa7d, 0x9b8ffa7d, 0x38d2a26c, 0x38d2a26c, 0x6989f09b, 0x6989f09b, 0x481451e, 0x481451e, 0x17b3177, 0x17b3177, 0x3ea52aeb, 0x3ea52aeb, 0xc24de674, 0xc24de674, 0x4ab163cc, 0x4ab163cc, 0xc482b092, 0xc482b092, 0x55ffc7e2, 0x55ffc7e2, 0x3b4b34dd, 0x3b4b34dd, 0x9b1f047f, 0x9b1f047f, 0x3d42e414, 0x3d42e414, 0x35b2fb06, 0x35b2fb06, 0xb813b35f, 0xb813b35f, 0xc3ede6e0, 0xc35214c3, 0x340f0107, 0x340f0107, }, 45 },
|
||||
- { "cmdline_cat", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x9c47caee, 0x9c47caee, 0x6c9c4f38, 0x6c9c4f38, 0x79c49615, 0x79c49615, 0x70fe9708, 0x70fe9708, 0x8e90c077, 0x8e90c077, 0xd8205b47, 0xd8205b47, 0xa34337e2, 0xa34337e2, 0xf4dffa53, 0xf4dffa53, 0x90a0779c, 0x90a0779c, 0x322820bb, 0x322820bb, 0x50e3383f, 0x50e3383f, 0x4a976e3e, 0x4a976e3e, 0x90b6f8d9, 0x90b6f8d9, 0x4058c301, 0x4058c301, 0x221a6810, 0x221a6810, 0x1f78a00e, 0x1f78a00e, 0x6a633d2c, 0x6a633d2c, 0xca177c65, 0xca177c65, 0xabb6c7f9, 0xabb6c7f9, 0x635a35e8, 0x635a35e8, 0x6da78f10, 0x53467ff8, 0xd037fdfa, 0xd037fdfa, }, 45 },
|
||||
- { "cmdline_cat", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x2b6b8225, 0x2b6b8225, 0x83df9995, 0x83df9995, 0x5165ad0b, 0x5165ad0b, 0xe5a6f96d, 0xe5a6f96d, 0x798df957, 0x798df957, 0x8c0567e2, 0x8c0567e2, 0x5e5d7389, 0x5e5d7389, 0x47a39dd, 0x47a39dd, 0x894f44af, 0x894f44af, 0x1dff0a6, 0x1dff0a6, 0xf496e67b, 0xf496e67b, 0x29cb5702, 0x29cb5702, 0xeaf1387d, 0xeaf1387d, 0x4a9bf7, 0x4a9bf7, 0x11d20bee, 0x11d20bee, 0xa103dc2d, 0xa103dc2d, 0xd0265db9, 0xd0265db9, 0x42267334, 0x42267334, 0x96f85e8c, 0x96f85e8c, 0xa28eac49, 0xa28eac49, 0x4e660ae7, 0x70741b3, 0x183f2f2e, 0x183f2f2e, }, 45 },
|
||||
- { "cmdline_cat", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x77b51f44, 0x77b51f44, 0xc8097569, 0xc8097569, 0x769aee5f, 0x769aee5f, 0xa35e159, 0xa35e159, 0x87a6341f, 0x87a6341f, 0xb61d944b, 0xb61d944b, 0x8b109cb3, 0x8b109cb3, 0xed3fb3e, 0xed3fb3e, 0xd7cc6c3, 0xd7cc6c3, 0x52077f0d, 0x52077f0d, 0x9d86d17e, 0x9d86d17e, 0x5e487bb, 0x5e487bb, 0x3a00041b, 0x3a00041b, 0xcfdeaf9e, 0xcfdeaf9e, 0x3e40af89, 0x3e40af89, 0x5ec41ea9, 0x5ec41ea9, 0x6298e4e7, 0x6298e4e7, 0xfd67f90e, 0xfd67f90e, 0x5ab5dc32, 0x5ab5dc32, 0xdd3ad694, 0xdd3ad694, 0x391222b4, 0xd4a98b43, 0xeaa2f62, 0xeaa2f62, }, 45 },
|
||||
- { "gfxterm_menu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x45b0713c, 0x237f9dbf, 0x45b0713c, 0x646bc7b, 0x59c36f00, 0x59c36f00, 0x7fd94135, 0x7fd94135, 0x7fd94135, 0x1592c53, 0x1592c53, 0x1592c53, 0x63af3981, 0x63af3981, 0x63af3981, 0x59c36f00, 0x646bc7b, 0x646bc7b, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_menu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x84abc7db, 0x20814063, 0x84abc7db, 0xaaae42a4, 0xaa4593fe, 0xaa4593fe, 0x2e88732f, 0x2e88732f, 0x2e88732f, 0x887d7e48, 0x887d7e48, 0x887d7e48, 0xa545d530, 0xa545d530, 0xa545d530, 0xaa4593fe, 0xaaae42a4, 0xaaae42a4, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_menu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x5b85371a, 0xe10968c2, 0x5b85371a, 0x6925a9e, 0xc9cbf769, 0xc9cbf769, 0xda1c9f17, 0xda1c9f17, 0xda1c9f17, 0x24c45edb, 0x24c45edb, 0x24c45edb, 0xcd8ee1d3, 0xcd8ee1d3, 0xcd8ee1d3, 0xc9cbf769, 0x6925a9e, 0x6925a9e, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_menu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x9130464d, 0x22904f7a, 0x9130464d, 0x3f660f95, 0x9813a416, 0x9813a416, 0xfb08d7cf, 0xfb08d7cf, 0xfb08d7cf, 0x6ad351fc, 0x6ad351fc, 0x6ad351fc, 0x73696c2c, 0x73696c2c, 0x73696c2c, 0x9813a416, 0x3f660f95, 0x3f660f95, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_menu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x5185b14e, 0x4173aa2f, 0x5185b14e, 0x272384fd, 0x5fcf013d, 0x5fcf013d, 0x9e56a9e0, 0x9e56a9e0, 0x9e56a9e0, 0x4c46b196, 0x4c46b196, 0x4c46b196, 0x5a358e09, 0x5a358e09, 0x5a358e09, 0x5fcf013d, 0x272384fd, 0x272384fd, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_menu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x5cc0d3ef, 0x8b87731, 0x5cc0d3ef, 0x47c509e8, 0xdd28f52b, 0xdd28f52b, 0xe1579057, 0xe1579057, 0xe1579057, 0xc06b69b3, 0xc06b69b3, 0xc06b69b3, 0xbdd3a23f, 0xbdd3a23f, 0xbdd3a23f, 0xdd28f52b, 0x47c509e8, 0x47c509e8, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_menu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xd1338a02, 0x7aa25dbf, 0xd1338a02, 0x2e8c9182, 0x43d1f34, 0x43d1f34, 0x6486f7c4, 0x6486f7c4, 0x6486f7c4, 0x1b8c5e6c, 0x1b8c5e6c, 0x1b8c5e6c, 0x82dd5bea, 0x82dd5bea, 0x82dd5bea, 0x43d1f34, 0x2e8c9182, 0x2e8c9182, 0x43d1f34, }, 20 },
|
||||
- { "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x1027210c, 0x64e51c81, 0x1027210c, 0x45ca4a8a, 0x9a2e0d26, 0x2b88b6ce, 0x2b88b6ce, 0x2b88b6ce, 0x7750400e, 0x7750400e, 0x7750400e, 0x5ec88e9c, 0x5ec88e9c, 0x5ec88e9c, 0x59c36f00, 0x45ca4a8a, 0x45ca4a8a, }, 18 },
|
||||
- { "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x8d12f697, 0xc5b32248, 0x8d12f697, 0x56720aa4, 0xa9d58ccd, 0xa1b1a1b5, 0xa1b1a1b5, 0xa1b1a1b5, 0xf4ee0bbf, 0xf4ee0bbf, 0xf4ee0bbf, 0x9dddc3f6, 0x9dddc3f6, 0x9dddc3f6, 0xaa4593fe, 0x56720aa4, 0x56720aa4, }, 18 },
|
||||
- { "gfxmenu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xa5ec9f45, 0xdb7085d8, 0xa5ec9f45, 0x9caf1d3f, 0x5411be8b, 0xa07e74d3, 0xa07e74d3, 0xa07e74d3, 0xdfc0d247, 0xdfc0d247, 0xdfc0d247, 0x9db4b23f, 0x9db4b23f, 0x9db4b23f, 0xc9cbf769, 0x9caf1d3f, 0x9caf1d3f, }, 18 },
|
||||
- { "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0xce8e83bf, 0xeb96c838, 0xce8e83bf, 0x73cb3bc1, 0x740d78cf, 0x84312594, 0x84312594, 0x84312594, 0x6f94cfe8, 0x6f94cfe8, 0x6f94cfe8, 0x69dfcf18, 0x69dfcf18, 0x69dfcf18, 0x1c3742c9, 0x73cb3bc1, 0x73cb3bc1, }, 18 },
|
||||
- { "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0x56a03e51, 0xee7d8d4b, 0x56a03e51, 0x5bdf9413, 0xbcda144c, 0x131c0760, 0x131c0760, 0x131c0760, 0x7c55db71, 0x7c55db71, 0x7c55db71, 0x71a34572, 0x71a34572, 0x71a34572, 0xcc5a7bed, 0x5bdf9413, 0x5bdf9413, }, 18 },
|
||||
- { "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xef4a3312, 0xea8a9cf0, 0x8929e522, 0xea8a9cf0, 0x78f3dfbc, 0x5d55a141, 0xb9092e0b, 0xb9092e0b, 0xb9092e0b, 0x7fbb6a15, 0x7fbb6a15, 0x7fbb6a15, 0x6bdebaaa, 0x6bdebaaa, 0x6bdebaaa, 0xef4a3312, 0x78f3dfbc, 0x78f3dfbc, }, 18 },
|
||||
- { "gfxmenu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x54e48d80, 0x6dcf1d57, 0x925a4c8f, 0x6dcf1d57, 0x69005b38, 0x6d6bb4bc, 0x14f7c6b1, 0x14f7c6b1, 0x14f7c6b1, 0x95043060, 0x95043060, 0x95043060, 0x3a0890f, 0x3a0890f, 0x3a0890f, 0x54e48d80, 0x69005b38, 0x69005b38, }, 18 },
|
||||
- { "gfxterm_ar", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x77ff5efc, 0x791fe364, 0x77ff5efc, 0x340993bb, 0x59c36f00, 0x59c36f00, 0x3908ca1e, 0x3908ca1e, 0x3908ca1e, 0x4788a778, 0x4788a778, 0x4788a778, 0x257eb2aa, 0x257eb2aa, 0x257eb2aa, 0x59c36f00, 0x340993bb, 0x340993bb, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_ar", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xb2d04b0f, 0x46cdbc23, 0xb2d04b0f, 0x9cd5ce70, 0xaa4593fe, 0xaa4593fe, 0x44bf6b37, 0x44bf6b37, 0x44bf6b37, 0xe24a6650, 0xe24a6650, 0xe24a6650, 0xcf72cd28, 0xcf72cd28, 0xcf72cd28, 0xaa4593fe, 0x9cd5ce70, 0x9cd5ce70, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_ar", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x4bb823b8, 0x59349835, 0x4bb823b8, 0x16af4e3c, 0xc9cbf769, 0xc9cbf769, 0x2784b68e, 0x2784b68e, 0x2784b68e, 0xd95c7742, 0xd95c7742, 0xd95c7742, 0x3016c84a, 0x3016c84a, 0x3016c84a, 0xc9cbf769, 0x16af4e3c, 0x16af4e3c, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_ar", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xb821e44, 0x16b3ac05, 0xb821e44, 0xa5d4579c, 0x9813a416, 0x9813a416, 0xca80d730, 0xca80d730, 0xca80d730, 0x5b5b5103, 0x5b5b5103, 0x5b5b5103, 0x42e16cd3, 0x42e16cd3, 0x42e16cd3, 0x9813a416, 0xa5d4579c, 0xa5d4579c, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_ar", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xbe0b9671, 0x7f6e98d0, 0xbe0b9671, 0xc8ada3c2, 0x5fcf013d, 0x5fcf013d, 0x57a0c67d, 0x57a0c67d, 0x57a0c67d, 0x85b0de0b, 0x85b0de0b, 0x85b0de0b, 0x93c3e194, 0x93c3e194, 0x93c3e194, 0x5fcf013d, 0xc8ada3c2, 0xc8ada3c2, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_ar", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x9f18b29e, 0x50e7d383, 0x9f18b29e, 0x841d6899, 0xdd28f52b, 0xdd28f52b, 0xd12092dc, 0xd12092dc, 0xd12092dc, 0xf01c6b38, 0xf01c6b38, 0xf01c6b38, 0x8da4a0b4, 0x8da4a0b4, 0x8da4a0b4, 0xdd28f52b, 0x841d6899, 0x841d6899, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_ar", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x4e8d4d8c, 0x3f32cb90, 0x4e8d4d8c, 0xb132560c, 0x43d1f34, 0x43d1f34, 0x1e7f303c, 0x1e7f303c, 0x1e7f303c, 0x61759994, 0x61759994, 0x61759994, 0xf8249c12, 0xf8249c12, 0xf8249c12, 0x43d1f34, 0xb132560c, 0xb132560c, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_cyr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x4f39b2c5, 0x37084023, 0x4f39b2c5, 0xccf7f82, 0x59c36f00, 0x59c36f00, 0xb5dad2e, 0xb5dad2e, 0xb5dad2e, 0x75ddc048, 0x75ddc048, 0x75ddc048, 0x172bd59a, 0x172bd59a, 0x172bd59a, 0x59c36f00, 0xccf7f82, 0xccf7f82, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_cyr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xd5f24f8e, 0x76463f82, 0xd5f24f8e, 0xfbf7caf1, 0xaa4593fe, 0xaa4593fe, 0xb897c475, 0xb897c475, 0xb897c475, 0x1e62c912, 0x1e62c912, 0x1e62c912, 0x335a626a, 0x335a626a, 0x335a626a, 0xaa4593fe, 0xfbf7caf1, 0xfbf7caf1, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_cyr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x8aa7c8c3, 0x28620e7e, 0x8aa7c8c3, 0xd7b0a547, 0xc9cbf769, 0xc9cbf769, 0x860f1899, 0x860f1899, 0x860f1899, 0x78d7d955, 0x78d7d955, 0x78d7d955, 0x919d665d, 0x919d665d, 0x919d665d, 0xc9cbf769, 0xd7b0a547, 0xd7b0a547, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_cyr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x89654b6, 0x26bab4dd, 0x89654b6, 0xa6c01d6e, 0x9813a416, 0x9813a416, 0xc67652d9, 0xc67652d9, 0xc67652d9, 0x57add4ea, 0x57add4ea, 0x57add4ea, 0x4e17e93a, 0x4e17e93a, 0x4e17e93a, 0x9813a416, 0xa6c01d6e, 0xa6c01d6e, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_cyr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x77945f28, 0xec3ce845, 0x77945f28, 0x1326a9b, 0x5fcf013d, 0x5fcf013d, 0xc8e6e12c, 0xc8e6e12c, 0xc8e6e12c, 0x1af6f95a, 0x1af6f95a, 0x1af6f95a, 0xc85c6c5, 0xc85c6c5, 0xc85c6c5, 0x5fcf013d, 0x1326a9b, 0x1326a9b, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_cyr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x4450a5dc, 0xda479f49, 0x4450a5dc, 0x5f557fdb, 0xdd28f52b, 0xdd28f52b, 0xddfe9197, 0xddfe9197, 0xddfe9197, 0xfcc26873, 0xfcc26873, 0xfcc26873, 0x817aa3ff, 0x817aa3ff, 0x817aa3ff, 0xdd28f52b, 0x5f557fdb, 0x5f557fdb, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_cyr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x409098da, 0x2e0890e, 0x409098da, 0xbf2f835a, 0x43d1f34, 0x43d1f34, 0x253d050e, 0x253d050e, 0x253d050e, 0x5a37aca6, 0x5a37aca6, 0x5a37aca6, 0xc366a920, 0xc366a920, 0xc366a920, 0x43d1f34, 0xbf2f835a, 0xbf2f835a, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_heb", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x546aa9f1, 0x56bf26d0, 0x546aa9f1, 0x179c64b6, 0x59c36f00, 0x59c36f00, 0xa98ad4a1, 0xa98ad4a1, 0xa98ad4a1, 0xd70ab9c7, 0xd70ab9c7, 0xd70ab9c7, 0xb5fcac15, 0xb5fcac15, 0xb5fcac15, 0x59c36f00, 0x179c64b6, 0x179c64b6, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_heb", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x12592c97, 0xa10f7034, 0x12592c97, 0x3c5ca9e8, 0xaa4593fe, 0xaa4593fe, 0x2c3e194, 0x2c3e194, 0x2c3e194, 0xa436ecf3, 0xa436ecf3, 0xa436ecf3, 0x890e478b, 0x890e478b, 0x890e478b, 0xaa4593fe, 0x3c5ca9e8, 0x3c5ca9e8, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_heb", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xed5de42a, 0x5cf94e51, 0xed5de42a, 0xb04a89ae, 0xc9cbf769, 0xc9cbf769, 0xdd578210, 0xdd578210, 0xdd578210, 0x238f43dc, 0x238f43dc, 0x238f43dc, 0xcac5fcd4, 0xcac5fcd4, 0xcac5fcd4, 0xc9cbf769, 0xb04a89ae, 0xb04a89ae, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_heb", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xbbc56f90, 0x4f643bbb, 0xbbc56f90, 0x15932648, 0x9813a416, 0x9813a416, 0x28aba4d1, 0x28aba4d1, 0x28aba4d1, 0xb97022e2, 0xb97022e2, 0xb97022e2, 0xa0ca1f32, 0xa0ca1f32, 0xa0ca1f32, 0x9813a416, 0x15932648, 0x15932648, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_heb", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x43465d8c, 0x6399888a, 0x43465d8c, 0x35e0683f, 0x5fcf013d, 0x5fcf013d, 0x4895c207, 0x4895c207, 0x4895c207, 0x9a85da71, 0x9a85da71, 0x9a85da71, 0x8cf6e5ee, 0x8cf6e5ee, 0x8cf6e5ee, 0x5fcf013d, 0x35e0683f, 0x35e0683f, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_heb", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xd1e7f231, 0xe67e195e, 0xd1e7f231, 0xcae22836, 0xdd28f52b, 0xdd28f52b, 0xe7ae9f08, 0xe7ae9f08, 0xe7ae9f08, 0xc69266ec, 0xc69266ec, 0xc69266ec, 0xbb2aad60, 0xbb2aad60, 0xbb2aad60, 0xdd28f52b, 0xcae22836, 0xcae22836, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_heb", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x793e58f4, 0x5f939386, 0x793e58f4, 0x86814374, 0x43d1f34, 0x43d1f34, 0x12b2b9c1, 0x12b2b9c1, 0x12b2b9c1, 0x6db81069, 0x6db81069, 0x6db81069, 0xf4e915ef, 0xf4e915ef, 0xf4e915ef, 0x43d1f34, 0x86814374, 0x86814374, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_gre", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x226c0d75, 0x9e291f4f, 0x226c0d75, 0x619ac032, 0x59c36f00, 0x59c36f00, 0x6fb6253, 0x6fb6253, 0x6fb6253, 0x787b0f35, 0x787b0f35, 0x787b0f35, 0x1a8d1ae7, 0x1a8d1ae7, 0x1a8d1ae7, 0x59c36f00, 0x619ac032, 0x619ac032, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_gre", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x8355045, 0xfe058b68, 0x8355045, 0x2630d53a, 0xaa4593fe, 0xaa4593fe, 0x290a3822, 0x290a3822, 0x290a3822, 0x8fff3545, 0x8fff3545, 0x8fff3545, 0xa2c79e3d, 0xa2c79e3d, 0xa2c79e3d, 0xaa4593fe, 0x2630d53a, 0x2630d53a, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_gre", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xc702fa59, 0x74086887, 0xc702fa59, 0x9a1597dd, 0xc9cbf769, 0xc9cbf769, 0x60295baa, 0x60295baa, 0x60295baa, 0x9ef19a66, 0x9ef19a66, 0x9ef19a66, 0x77bb256e, 0x77bb256e, 0x77bb256e, 0xc9cbf769, 0x9a1597dd, 0x9a1597dd, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_gre", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x82385331, 0xf77eda42, 0x82385331, 0x2c6e1ae9, 0x9813a416, 0x9813a416, 0x140c0d1f, 0x140c0d1f, 0x140c0d1f, 0x85d78b2c, 0x85d78b2c, 0x85d78b2c, 0x9c6db6fc, 0x9c6db6fc, 0x9c6db6fc, 0x9813a416, 0x2c6e1ae9, 0x2c6e1ae9, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_gre", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x565d2d38, 0x34f757ec, 0x565d2d38, 0x20fb188b, 0x5fcf013d, 0x5fcf013d, 0x230bf123, 0x230bf123, 0x230bf123, 0xf11be955, 0xf11be955, 0xf11be955, 0xe768d6ca, 0xe768d6ca, 0xe768d6ca, 0x5fcf013d, 0x20fb188b, 0x20fb188b, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_gre", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x632132a4, 0x4a8c90b2, 0x632132a4, 0x7824e8a3, 0xdd28f52b, 0xdd28f52b, 0xef2bffce, 0xef2bffce, 0xef2bffce, 0xce17062a, 0xce17062a, 0xce17062a, 0xb3afcda6, 0xb3afcda6, 0xb3afcda6, 0xdd28f52b, 0x7824e8a3, 0x7824e8a3, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_gre", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x461d4cfa, 0xfd3492c2, 0x461d4cfa, 0xb9a2577a, 0x43d1f34, 0x43d1f34, 0xfb72301f, 0xfb72301f, 0xfb72301f, 0x847899b7, 0x847899b7, 0x847899b7, 0x1d299c31, 0x1d299c31, 0x1d299c31, 0x43d1f34, 0xb9a2577a, 0xb9a2577a, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_ru", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x82758f66, 0xbac387fd, 0x82758f66, 0xc1834221, 0x59c36f00, 0x59c36f00, 0x4877befe, 0x4877befe, 0x4877befe, 0x36f7d398, 0x36f7d398, 0x36f7d398, 0x5401c64a, 0x5401c64a, 0x5401c64a, 0x59c36f00, 0xc1834221, 0xc1834221, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_ru", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x4500a591, 0x9a40cbd8, 0x4500a591, 0x6b0520ee, 0xaa4593fe, 0xaa4593fe, 0x16db2902, 0x16db2902, 0x16db2902, 0xb02e2465, 0xb02e2465, 0xb02e2465, 0x9d168f1d, 0x9d168f1d, 0x9d168f1d, 0xaa4593fe, 0x6b0520ee, 0x6b0520ee, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_ru", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x3cd9ea11, 0x1244c852, 0x3cd9ea11, 0x61ce8795, 0xc9cbf769, 0xc9cbf769, 0x6b15d6f0, 0x6b15d6f0, 0x6b15d6f0, 0x95cd173c, 0x95cd173c, 0x95cd173c, 0x7c87a834, 0x7c87a834, 0x7c87a834, 0xc9cbf769, 0x61ce8795, 0x61ce8795, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_ru", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xc818f15f, 0xbaf13382, 0xc818f15f, 0x664eb887, 0x9813a416, 0x9813a416, 0x350fe990, 0x350fe990, 0x350fe990, 0xa4d46fa3, 0xa4d46fa3, 0xa4d46fa3, 0xbd6e5273, 0xbd6e5273, 0xbd6e5273, 0x9813a416, 0x664eb887, 0x664eb887, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_ru", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xaa1dc81, 0x234341dd, 0xaa1dc81, 0x7c07e932, 0x5fcf013d, 0x5fcf013d, 0x969354c5, 0x969354c5, 0x969354c5, 0x44834cb3, 0x44834cb3, 0x44834cb3, 0x52f0732c, 0x52f0732c, 0x52f0732c, 0x5fcf013d, 0x7c07e932, 0x7c07e932, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_ru", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xd9aa4b29, 0x555fdda0, 0xd9aa4b29, 0xc2af912e, 0xdd28f52b, 0xdd28f52b, 0xe82cbfd, 0xe82cbfd, 0xe82cbfd, 0x2fbe3219, 0x2fbe3219, 0x2fbe3219, 0x5206f995, 0x5206f995, 0x5206f995, 0xdd28f52b, 0xc2af912e, 0xc2af912e, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_ru", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xfd4e19ff, 0x42807b86, 0xfd4e19ff, 0x2f1027f, 0x43d1f34, 0x43d1f34, 0x924dc5be, 0x924dc5be, 0x924dc5be, 0xed476c16, 0xed476c16, 0xed476c16, 0x74166990, 0x74166990, 0x74166990, 0x43d1f34, 0x2f1027f, 0x2f1027f, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_fr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x3a63a2e6, 0x118487d4, 0x3a63a2e6, 0x79956fa1, 0x59c36f00, 0x59c36f00, 0x389f4d2d, 0x389f4d2d, 0x389f4d2d, 0x461f204b, 0x461f204b, 0x461f204b, 0x24e93599, 0x24e93599, 0x24e93599, 0x59c36f00, 0x79956fa1, 0x79956fa1, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_fr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x62d33f4d, 0x9544a8f4, 0x62d33f4d, 0x4cd6ba32, 0xaa4593fe, 0xaa4593fe, 0xfb86a3a4, 0xfb86a3a4, 0xfb86a3a4, 0x5d73aec3, 0x5d73aec3, 0x5d73aec3, 0x704b05bb, 0x704b05bb, 0x704b05bb, 0xaa4593fe, 0x4cd6ba32, 0x4cd6ba32, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_fr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x8cc4b6dc, 0x1042c383, 0x8cc4b6dc, 0xd1d3db58, 0xc9cbf769, 0xc9cbf769, 0xeba8a32b, 0xeba8a32b, 0xeba8a32b, 0x157062e7, 0x157062e7, 0x157062e7, 0xfc3addef, 0xfc3addef, 0xfc3addef, 0xc9cbf769, 0xd1d3db58, 0xd1d3db58, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_fr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x23f9afd, 0x465f5ecc, 0x23f9afd, 0xac69d325, 0x9813a416, 0x9813a416, 0xccf7a1e3, 0xccf7a1e3, 0xccf7a1e3, 0x5d2c27d0, 0x5d2c27d0, 0x5d2c27d0, 0x44961a00, 0x44961a00, 0x44961a00, 0x9813a416, 0xac69d325, 0xac69d325, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_fr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xed796a26, 0x3132d083, 0xed796a26, 0x9bdf5f95, 0x5fcf013d, 0x5fcf013d, 0x42f66a49, 0x42f66a49, 0x42f66a49, 0x90e6723f, 0x90e6723f, 0x90e6723f, 0x86954da0, 0x86954da0, 0x86954da0, 0x5fcf013d, 0x9bdf5f95, 0x9bdf5f95, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_fr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x54b28785, 0x7fbbe762, 0x54b28785, 0x4fb75d82, 0xdd28f52b, 0xdd28f52b, 0x14b1cf29, 0x14b1cf29, 0x14b1cf29, 0x358d36cd, 0x358d36cd, 0x358d36cd, 0x4835fd41, 0x4835fd41, 0x4835fd41, 0xdd28f52b, 0x4fb75d82, 0x4fb75d82, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_fr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x7acc2669, 0xbf1a1d96, 0x7acc2669, 0x85733de9, 0x43d1f34, 0x43d1f34, 0x2cc1e8f4, 0x2cc1e8f4, 0x2cc1e8f4, 0x53cb415c, 0x53cb415c, 0x53cb415c, 0xca9a44da, 0xca9a44da, 0xca9a44da, 0x43d1f34, 0x85733de9, 0x85733de9, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_quot", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xf9511593, 0x9f9ef910, 0xf9511593, 0xbaa7d8d4, 0x59c36f00, 0x59c36f00, 0x7fd94135, 0x7fd94135, 0x7fd94135, 0x1592c53, 0x1592c53, 0x1592c53, 0x63af3981, 0x63af3981, 0x63af3981, 0x59c36f00, 0xbaa7d8d4, 0xbaa7d8d4, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_quot", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x3dcbe25f, 0x99e165e7, 0x3dcbe25f, 0x13ce6720, 0xaa4593fe, 0xaa4593fe, 0x2e88732f, 0x2e88732f, 0x2e88732f, 0x887d7e48, 0x887d7e48, 0x887d7e48, 0xa545d530, 0xa545d530, 0xa545d530, 0xaa4593fe, 0x13ce6720, 0x13ce6720, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_quot", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xdbedc74c, 0x61619894, 0xdbedc74c, 0x86faaac8, 0xc9cbf769, 0xc9cbf769, 0xda1c9f17, 0xda1c9f17, 0xda1c9f17, 0x24c45edb, 0x24c45edb, 0x24c45edb, 0xcd8ee1d3, 0xcd8ee1d3, 0xcd8ee1d3, 0xc9cbf769, 0x86faaac8, 0x86faaac8, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_quot", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x2411f56f, 0x97b1fc58, 0x2411f56f, 0x8a47bcb7, 0x9813a416, 0x9813a416, 0xfb08d7cf, 0xfb08d7cf, 0xfb08d7cf, 0x6ad351fc, 0x6ad351fc, 0x6ad351fc, 0x73696c2c, 0x73696c2c, 0x73696c2c, 0x9813a416, 0x8a47bcb7, 0x8a47bcb7, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_quot", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x13a65fb6, 0x35044d7, 0x13a65fb6, 0x65006a05, 0x5fcf013d, 0x5fcf013d, 0x9e56a9e0, 0x9e56a9e0, 0x9e56a9e0, 0x4c46b196, 0x4c46b196, 0x4c46b196, 0x5a358e09, 0x5a358e09, 0x5a358e09, 0x5fcf013d, 0x65006a05, 0x65006a05, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_quot", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xc8f05290, 0x9c88f64e, 0xc8f05290, 0xd3f58897, 0xdd28f52b, 0xdd28f52b, 0xe1579057, 0xe1579057, 0xe1579057, 0xc06b69b3, 0xc06b69b3, 0xc06b69b3, 0xbdd3a23f, 0xbdd3a23f, 0xbdd3a23f, 0xdd28f52b, 0xd3f58897, 0xd3f58897, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_quot", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x9cfbc80f, 0x376a1fb2, 0x9cfbc80f, 0x6344d38f, 0x43d1f34, 0x43d1f34, 0x6486f7c4, 0x6486f7c4, 0x6486f7c4, 0x1b8c5e6c, 0x1b8c5e6c, 0x1b8c5e6c, 0x82dd5bea, 0x82dd5bea, 0x82dd5bea, 0x43d1f34, 0x6344d38f, 0x6344d38f, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_piglatin", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd327ca68, 0x9c977e8c, 0xd327ca68, 0x90d1072f, 0x59c36f00, 0x59c36f00, 0x71c9d9, 0x71c9d9, 0x71c9d9, 0x7ef1a4bf, 0x7ef1a4bf, 0x7ef1a4bf, 0x1c07b16d, 0x1c07b16d, 0x1c07b16d, 0x59c36f00, 0x90d1072f, 0x90d1072f, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_piglatin", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x2da3855b, 0x24c7b138, 0x2da3855b, 0x3a60024, 0xaa4593fe, 0xaa4593fe, 0x147ff249, 0x147ff249, 0x147ff249, 0xb28aff2e, 0xb28aff2e, 0xb28aff2e, 0x9fb25456, 0x9fb25456, 0x9fb25456, 0xaa4593fe, 0x3a60024, 0x3a60024, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_piglatin", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x660ab3d9, 0xa75b45c4, 0x660ab3d9, 0x3b1dde5d, 0xc9cbf769, 0xc9cbf769, 0x5ff884f5, 0x5ff884f5, 0x5ff884f5, 0xa1204539, 0xa1204539, 0xa1204539, 0x486afa31, 0x486afa31, 0x486afa31, 0xc9cbf769, 0x3b1dde5d, 0x3b1dde5d, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_piglatin", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x920957ee, 0xceebfd42, 0x920957ee, 0x3c5f1e36, 0x9813a416, 0x9813a416, 0xa917dbef, 0xa917dbef, 0xa917dbef, 0x38cc5ddc, 0x38cc5ddc, 0x38cc5ddc, 0x2176600c, 0x2176600c, 0x2176600c, 0x9813a416, 0x3c5f1e36, 0x3c5f1e36, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_piglatin", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x8298cd03, 0xfb88293a, 0x8298cd03, 0xf43ef8b0, 0x5fcf013d, 0x5fcf013d, 0x8f57f36b, 0x8f57f36b, 0x8f57f36b, 0x5d47eb1d, 0x5d47eb1d, 0x5d47eb1d, 0x4b34d482, 0x4b34d482, 0x4b34d482, 0x5fcf013d, 0xf43ef8b0, 0xf43ef8b0, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_piglatin", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xd8bbc577, 0xb2c37549, 0xd8bbc577, 0xc3be1f70, 0xdd28f52b, 0xdd28f52b, 0xd8b598e, 0xd8b598e, 0xd8b598e, 0x2cb7a06a, 0x2cb7a06a, 0x2cb7a06a, 0x510f6be6, 0x510f6be6, 0x510f6be6, 0xdd28f52b, 0xc3be1f70, 0xc3be1f70, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_piglatin", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x4d7993a1, 0xbeefcd88, 0x4d7993a1, 0xb2c68821, 0x43d1f34, 0x43d1f34, 0x1dbc7020, 0x1dbc7020, 0x1dbc7020, 0x62b6d988, 0x62b6d988, 0x62b6d988, 0xfbe7dc0e, 0xfbe7dc0e, 0xfbe7dc0e, 0x43d1f34, 0xb2c68821, 0xb2c68821, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_ch", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x628b6f61, 0x50f94215, 0x628b6f61, 0x217da226, 0x59c36f00, 0x59c36f00, 0x5755be7f, 0x5755be7f, 0x5755be7f, 0x29d5d319, 0x29d5d319, 0x29d5d319, 0x4b23c6cb, 0x4b23c6cb, 0x4b23c6cb, 0x59c36f00, 0x217da226, 0x217da226, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_ch", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x9f82cd08, 0xbc67f78d, 0x9f82cd08, 0xb1874877, 0xaa4593fe, 0xaa4593fe, 0x4749512e, 0x4749512e, 0x4749512e, 0xe1bc5c49, 0xe1bc5c49, 0xe1bc5c49, 0xcc84f731, 0xcc84f731, 0xcc84f731, 0xaa4593fe, 0xb1874877, 0xb1874877, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_ch", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xbee47cfb, 0x88e98534, 0xbee47cfb, 0xe3f3117f, 0xc9cbf769, 0xc9cbf769, 0xe2396b15, 0xe2396b15, 0xe2396b15, 0x1ce1aad9, 0x1ce1aad9, 0x1ce1aad9, 0xf5ab15d1, 0xf5ab15d1, 0xf5ab15d1, 0xc9cbf769, 0xe3f3117f, 0xe3f3117f, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_ch", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x2bfd5a83, 0xbe3c6f2f, 0x2bfd5a83, 0x85ab135b, 0x9813a416, 0x9813a416, 0xce30693b, 0xce30693b, 0xce30693b, 0x5febef08, 0x5febef08, 0x5febef08, 0x4651d2d8, 0x4651d2d8, 0x4651d2d8, 0x9813a416, 0x85ab135b, 0x85ab135b, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_ch", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x1456f321, 0xc3a55992, 0x1456f321, 0x62f0c692, 0x5fcf013d, 0x5fcf013d, 0xbe3d534a, 0xbe3d534a, 0xbe3d534a, 0x6c2d4b3c, 0x6c2d4b3c, 0x6c2d4b3c, 0x7a5e74a3, 0x7a5e74a3, 0x7a5e74a3, 0x5fcf013d, 0x62f0c692, 0x62f0c692, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_ch", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xdcac6945, 0x43fbdf5a, 0xdcac6945, 0xc7a9b342, 0xdd28f52b, 0xdd28f52b, 0x274da20b, 0x274da20b, 0x274da20b, 0x6715bef, 0x6715bef, 0x6715bef, 0x7bc99063, 0x7bc99063, 0x7bc99063, 0xdd28f52b, 0xc7a9b342, 0xc7a9b342, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_ch", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x571e16b1, 0xb9f25c2, 0x571e16b1, 0xa8a10d31, 0x43d1f34, 0x43d1f34, 0x25dfb69d, 0x25dfb69d, 0x25dfb69d, 0x5ad51f35, 0x5ad51f35, 0x5ad51f35, 0xc3841ab3, 0xc3841ab3, 0xc3841ab3, 0x43d1f34, 0xa8a10d31, 0xa8a10d31, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_red", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xec987771, 0x8a579bf2, 0xec987771, 0xbbb5c9af, 0x59c36f00, 0x59c36f00, 0x16780f43, 0x16780f43, 0x16780f43, 0x68f86225, 0x68f86225, 0x68f86225, 0xa0e77f7, 0xa0e77f7, 0xa0e77f7, 0x59c36f00, 0xbbb5c9af, 0xbbb5c9af, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_red", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x97994d2c, 0x33b3ca94, 0x97994d2c, 0x273e977a, 0xaa4593fe, 0xaa4593fe, 0xa592c9d5, 0xa592c9d5, 0xa592c9d5, 0x367c4b2, 0x367c4b2, 0x367c4b2, 0x2e5f6fca, 0x2e5f6fca, 0x2e5f6fca, 0xaa4593fe, 0x273e977a, 0x273e977a, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_red", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x5d2416aa, 0xe7a84972, 0x5d2416aa, 0x4d010804, 0xc9cbf769, 0xc9cbf769, 0x4e3a88a0, 0x4e3a88a0, 0x4e3a88a0, 0xb0e2496c, 0xb0e2496c, 0xb0e2496c, 0x59a8f664, 0x59a8f664, 0x59a8f664, 0xc9cbf769, 0x4d010804, 0x4d010804, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_red", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x1da65b43, 0xae065274, 0x1da65b43, 0x2dd7a76c, 0x9813a416, 0x9813a416, 0xf81d19f, 0xf81d19f, 0xf81d19f, 0x9e5a57ac, 0x9e5a57ac, 0x9e5a57ac, 0x87e06a7c, 0x87e06a7c, 0x87e06a7c, 0x9813a416, 0x2dd7a76c, 0x2dd7a76c, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_red", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xea8a940e, 0xfa7c8f6f, 0xea8a940e, 0x448d7bfb, 0x5fcf013d, 0x5fcf013d, 0x47c22fa0, 0x47c22fa0, 0x47c22fa0, 0x95d237d6, 0x95d237d6, 0x95d237d6, 0x83a10849, 0x83a10849, 0x83a10849, 0x5fcf013d, 0x448d7bfb, 0x448d7bfb, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_red", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xc0ac44fa, 0x94d4e024, 0xc0ac44fa, 0x4ec88f20, 0xdd28f52b, 0xdd28f52b, 0x2422f542, 0x2422f542, 0x2422f542, 0x51e0ca6, 0x51e0ca6, 0x51e0ca6, 0x78a6c72a, 0x78a6c72a, 0x78a6c72a, 0xdd28f52b, 0x4ec88f20, 0x4ec88f20, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_red", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x248f7655, 0x8f1ea1e8, 0x248f7655, 0xb3d7f0f5, 0x43d1f34, 0x43d1f34, 0x8c408c04, 0x8c408c04, 0x8c408c04, 0xf34a25ac, 0xf34a25ac, 0xf34a25ac, 0x6a1b202a, 0x6a1b202a, 0x6a1b202a, 0x43d1f34, 0xb3d7f0f5, 0xb3d7f0f5, 0x43d1f34, }, 20 },
|
||||
- { "gfxterm_high", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd6ba8f78, 0xb07563fb, 0xd6ba8f78, 0x6ef020b2, 0x59c36f00, 0x59c36f00, 0x7fd94135, 0x7fd94135, 0x7fd94135, 0x1592c53, 0x1592c53, 0x1592c53, 0x63af3981, 0x63af3981, 0x63af3981, 0x59c36f00, 0x6ef020b2, 0x6ef020b2, 0x59c36f00, }, 20 },
|
||||
- { "gfxterm_high", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xf5257f70, 0x510ff8c8, 0xf5257f70, 0x36a3b7ff, 0xaa4593fe, 0xaa4593fe, 0x2e88732f, 0x2e88732f, 0x2e88732f, 0x887d7e48, 0x887d7e48, 0x887d7e48, 0xa545d530, 0xa545d530, 0xa545d530, 0xaa4593fe, 0x36a3b7ff, 0x36a3b7ff, 0xaa4593fe, }, 20 },
|
||||
- { "gfxterm_high", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x9f8effb3, 0x2502a06b, 0x9f8effb3, 0xddeb038e, 0xc9cbf769, 0xc9cbf769, 0xda1c9f17, 0xda1c9f17, 0xda1c9f17, 0x24c45edb, 0x24c45edb, 0x24c45edb, 0xcd8ee1d3, 0xcd8ee1d3, 0xcd8ee1d3, 0xc9cbf769, 0xddeb038e, 0xddeb038e, 0xc9cbf769, }, 20 },
|
||||
- { "gfxterm_high", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x6aa72774, 0xd9072e43, 0x6aa72774, 0x24b4853d, 0x9813a416, 0x9813a416, 0xfb08d7cf, 0xfb08d7cf, 0xfb08d7cf, 0x6ad351fc, 0x6ad351fc, 0x6ad351fc, 0x73696c2c, 0x73696c2c, 0x73696c2c, 0x9813a416, 0x24b4853d, 0x24b4853d, 0x9813a416, }, 20 },
|
||||
- { "gfxterm_high", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x936eb1d8, 0x8398aab9, 0x936eb1d8, 0x8beef, 0x5fcf013d, 0x5fcf013d, 0x9e56a9e0, 0x9e56a9e0, 0x9e56a9e0, 0x4c46b196, 0x4c46b196, 0x4c46b196, 0x5a358e09, 0x5a358e09, 0x5a358e09, 0x5fcf013d, 0x8beef, 0x8beef, 0x5fcf013d, }, 20 },
|
||||
- { "gfxterm_high", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xdd4b9ec3, 0x89333a1d, 0xdd4b9ec3, 0x3acd5a9d, 0xdd28f52b, 0xdd28f52b, 0xe1579057, 0xe1579057, 0xe1579057, 0xc06b69b3, 0xc06b69b3, 0xc06b69b3, 0xbdd3a23f, 0xbdd3a23f, 0xbdd3a23f, 0xdd28f52b, 0x3acd5a9d, 0x3acd5a9d, 0xdd28f52b, }, 20 },
|
||||
- { "gfxterm_high", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x89f37601, 0x2262a1bc, 0x89f37601, 0xf17b28ae, 0x43d1f34, 0x43d1f34, 0x6486f7c4, 0x6486f7c4, 0x6486f7c4, 0x1b8c5e6c, 0x1b8c5e6c, 0x1b8c5e6c, 0x82dd5bea, 0x82dd5bea, 0x82dd5bea, 0x43d1f34, 0xf17b28ae, 0xf17b28ae, 0x43d1f34, }, 20 },
|
||||
- { "videotest", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, 0x1368a483, }, 5 },
|
||||
- { "videotest", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, 0x7033079c, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, 0xff583fbf, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x4c2cef83, 0x1b215a88, 0xe2378595, 0xb53a309e, 0x15f64d5e, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x758f388c, 0xd4442397, 0x33f5784b, 0x923e6350, 0xf97bb902, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xb9f6f52a, 0x4e24e8b7, 0x53beb8e1, 0xa46ca57c, 0x688a184d, }, 5 },
|
||||
- { "videotest", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x5bd98ce3, 0x15df7962, 0xc7d467e1, 0x89d29260, 0x662e2c16, }, 5 },
|
||||
- { "videotest", 640, 480, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi256 */, (grub_uint32_t []) { 0xf9847b65, 0xf9847b65, 0xf9847b65, 0xf9847b65, 0xf9847b65, }, 5 },
|
||||
- { "videotest", 800, 600, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi256 */, (grub_uint32_t []) { 0xc421716d, 0xc421716d, 0xc421716d, 0xc421716d, 0xc421716d, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi256 */, (grub_uint32_t []) { 0x5d46f2a8, 0x5d46f2a8, 0x5d46f2a8, 0x5d46f2a8, 0x5d46f2a8, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 640x480xrgba5550 */, (grub_uint32_t []) { 0x25690db2, 0x25690db2, 0x25690db2, 0x25690db2, 0x25690db2, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 800x600xrgba5550 */, (grub_uint32_t []) { 0x7333f220, 0x7333f220, 0x7333f220, 0x7333f220, 0x7333f220, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 1024x768xrgba5550 */, (grub_uint32_t []) { 0xac52d537, 0xac52d537, 0xac52d537, 0xac52d537, 0xac52d537, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 640x480xrgba5650 */, (grub_uint32_t []) { 0xd4cbcd66, 0xd4cbcd66, 0xd4cbcd66, 0xd4cbcd66, 0xd4cbcd66, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 800x600xrgba5650 */, (grub_uint32_t []) { 0x9d23f9d1, 0x9d23f9d1, 0x9d23f9d1, 0x9d23f9d1, 0x9d23f9d1, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 1024x768xrgba5650 */, (grub_uint32_t []) { 0x89acbf88, 0x89acbf88, 0x89acbf88, 0x89acbf88, 0x89acbf88, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 640x480xrgba8880 */, (grub_uint32_t []) { 0x335fadcb, 0x1f517b5c, 0x6b4200e5, 0x474cd672, 0x8364f797, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 800x600xrgba8880 */, (grub_uint32_t []) { 0xcf9985f8, 0x1d92c7fc, 0x6e637701, 0xbc683505, 0x898016fb, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 1024x768xrgba8880 */, (grub_uint32_t []) { 0xdb824190, 0x378d05dc, 0x670bff9, 0xea7ffbb5, 0x658bcbb3, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 640x480xbgra5550 */, (grub_uint32_t []) { 0x18ed532e, 0x18ed532e, 0x18ed532e, 0x18ed532e, 0x18ed532e, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 800x600xbgra5550 */, (grub_uint32_t []) { 0x2b35b09f, 0x2b35b09f, 0x2b35b09f, 0x2b35b09f, 0x2b35b09f, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 1024x768xbgra5550 */, (grub_uint32_t []) { 0xa24c4d98, 0xa24c4d98, 0xa24c4d98, 0xa24c4d98, 0xa24c4d98, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 640x480xbgra5650 */, (grub_uint32_t []) { 0xc07dde33, 0xc07dde33, 0xc07dde33, 0xc07dde33, 0xc07dde33, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 800x600xbgra5650 */, (grub_uint32_t []) { 0x7e6ed757, 0x7e6ed757, 0x7e6ed757, 0x7e6ed757, 0x7e6ed757, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 1024x768xbgra5650 */, (grub_uint32_t []) { 0x700255dd, 0x700255dd, 0x700255dd, 0x700255dd, 0x700255dd, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 640x480xbgra8880 */, (grub_uint32_t []) { 0x157232bd, 0x5e6bdacd, 0x8341e25d, 0xc8580a2d, 0x3cf9e58c, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 800x600xbgra8880 */, (grub_uint32_t []) { 0xbfafd7cd, 0x51650951, 0x67d61c04, 0x891cc298, 0xab036ae, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 1024x768xbgra8880 */, (grub_uint32_t []) { 0x760580c9, 0xdc6d8205, 0x2739f3a0, 0x8d51f16c, 0xd47d661b, }, 5 },
|
||||
- { "videotest", 640, 480, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 640x480xbgra8888 */, (grub_uint32_t []) { 0xada3b5f, 0x24cd61a6, 0x56f48ead, 0x78e3d454, 0xb28750bb, }, 5 },
|
||||
- { "videotest", 800, 600, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 800x600xbgra8888 */, (grub_uint32_t []) { 0x827694e2, 0x9d97c3dd, 0xbdb43a9c, 0xa2556da3, 0xfdf3c81e, }, 5 },
|
||||
- { "videotest", 1024, 768, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 1024x768xbgra8888 */, (grub_uint32_t []) { 0x664534a5, 0xcd0979a0, 0x3531d85e, 0x9e7d955b, 0xc0aced53, }, 5 },
|
||||
+ { "cmdline_cat", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xc69be699, 0xc69be699, 0xe17fc97c, 0xe17fc97c, 0xc2512486, 0xc2512486, 0x20260761, 0x20260761, 0xe3485349, 0xe3485349, 0x6020b4d9, 0x6020b4d9, 0x1605db98, 0x1605db98, 0xdca51b58, 0xdca51b58, 0xf3d66441, 0xf3d66441, 0x18cb7ce2, 0x18cb7ce2, 0x23b616d9, 0x23b616d9, 0xa1bf5dbf, 0xa1bf5dbf, 0x5e4a8b3d, 0x5e4a8b3d, 0x9933b3d8, 0x9933b3d8, 0xce7be2de, 0xce7be2de, 0x62531729, 0x62531729, 0xc39d3788, 0xc39d3788, 0xf7aee2fe, 0xf7aee2fe, 0xc66f4903, 0xc66f4903, 0x536c922f, 0x536c922f, 0xcb231652, 0x4ae07b67, 0x146816d5, 0x146816d5, }, 45 },
|
||||
+ { "cmdline_cat", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x29d0cfb7, 0x29d0cfb7, 0x4d57ad88, 0x4d57ad88, 0xaf7591cb, 0xaf7591cb, 0xb88e3c0, 0xb88e3c0, 0x5d55a031, 0x5d55a031, 0x4363bcff, 0x4363bcff, 0xe1142833, 0xe1142833, 0x9578c80d, 0x9578c80d, 0xff1f5174, 0xff1f5174, 0x6828d47, 0x6828d47, 0x2a849ae3, 0x2a849ae3, 0x27a811d9, 0x27a811d9, 0x6c42e1cb, 0x6c42e1cb, 0x5bba61f5, 0x5bba61f5, 0xc02ab705, 0xc02ab705, 0xeb3e0e05, 0xeb3e0e05, 0x6f4ce3c, 0x6f4ce3c, 0x2075c50e, 0x2075c50e, 0x54ac7fba, 0x54ac7fba, 0x335d1c21, 0x335d1c21, 0xf923fbd1, 0x1b489d4d, 0x1253eb5e, 0x1253eb5e, }, 45 },
|
||||
+ { "cmdline_cat", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x6ff92a98, 0x6ff92a98, 0xbd8264b3, 0xbd8264b3, 0x5c50282c, 0x5c50282c, 0xd18d6a5a, 0xd18d6a5a, 0x99cea139, 0x99cea139, 0x2590c545, 0x2590c545, 0x55c86045, 0x55c86045, 0xad53ef1e, 0xad53ef1e, 0x5b44a23a, 0x5b44a23a, 0xa255f863, 0xa255f863, 0x85b0bdca, 0x85b0bdca, 0x4220ee1f, 0x4220ee1f, 0xeb991a9f, 0xeb991a9f, 0x86f366dd, 0x86f366dd, 0xfa176b7d, 0xfa176b7d, 0xd7384ca9, 0xd7384ca9, 0xceebf5c1, 0xceebf5c1, 0xae62b268, 0xae62b268, 0x6e89bbd6, 0x6e89bbd6, 0x3fe07c8e, 0x3fe07c8e, 0xee5358fe, 0x162d1a8a, 0x876f8d10, 0x876f8d10, }, 45 },
|
||||
+ { "cmdline_cat", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xb96afaea, 0xb96afaea, 0xaa16ab1e, 0xaa16ab1e, 0x51ff382, 0x51ff382, 0xec74f127, 0xec74f127, 0xde4bca99, 0xde4bca99, 0x8ef3e8a5, 0x8ef3e8a5, 0x2daeb0b4, 0x2daeb0b4, 0x7cf5e243, 0x7cf5e243, 0x11fd57c6, 0x11fd57c6, 0x140723af, 0x140723af, 0x2bd93833, 0x2bd93833, 0xd731f4ac, 0xd731f4ac, 0x5fcd7114, 0x5fcd7114, 0xd1fea24a, 0xd1fea24a, 0x4083d53a, 0x4083d53a, 0x2e372605, 0x2e372605, 0x8e6316a7, 0x8e6316a7, 0x283ef6cc, 0x283ef6cc, 0x20cee9de, 0x20cee9de, 0xad6fa187, 0xad6fa187, 0xd691f438, 0xf3257e63, 0x4786ba7, 0x4786ba7, }, 45 },
|
||||
+ { "cmdline_cat", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x48acf1bf, 0x48acf1bf, 0xb8777469, 0xb8777469, 0xad2fad44, 0xad2fad44, 0xa415ac59, 0xa415ac59, 0x5a7bfb26, 0x5a7bfb26, 0xccb6016, 0xccb6016, 0x77a80cb3, 0x77a80cb3, 0x2034c102, 0x2034c102, 0x444b4ccd, 0x444b4ccd, 0xe6c31bea, 0xe6c31bea, 0x8408036e, 0x8408036e, 0x9e7c556f, 0x9e7c556f, 0x445dc388, 0x445dc388, 0x94b3f850, 0x94b3f850, 0xf6f15341, 0xf6f15341, 0xcb939b5f, 0xcb939b5f, 0xbe88067d, 0xbe88067d, 0x1efc4734, 0x1efc4734, 0x7f5dfca8, 0x7f5dfca8, 0xb7b10eb9, 0xb7b10eb9, 0xb94cb441, 0x9571329, 0x8a26912b, 0x8a26912b, }, 45 },
|
||||
+ { "cmdline_cat", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xc508d04e, 0xc508d04e, 0x6dbccbfe, 0x6dbccbfe, 0xbf06ff60, 0xbf06ff60, 0xbc5ab06, 0xbc5ab06, 0x97eeab3c, 0x97eeab3c, 0x62663589, 0x62663589, 0xb03e21e2, 0xb03e21e2, 0xea196bb6, 0xea196bb6, 0x672c16c4, 0x672c16c4, 0xefbca2cd, 0xefbca2cd, 0x1af5b410, 0x1af5b410, 0xc7a80569, 0xc7a80569, 0x4926a16, 0x4926a16, 0xee29c99c, 0xee29c99c, 0xffb15985, 0xffb15985, 0x4f608e46, 0x4f608e46, 0x3e450fd2, 0x3e450fd2, 0xac45215f, 0xac45215f, 0x789b0ce7, 0x789b0ce7, 0x4cedfe22, 0x4cedfe22, 0xa005588c, 0x701da05c, 0x6f25cec1, 0x6f25cec1, }, 45 },
|
||||
+ { "cmdline_cat", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x29e7a7f, 0x29e7a7f, 0xbd221052, 0xbd221052, 0x3b18b64, 0x3b18b64, 0x7f1e8462, 0x7f1e8462, 0xf28d5124, 0xf28d5124, 0xc336f170, 0xc336f170, 0xfe3bf988, 0xfe3bf988, 0x7bf89e05, 0x7bf89e05, 0x7857a3f8, 0x7857a3f8, 0x272c1a36, 0x272c1a36, 0xe8adb445, 0xe8adb445, 0x70cfe280, 0x70cfe280, 0x4f2b6120, 0x4f2b6120, 0xbaf5caa5, 0xbaf5caa5, 0x4b6bcab2, 0x4b6bcab2, 0x2bef7b92, 0x2bef7b92, 0x17b381dc, 0x17b381dc, 0x884c9c35, 0x884c9c35, 0x2f9eb909, 0x2f9eb909, 0xa811b3af, 0xa811b3af, 0x4c39478f, 0x5a72c3ab, 0x8071678a, 0x8071678a, }, 45 },
|
||||
+ { "gfxterm_menu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd9f04953, 0xbf3fa5d0, 0xd9f04953, 0x9a068414, 0x59c36f00, 0x59c36f00, 0x620c0067, 0x620c0067, 0x620c0067, 0x1c8c6d01, 0x1c8c6d01, 0x1c8c6d01, 0xc3269013, 0xc3269013, 0xc3269013, 0x59c36f00, 0x9a068414, 0x9a068414, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_menu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x9254157f, 0x367e92c7, 0x9254157f, 0xbc519000, 0xaa4593fe, 0xaa4593fe, 0xa8a596c8, 0xa8a596c8, 0xa8a596c8, 0xe509baf, 0xe509baf, 0xe509baf, 0x16f0dc06, 0x16f0dc06, 0x16f0dc06, 0xaa4593fe, 0xbc519000, 0xbc519000, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_menu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x354b1976, 0x8fc746ae, 0x354b1976, 0x685c74f2, 0xc9cbf769, 0xc9cbf769, 0x3ce35e1d, 0x3ce35e1d, 0x3ce35e1d, 0xc23b9fd1, 0xc23b9fd1, 0xc23b9fd1, 0x5b18528e, 0x5b18528e, 0x5b18528e, 0xc9cbf769, 0x685c74f2, 0x685c74f2, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_menu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x1c9ec014, 0xaf3ec923, 0x1c9ec014, 0x43f5296, 0x9813a416, 0x9813a416, 0x43fda3fa, 0x43fda3fa, 0x43fda3fa, 0xd22625c9, 0xd22625c9, 0xd22625c9, 0x76a62c0a, 0x76a62c0a, 0x76a62c0a, 0x9813a416, 0x43f5296, 0x43f5296, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_menu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xa704f7ea, 0xb7f2ec8b, 0xa704f7ea, 0xb279bf59, 0x5fcf013d, 0x5fcf013d, 0xf3582c48, 0xf3582c48, 0xf3582c48, 0x2148343e, 0x2148343e, 0x2148343e, 0x9c719024, 0x9c719024, 0x9c719024, 0x5fcf013d, 0xb279bf59, 0xb279bf59, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_menu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xf293ce36, 0xa6eb6ae8, 0xf293ce36, 0xcd87647e, 0xdd28f52b, 0xdd28f52b, 0xb3c7ef80, 0xb3c7ef80, 0xb3c7ef80, 0x92fb1664, 0x92fb1664, 0x92fb1664, 0xd15b5e2e, 0xd15b5e2e, 0xd15b5e2e, 0xdd28f52b, 0xcd87647e, 0xcd87647e, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_menu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x31e75bd7, 0x9a768c6a, 0x31e75bd7, 0xa8fc31a6, 0x43d1f34, 0x43d1f34, 0xa0717008, 0xa0717008, 0xa0717008, 0xdf7bd9a0, 0xdf7bd9a0, 0xdf7bd9a0, 0x8e5a9312, 0x8e5a9312, 0x8e5a9312, 0x43d1f34, 0xa8fc31a6, 0xa8fc31a6, 0x43d1f34, }, 20 },
|
||||
+ { "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x1ce7bd78, 0x682580f5, 0x1ce7bd78, 0x490ad6fe, 0x9a2e0d26, 0x64eb71ba, 0x64eb71ba, 0x64eb71ba, 0x3833877a, 0x3833877a, 0x3833877a, 0xcfc14f0a, 0xcfc14f0a, 0xcfc14f0a, 0x59c36f00, 0x490ad6fe, 0x490ad6fe, }, 18 },
|
||||
+ { "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x2b6ff87d, 0x63ce2ca2, 0x2b6ff87d, 0xf00f044e, 0xa9d58ccd, 0xe2c46577, 0xe2c46577, 0xe2c46577, 0xb79bcf7d, 0xb79bcf7d, 0xb79bcf7d, 0xbc30ed71, 0xbc30ed71, 0xbc30ed71, 0xaa4593fe, 0xf00f044e, 0xf00f044e, }, 18 },
|
||||
+ { "gfxmenu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xe61cadba, 0x9880b727, 0xe61cadba, 0xdf5f2fc0, 0x5411be8b, 0x4449774e, 0x4449774e, 0x4449774e, 0x3bf7d1da, 0x3bf7d1da, 0x3bf7d1da, 0xd2ddee01, 0xd2ddee01, 0xd2ddee01, 0xc9cbf769, 0xdf5f2fc0, 0xdf5f2fc0, }, 18 },
|
||||
+ { "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0xbe54acf7, 0x9b4ce770, 0xbe54acf7, 0x3111489, 0x740d78cf, 0x314c4c59, 0x314c4c59, 0x314c4c59, 0xdae9a625, 0xdae9a625, 0xdae9a625, 0xcbf8af57, 0xcbf8af57, 0xcbf8af57, 0x1c3742c9, 0x3111489, 0x3111489, }, 18 },
|
||||
+ { "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0xee571de5, 0x568aaeff, 0xee571de5, 0xe328b7a7, 0xbcda144c, 0xf56e1b60, 0xf56e1b60, 0xf56e1b60, 0x9a27c771, 0x9a27c771, 0x9a27c771, 0xd6d05397, 0xd6d05397, 0xd6d05397, 0xcc5a7bed, 0xe328b7a7, 0xe328b7a7, }, 18 },
|
||||
+ { "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xef4a3312, 0x1db9877c, 0x7e1afeae, 0x1db9877c, 0x8fc0c430, 0x5d55a141, 0x96f335c6, 0x96f335c6, 0x96f335c6, 0x504171d8, 0x504171d8, 0x504171d8, 0x69f71c0, 0x69f71c0, 0x69f71c0, 0xef4a3312, 0x8fc0c430, 0x8fc0c430, }, 18 },
|
||||
+ { "gfxmenu", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x54e48d80, 0x151819bd, 0xea8d4865, 0x151819bd, 0x11d75fd2, 0x6d6bb4bc, 0x650ccd09, 0x650ccd09, 0x650ccd09, 0xe4ff3bd8, 0xe4ff3bd8, 0xe4ff3bd8, 0xc5308b73, 0xc5308b73, 0xc5308b73, 0x54e48d80, 0x11d75fd2, 0x11d75fd2, }, 18 },
|
||||
+ { "gfxterm_ar", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd0b06c3d, 0xde50d1a5, 0xd0b06c3d, 0x9346a17a, 0x59c36f00, 0x59c36f00, 0xacff5d47, 0xacff5d47, 0xacff5d47, 0xd27f3021, 0xd27f3021, 0xd27f3021, 0xdd5cd33, 0xdd5cd33, 0xdd5cd33, 0x59c36f00, 0x9346a17a, 0x9346a17a, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_ar", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xf32d50c1, 0x730a7ed, 0xf32d50c1, 0xdd28d5be, 0xaa4593fe, 0xaa4593fe, 0xba8a2d4c, 0xba8a2d4c, 0xba8a2d4c, 0x1c7f202b, 0x1c7f202b, 0x1c7f202b, 0x4df6782, 0x4df6782, 0x4df6782, 0xaa4593fe, 0xdd28d5be, 0xdd28d5be, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_ar", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x711a4ac1, 0x6396f14c, 0x711a4ac1, 0x2c0d2745, 0xc9cbf769, 0xc9cbf769, 0x6b6ccbb0, 0x6b6ccbb0, 0x6b6ccbb0, 0x95b40a7c, 0x95b40a7c, 0x95b40a7c, 0xc97c723, 0xc97c723, 0xc97c723, 0xc9cbf769, 0x2c0d2745, 0x2c0d2745, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_ar", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x29baad6a, 0x348b1f2b, 0x29baad6a, 0x311b3fe8, 0x9813a416, 0x9813a416, 0xe8e982cc, 0xe8e982cc, 0xe8e982cc, 0x793204ff, 0x793204ff, 0x793204ff, 0xddb20d3c, 0xddb20d3c, 0xddb20d3c, 0x9813a416, 0x311b3fe8, 0x311b3fe8, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_ar", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xf834b3bb, 0x3951bd1a, 0xf834b3bb, 0xed49fb08, 0x5fcf013d, 0x5fcf013d, 0x5aefa2a7, 0x5aefa2a7, 0x5aefa2a7, 0x88ffbad1, 0x88ffbad1, 0x88ffbad1, 0x35c61ecb, 0x35c61ecb, 0x35c61ecb, 0x5fcf013d, 0xed49fb08, 0xed49fb08, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_ar", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x7e9a7a47, 0xb1651b5a, 0x7e9a7a47, 0x418ed00f, 0xdd28f52b, 0xdd28f52b, 0x83f9db69, 0x83f9db69, 0x83f9db69, 0xa2c5228d, 0xa2c5228d, 0xa2c5228d, 0xe1656ac7, 0xe1656ac7, 0xe1656ac7, 0xdd28f52b, 0x418ed00f, 0x418ed00f, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_ar", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xc6a0340, 0x7dd5855c, 0xc6a0340, 0x95716931, 0x43d1f34, 0x43d1f34, 0x5f1c24c0, 0x5f1c24c0, 0x5f1c24c0, 0x20168d68, 0x20168d68, 0x20168d68, 0x7137c7da, 0x7137c7da, 0x7137c7da, 0x43d1f34, 0x95716931, 0x95716931, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_cyr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xd3798aaa, 0xab48784c, 0xd3798aaa, 0x908f47ed, 0x59c36f00, 0x59c36f00, 0x1688ec7c, 0x1688ec7c, 0x1688ec7c, 0x6808811a, 0x6808811a, 0x6808811a, 0xb7a27c08, 0xb7a27c08, 0xb7a27c08, 0x59c36f00, 0x908f47ed, 0x908f47ed, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_cyr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xc30d9d2a, 0x60b9ed26, 0xc30d9d2a, 0xed081855, 0xaa4593fe, 0xaa4593fe, 0x3eba2192, 0x3eba2192, 0x3eba2192, 0x984f2cf5, 0x984f2cf5, 0x984f2cf5, 0x80ef6b5c, 0x80ef6b5c, 0x80ef6b5c, 0xaa4593fe, 0xed081855, 0xed081855, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_cyr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xe469e6af, 0x46ac2012, 0xe469e6af, 0xb97e8b2b, 0xc9cbf769, 0xc9cbf769, 0x60f0d993, 0x60f0d993, 0x60f0d993, 0x9e28185f, 0x9e28185f, 0x9e28185f, 0x70bd500, 0x70bd500, 0x70bd500, 0xc9cbf769, 0xb97e8b2b, 0xb97e8b2b, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_cyr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x8538d2ef, 0xab143284, 0x8538d2ef, 0x9d99406d, 0x9813a416, 0x9813a416, 0x7e8326ec, 0x7e8326ec, 0x7e8326ec, 0xef58a0df, 0xef58a0df, 0xef58a0df, 0x4bd8a91c, 0x4bd8a91c, 0x4bd8a91c, 0x9813a416, 0x9d99406d, 0x9d99406d, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_cyr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x8115198c, 0x1abdaee1, 0x8115198c, 0x9468513f, 0x5fcf013d, 0x5fcf013d, 0xa5e86484, 0xa5e86484, 0xa5e86484, 0x77f87cf2, 0x77f87cf2, 0x77f87cf2, 0xcac1d8e8, 0xcac1d8e8, 0xcac1d8e8, 0x5fcf013d, 0x9468513f, 0x9468513f, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_cyr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xea03b805, 0x74148290, 0xea03b805, 0xd517124d, 0xdd28f52b, 0xdd28f52b, 0x8f6eee40, 0x8f6eee40, 0x8f6eee40, 0xae5217a4, 0xae5217a4, 0xae5217a4, 0xedf25fee, 0xedf25fee, 0xedf25fee, 0xdd28f52b, 0xd517124d, 0xd517124d, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_cyr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xa044490f, 0xe23458db, 0xa044490f, 0x395f237e, 0x43d1f34, 0x43d1f34, 0xe1ca82c2, 0xe1ca82c2, 0xe1ca82c2, 0x9ec02b6a, 0x9ec02b6a, 0x9ec02b6a, 0xcfe161d8, 0xcfe161d8, 0xcfe161d8, 0x43d1f34, 0x395f237e, 0x395f237e, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_heb", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xf3259b30, 0xf1f01411, 0xf3259b30, 0xb0d35677, 0x59c36f00, 0x59c36f00, 0x97895f8e, 0x97895f8e, 0x97895f8e, 0xe90932e8, 0xe90932e8, 0xe90932e8, 0x36a3cffa, 0x36a3cffa, 0x36a3cffa, 0x59c36f00, 0xb0d35677, 0xb0d35677, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_heb", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x53a43759, 0xe0f26bfa, 0x53a43759, 0x7da1b226, 0xaa4593fe, 0xaa4593fe, 0xbf482a4e, 0xbf482a4e, 0xbf482a4e, 0x19bd2729, 0x19bd2729, 0x19bd2729, 0x11d6080, 0x11d6080, 0x11d6080, 0xaa4593fe, 0x7da1b226, 0x7da1b226, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_heb", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xd7ff8d53, 0x665b2728, 0xd7ff8d53, 0x8ae8e0d7, 0xc9cbf769, 0xc9cbf769, 0x5a693e73, 0x5a693e73, 0x5a693e73, 0xa4b1ffbf, 0xa4b1ffbf, 0xa4b1ffbf, 0x3d9232e0, 0x3d9232e0, 0x3d9232e0, 0xc9cbf769, 0x8ae8e0d7, 0x8ae8e0d7, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_heb", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x99fddcbe, 0x6d5c8895, 0x99fddcbe, 0x815c4e3c, 0x9813a416, 0x9813a416, 0x9bcf9821, 0x9bcf9821, 0x9bcf9821, 0xa141e12, 0xa141e12, 0xa141e12, 0xae9417d1, 0xae9417d1, 0xae9417d1, 0x9813a416, 0x815c4e3c, 0x815c4e3c, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_heb", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x5797846, 0x25a6ad40, 0x5797846, 0x100430f5, 0x5fcf013d, 0x5fcf013d, 0xddc86daf, 0xddc86daf, 0xddc86daf, 0xfd875d9, 0xfd875d9, 0xfd875d9, 0xb2e1d1c3, 0xb2e1d1c3, 0xb2e1d1c3, 0x5fcf013d, 0x100430f5, 0x100430f5, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_heb", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x30653ae8, 0x7fcd187, 0x30653ae8, 0xf7190a0, 0xdd28f52b, 0xdd28f52b, 0x24c3d325, 0x24c3d325, 0x24c3d325, 0x5ff2ac1, 0x5ff2ac1, 0x5ff2ac1, 0x465f628b, 0x465f628b, 0x465f628b, 0xdd28f52b, 0xf7190a0, 0xf7190a0, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_heb", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x3bd91638, 0x1d74dd4a, 0x3bd91638, 0xa2c27c49, 0x43d1f34, 0x43d1f34, 0x53d1ad3d, 0x53d1ad3d, 0x53d1ad3d, 0x2cdb0495, 0x2cdb0495, 0x2cdb0495, 0x7dfa4e27, 0x7dfa4e27, 0x7dfa4e27, 0x43d1f34, 0xa2c27c49, 0xa2c27c49, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_gre", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xbe2c351a, 0x2692720, 0xbe2c351a, 0xfddaf85d, 0x59c36f00, 0x59c36f00, 0x1b2e2301, 0x1b2e2301, 0x1b2e2301, 0x65ae4e67, 0x65ae4e67, 0x65ae4e67, 0xba04b375, 0xba04b375, 0xba04b375, 0x59c36f00, 0xfddaf85d, 0xfddaf85d, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_gre", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x1eca82e1, 0xe8fa59cc, 0x1eca82e1, 0x30cf079e, 0xaa4593fe, 0xaa4593fe, 0xaf27ddc5, 0xaf27ddc5, 0xaf27ddc5, 0x9d2d0a2, 0x9d2d0a2, 0x9d2d0a2, 0x1172970b, 0x1172970b, 0x1172970b, 0xaa4593fe, 0x30cf079e, 0x30cf079e, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_gre", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xa9ccd435, 0x1ac646eb, 0xa9ccd435, 0xf4dbb9b1, 0xc9cbf769, 0xc9cbf769, 0x86d69aa0, 0x86d69aa0, 0x86d69aa0, 0x780e5b6c, 0x780e5b6c, 0x780e5b6c, 0xe12d9633, 0xe12d9633, 0xe12d9633, 0xc9cbf769, 0xf4dbb9b1, 0xf4dbb9b1, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_gre", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xf96d568, 0x7ad05c1b, 0xf96d568, 0x173747ea, 0x9813a416, 0x9813a416, 0xacf9792a, 0xacf9792a, 0xacf9792a, 0x3d22ff19, 0x3d22ff19, 0x3d22ff19, 0x99a2f6da, 0x99a2f6da, 0x99a2f6da, 0x9813a416, 0x173747ea, 0x173747ea, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_gre", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xa0dc6b9c, 0xc2761148, 0xa0dc6b9c, 0xb5a1232f, 0x5fcf013d, 0x5fcf013d, 0x4e05748b, 0x4e05748b, 0x4e05748b, 0x9c156cfd, 0x9c156cfd, 0x9c156cfd, 0x212cc8e7, 0x212cc8e7, 0x212cc8e7, 0x5fcf013d, 0xb5a1232f, 0xb5a1232f, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_gre", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xcd722f7d, 0xe4df8d6b, 0xcd722f7d, 0xf2668535, 0xdd28f52b, 0xdd28f52b, 0xbdbb8019, 0xbdbb8019, 0xbdbb8019, 0x9c8779fd, 0x9c8779fd, 0x9c8779fd, 0xdf2731b7, 0xdf2731b7, 0xdf2731b7, 0xdd28f52b, 0xf2668535, 0xf2668535, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_gre", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xa6c99d2f, 0x1de04317, 0xa6c99d2f, 0x3fd2f75e, 0x43d1f34, 0x43d1f34, 0x3f85b7d3, 0x3f85b7d3, 0x3f85b7d3, 0x408f1e7b, 0x408f1e7b, 0x408f1e7b, 0x11ae54c9, 0x11ae54c9, 0x11ae54c9, 0x43d1f34, 0x3fd2f75e, 0x3fd2f75e, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_ru", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x1e35b709, 0x2683bf92, 0x1e35b709, 0x5dc37a4e, 0x59c36f00, 0x59c36f00, 0xd697967f, 0xd697967f, 0xd697967f, 0xa817fb19, 0xa817fb19, 0xa817fb19, 0x77bd060b, 0x77bd060b, 0x77bd060b, 0x59c36f00, 0x5dc37a4e, 0x5dc37a4e, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_ru", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x53ff7735, 0x8cbf197c, 0x53ff7735, 0x7dfaf24a, 0xaa4593fe, 0xaa4593fe, 0x389a922, 0x389a922, 0x389a922, 0xa57ca445, 0xa57ca445, 0xa57ca445, 0xbddce3ec, 0xbddce3ec, 0xbddce3ec, 0xaa4593fe, 0x7dfaf24a, 0x7dfaf24a, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_ru", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x5217c47d, 0x7c8ae63e, 0x5217c47d, 0xf00a9f9, 0xc9cbf769, 0xc9cbf769, 0x3995409, 0x3995409, 0x3995409, 0xfd4195c5, 0xfd4195c5, 0xfd4195c5, 0x6462589a, 0x6462589a, 0x6462589a, 0xc9cbf769, 0xf00a9f9, 0xf00a9f9, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_ru", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x45b67706, 0x375fb5db, 0x45b67706, 0x5d17e584, 0x9813a416, 0x9813a416, 0x8195719b, 0x8195719b, 0x8195719b, 0x104ef7a8, 0x104ef7a8, 0x104ef7a8, 0xb4cefe6b, 0xb4cefe6b, 0xb4cefe6b, 0x9813a416, 0x5d17e584, 0x5d17e584, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_ru", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xfc209a25, 0xd5c20779, 0xfc209a25, 0xe95dd296, 0x5fcf013d, 0x5fcf013d, 0xe5699efe, 0xe5699efe, 0xe5699efe, 0x37798688, 0x37798688, 0x37798688, 0x8a402292, 0x8a402292, 0x8a402292, 0x5fcf013d, 0xe95dd296, 0xe95dd296, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_ru", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x77f956f0, 0xfb0cc079, 0x77f956f0, 0x48edfcb8, 0xdd28f52b, 0xdd28f52b, 0xd51b1dc9, 0xd51b1dc9, 0xd51b1dc9, 0xf427e42d, 0xf427e42d, 0xf427e42d, 0xb787ac67, 0xb787ac67, 0xb787ac67, 0xdd28f52b, 0x48edfcb8, 0x48edfcb8, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_ru", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x1d9ac82a, 0xa254aa53, 0x1d9ac82a, 0x8481a25b, 0x43d1f34, 0x43d1f34, 0xc304df68, 0xc304df68, 0xc304df68, 0xbc0e76c0, 0xbc0e76c0, 0xbc0e76c0, 0xed2f3c72, 0xed2f3c72, 0xed2f3c72, 0x43d1f34, 0x8481a25b, 0x8481a25b, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_fr", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xa6239a89, 0x8dc4bfbb, 0xa6239a89, 0xe5d557ce, 0x59c36f00, 0x59c36f00, 0x244cf807, 0x244cf807, 0x244cf807, 0x5acc9561, 0x5acc9561, 0x5acc9561, 0x85666873, 0x85666873, 0x85666873, 0x59c36f00, 0xe5d557ce, 0xe5d557ce, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_fr", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x742cede9, 0x83bb7a50, 0x742cede9, 0x5a296896, 0xaa4593fe, 0xaa4593fe, 0xd83f8aeb, 0xd83f8aeb, 0xd83f8aeb, 0x7eca878c, 0x7eca878c, 0x7eca878c, 0x666ac025, 0x666ac025, 0x666ac025, 0xaa4593fe, 0x5a296896, 0x5a296896, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_fr", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xe20a98b0, 0x7e8cedef, 0xe20a98b0, 0xbf1df534, 0xc9cbf769, 0xc9cbf769, 0x2748b88c, 0x2748b88c, 0x2748b88c, 0xd9907940, 0xd9907940, 0xd9907940, 0x40b3b41f, 0x40b3b41f, 0x40b3b41f, 0xc9cbf769, 0xbf1df534, 0xbf1df534, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_fr", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x8f911ca4, 0xcbf1d895, 0x8f911ca4, 0x97308e26, 0x9813a416, 0x9813a416, 0x5b359bf4, 0x5b359bf4, 0x5b359bf4, 0xcaee1dc7, 0xcaee1dc7, 0xcaee1dc7, 0x6e6e1404, 0x6e6e1404, 0x6e6e1404, 0x9813a416, 0x97308e26, 0x97308e26, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_fr", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x1bf82c82, 0xc7b39627, 0x1bf82c82, 0xe856431, 0x5fcf013d, 0x5fcf013d, 0xa9dbae99, 0xa9dbae99, 0xa9dbae99, 0x7bcbb6ef, 0x7bcbb6ef, 0x7bcbb6ef, 0xc6f212f5, 0xc6f212f5, 0xc6f212f5, 0x5fcf013d, 0xe856431, 0xe856431, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_fr", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xfae19a5c, 0xd1e8fabb, 0xfae19a5c, 0xc5f53014, 0xdd28f52b, 0xdd28f52b, 0xfa2c5565, 0xfa2c5565, 0xfa2c5565, 0xdb10ac81, 0xdb10ac81, 0xdb10ac81, 0x98b0e4cb, 0x98b0e4cb, 0x98b0e4cb, 0xdd28f52b, 0xc5f53014, 0xc5f53014, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_fr", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x9a18f7bc, 0x5fcecc43, 0x9a18f7bc, 0x3039dcd, 0x43d1f34, 0x43d1f34, 0x287a2b96, 0x287a2b96, 0x287a2b96, 0x5770823e, 0x5770823e, 0x5770823e, 0x651c88c, 0x651c88c, 0x651c88c, 0x43d1f34, 0x3039dcd, 0x3039dcd, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_quot", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x65112dfc, 0x3dec17f, 0x65112dfc, 0x26e7e0bb, 0x59c36f00, 0x59c36f00, 0x620c0067, 0x620c0067, 0x620c0067, 0x1c8c6d01, 0x1c8c6d01, 0x1c8c6d01, 0xc3269013, 0xc3269013, 0xc3269013, 0x59c36f00, 0x26e7e0bb, 0x26e7e0bb, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_quot", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x2b3430fb, 0x8f1eb743, 0x2b3430fb, 0x531b584, 0xaa4593fe, 0xaa4593fe, 0xa8a596c8, 0xa8a596c8, 0xa8a596c8, 0xe509baf, 0xe509baf, 0xe509baf, 0x16f0dc06, 0x16f0dc06, 0x16f0dc06, 0xaa4593fe, 0x531b584, 0x531b584, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_quot", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xb523e920, 0xfafb6f8, 0xb523e920, 0xe83484a4, 0xc9cbf769, 0xc9cbf769, 0x3ce35e1d, 0x3ce35e1d, 0x3ce35e1d, 0xc23b9fd1, 0xc23b9fd1, 0xc23b9fd1, 0x5b18528e, 0x5b18528e, 0x5b18528e, 0xc9cbf769, 0xe83484a4, 0xe83484a4, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_quot", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xa9bf7336, 0x1a1f7a01, 0xa9bf7336, 0xb11ee1b4, 0x9813a416, 0x9813a416, 0x43fda3fa, 0x43fda3fa, 0x43fda3fa, 0xd22625c9, 0xd22625c9, 0xd22625c9, 0x76a62c0a, 0x76a62c0a, 0x76a62c0a, 0x9813a416, 0xb11ee1b4, 0xb11ee1b4, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_quot", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xe5271912, 0xf5d10273, 0xe5271912, 0xf05a51a1, 0x5fcf013d, 0x5fcf013d, 0xf3582c48, 0xf3582c48, 0xf3582c48, 0x2148343e, 0x2148343e, 0x2148343e, 0x9c719024, 0x9c719024, 0x9c719024, 0x5fcf013d, 0xf05a51a1, 0xf05a51a1, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_quot", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x66a34f49, 0x32dbeb97, 0x66a34f49, 0x59b7e501, 0xdd28f52b, 0xdd28f52b, 0xb3c7ef80, 0xb3c7ef80, 0xb3c7ef80, 0x92fb1664, 0x92fb1664, 0x92fb1664, 0xd15b5e2e, 0xd15b5e2e, 0xd15b5e2e, 0xdd28f52b, 0x59b7e501, 0x59b7e501, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_quot", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x7c2f19da, 0xd7bece67, 0x7c2f19da, 0xe53473ab, 0x43d1f34, 0x43d1f34, 0xa0717008, 0xa0717008, 0xa0717008, 0xdf7bd9a0, 0xdf7bd9a0, 0xdf7bd9a0, 0x8e5a9312, 0x8e5a9312, 0x8e5a9312, 0x43d1f34, 0xe53473ab, 0xe53473ab, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_piglatin", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x37943894, 0x78248c70, 0x37943894, 0x7462f5d3, 0x59c36f00, 0x59c36f00, 0xf4be229a, 0xf4be229a, 0xf4be229a, 0x8a3e4ffc, 0x8a3e4ffc, 0x8a3e4ffc, 0x5594b2ee, 0x5594b2ee, 0x5594b2ee, 0x59c36f00, 0x7462f5d3, 0x7462f5d3, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_piglatin", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xd5158e6c, 0xdc71ba0f, 0xd5158e6c, 0xfb100b13, 0xaa4593fe, 0xaa4593fe, 0xd3ed72a3, 0xd3ed72a3, 0xd3ed72a3, 0x75187fc4, 0x75187fc4, 0x75187fc4, 0x6db8386d, 0x6db8386d, 0x6db8386d, 0xaa4593fe, 0xfb100b13, 0xfb100b13, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_piglatin", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x6277a9e6, 0xa3265ffb, 0x6277a9e6, 0x3f60c462, 0xc9cbf769, 0xc9cbf769, 0x2dcf8a8d, 0x2dcf8a8d, 0x2dcf8a8d, 0xd3174b41, 0xd3174b41, 0xd3174b41, 0x4a34861e, 0x4a34861e, 0x4a34861e, 0xc9cbf769, 0x3f60c462, 0x3f60c462, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_piglatin", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0x81115dc4, 0xddf3f768, 0x81115dc4, 0x99b0cf46, 0x9813a416, 0x9813a416, 0x9b9d96df, 0x9b9d96df, 0x9b9d96df, 0xa4610ec, 0xa4610ec, 0xa4610ec, 0xaec6192f, 0xaec6192f, 0xaec6192f, 0x9813a416, 0x99b0cf46, 0x99b0cf46, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_piglatin", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x5e96a904, 0x27864d3d, 0x5e96a904, 0x4bebe1b7, 0x5fcf013d, 0x5fcf013d, 0x18cae7f4, 0x18cae7f4, 0x18cae7f4, 0xcadaff82, 0xcadaff82, 0xcadaff82, 0x77e35b98, 0x77e35b98, 0x77e35b98, 0x5fcf013d, 0x4bebe1b7, 0x4bebe1b7, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_piglatin", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xd00b19f8, 0xba73a9c6, 0xd00b19f8, 0xef1fb3b0, 0xdd28f52b, 0xdd28f52b, 0xb660046d, 0xb660046d, 0xb660046d, 0x975cfd89, 0x975cfd89, 0x975cfd89, 0xd4fcb5c3, 0xd4fcb5c3, 0xd4fcb5c3, 0xdd28f52b, 0xef1fb3b0, 0xef1fb3b0, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_piglatin", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x8b4b98cd, 0x78ddc6e4, 0x8b4b98cd, 0x1250f2bc, 0x43d1f34, 0x43d1f34, 0x4889d3fd, 0x4889d3fd, 0x4889d3fd, 0x37837a55, 0x37837a55, 0x37837a55, 0x66a230e7, 0x66a230e7, 0x66a230e7, 0x43d1f34, 0x1250f2bc, 0x1250f2bc, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_ch", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xfecb570e, 0xccb97a7a, 0xfecb570e, 0xbd3d9a49, 0x59c36f00, 0x59c36f00, 0x40281258, 0x40281258, 0x40281258, 0x3ea87f3e, 0x3ea87f3e, 0x3ea87f3e, 0xe102822c, 0xe102822c, 0xe102822c, 0x59c36f00, 0xbd3d9a49, 0xbd3d9a49, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_ch", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0x897d1fac, 0xaa982529, 0x897d1fac, 0xa7789ad3, 0xaa4593fe, 0xaa4593fe, 0xa482510, 0xa482510, 0xa482510, 0xacbd2877, 0xacbd2877, 0xacbd2877, 0xb41d6fde, 0xb41d6fde, 0xb41d6fde, 0xaa4593fe, 0xa7789ad3, 0xa7789ad3, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_ch", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xd02a5297, 0xe627ab58, 0xd02a5297, 0x8d3d3f13, 0xc9cbf769, 0xc9cbf769, 0xbf0a8b7f, 0xbf0a8b7f, 0xbf0a8b7f, 0x41d24ab3, 0x41d24ab3, 0x41d24ab3, 0xd8f187ec, 0xd8f187ec, 0xd8f187ec, 0xc9cbf769, 0x8d3d3f13, 0x8d3d3f13, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_ch", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xa653dcda, 0x3392e976, 0xa653dcda, 0xbef24e58, 0x9813a416, 0x9813a416, 0x4f2bc106, 0x4f2bc106, 0x4f2bc106, 0xdef04735, 0xdef04735, 0xdef04735, 0x7a704ef6, 0x7a704ef6, 0x7a704ef6, 0x9813a416, 0xbef24e58, 0xbef24e58, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_ch", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xe2d7b585, 0x35241f36, 0xe2d7b585, 0xf7aafd36, 0x5fcf013d, 0x5fcf013d, 0xf2bd04db, 0xf2bd04db, 0xf2bd04db, 0x20ad1cad, 0x20ad1cad, 0x20ad1cad, 0x9d94b8b7, 0x9d94b8b7, 0x9d94b8b7, 0x5fcf013d, 0xf7aafd36, 0xf7aafd36, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_ch", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x72ff749c, 0xeda8c283, 0x72ff749c, 0x4debded4, 0xdd28f52b, 0xdd28f52b, 0xb8c9cc22, 0xb8c9cc22, 0xb8c9cc22, 0x99f535c6, 0x99f535c6, 0x99f535c6, 0xda557d8c, 0xda557d8c, 0xda557d8c, 0xdd28f52b, 0x4debded4, 0x4debded4, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_ch", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0xb7cac764, 0xeb4bf417, 0xb7cac764, 0x2ed1ad15, 0x43d1f34, 0x43d1f34, 0xce718801, 0xce718801, 0xce718801, 0xb17b21a9, 0xb17b21a9, 0xb17b21a9, 0xe05a6b1b, 0xe05a6b1b, 0xe05a6b1b, 0x43d1f34, 0x2ed1ad15, 0x2ed1ad15, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_red", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x930e8e13, 0xf5c16290, 0x930e8e13, 0x27f5f1c0, 0x59c36f00, 0x59c36f00, 0xbad4e11, 0xbad4e11, 0xbad4e11, 0x752d2377, 0x752d2377, 0x752d2377, 0xaa87de65, 0xaa87de65, 0xaa87de65, 0x59c36f00, 0x27f5f1c0, 0x27f5f1c0, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_red", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xff9301f2, 0x5bb9864a, 0xff9301f2, 0x31c145de, 0xaa4593fe, 0xaa4593fe, 0x23bf2c32, 0x23bf2c32, 0x23bf2c32, 0x854a2155, 0x854a2155, 0x854a2155, 0x9dea66fc, 0x9dea66fc, 0x9dea66fc, 0xaa4593fe, 0x31c145de, 0x31c145de, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_red", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xfc5938ef, 0x46d56737, 0xfc5938ef, 0x23cf2668, 0xc9cbf769, 0xc9cbf769, 0xa8c549aa, 0xa8c549aa, 0xa8c549aa, 0x561d8866, 0x561d8866, 0x561d8866, 0xcf3e4539, 0xcf3e4539, 0xcf3e4539, 0xc9cbf769, 0x23cf2668, 0x23cf2668, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_red", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xe7160822, 0x54b60115, 0xe7160822, 0x168efa6f, 0x9813a416, 0x9813a416, 0xb774a5aa, 0xb774a5aa, 0xb774a5aa, 0x26af2399, 0x26af2399, 0x26af2399, 0x822f2a5a, 0x822f2a5a, 0x822f2a5a, 0x9813a416, 0x168efa6f, 0x168efa6f, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_red", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0xf655f9b2, 0xe6a3e2d3, 0xf655f9b2, 0xd1d7405f, 0x5fcf013d, 0x5fcf013d, 0x2accaa08, 0x2accaa08, 0x2accaa08, 0xf8dcb27e, 0xf8dcb27e, 0xf8dcb27e, 0x45e51664, 0x45e51664, 0x45e51664, 0x5fcf013d, 0xd1d7405f, 0xd1d7405f, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_red", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x2d85ebdc, 0x79fd4f02, 0x2d85ebdc, 0xc48ae2b6, 0xdd28f52b, 0xdd28f52b, 0x76b28a95, 0x76b28a95, 0x76b28a95, 0x578e7371, 0x578e7371, 0x578e7371, 0x142e3b3b, 0x142e3b3b, 0x142e3b3b, 0xdd28f52b, 0xc48ae2b6, 0xc48ae2b6, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_red", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x29c00f98, 0x8251d825, 0x29c00f98, 0x35a750d1, 0x43d1f34, 0x43d1f34, 0x48b70bc8, 0x48b70bc8, 0x48b70bc8, 0x37bda260, 0x37bda260, 0x37bda260, 0x669ce8d2, 0x669ce8d2, 0x669ce8d2, 0x43d1f34, 0x35a750d1, 0x35a750d1, 0x43d1f34, }, 20 },
|
||||
+ { "gfxterm_high", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x4afab717, 0x2c355b94, 0x4afab717, 0x1166d9d0, 0x59c36f00, 0x59c36f00, 0x620c0067, 0x620c0067, 0x620c0067, 0x1c8c6d01, 0x1c8c6d01, 0x1c8c6d01, 0xc3269013, 0xc3269013, 0xc3269013, 0x59c36f00, 0x1166d9d0, 0x1166d9d0, 0x59c36f00, }, 20 },
|
||||
+ { "gfxterm_high", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xe3daadd4, 0x47f02a6c, 0xe3daadd4, 0x5ea9fb21, 0xaa4593fe, 0xaa4593fe, 0xa8a596c8, 0xa8a596c8, 0xa8a596c8, 0xe509baf, 0xe509baf, 0xe509baf, 0x16f0dc06, 0x16f0dc06, 0x16f0dc06, 0xaa4593fe, 0x5ea9fb21, 0x5ea9fb21, 0xaa4593fe, }, 20 },
|
||||
+ { "gfxterm_high", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0xf140d1df, 0x4bcc8e07, 0xf140d1df, 0x7c962dcb, 0xc9cbf769, 0xc9cbf769, 0x3ce35e1d, 0x3ce35e1d, 0x3ce35e1d, 0xc23b9fd1, 0xc23b9fd1, 0xc23b9fd1, 0x5b18528e, 0x5b18528e, 0x5b18528e, 0xc9cbf769, 0x7c962dcb, 0x7c962dcb, 0xc9cbf769, }, 20 },
|
||||
+ { "gfxterm_high", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x9813a416, 0xe709a12d, 0x54a9a81a, 0xe709a12d, 0xde04d65c, 0x9813a416, 0x9813a416, 0x43fda3fa, 0x43fda3fa, 0x43fda3fa, 0xd22625c9, 0xd22625c9, 0xd22625c9, 0x76a62c0a, 0x76a62c0a, 0x76a62c0a, 0x9813a416, 0xde04d65c, 0xde04d65c, 0x9813a416, }, 20 },
|
||||
+ { "gfxterm_high", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x65eff77c, 0x7519ec1d, 0x65eff77c, 0x1cd7d353, 0x5fcf013d, 0x5fcf013d, 0xf3582c48, 0xf3582c48, 0xf3582c48, 0x2148343e, 0x2148343e, 0x2148343e, 0x9c719024, 0x9c719024, 0x9c719024, 0x5fcf013d, 0x1cd7d353, 0x1cd7d353, 0x5fcf013d, }, 20 },
|
||||
+ { "gfxterm_high", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xdd28f52b, 0x7318831a, 0x276027c4, 0x7318831a, 0xd7e4f5bb, 0xdd28f52b, 0xdd28f52b, 0xb3c7ef80, 0xb3c7ef80, 0xb3c7ef80, 0x92fb1664, 0x92fb1664, 0x92fb1664, 0xd15b5e2e, 0xd15b5e2e, 0xd15b5e2e, 0xdd28f52b, 0xd7e4f5bb, 0xd7e4f5bb, 0xdd28f52b, }, 20 },
|
||||
+ { "gfxterm_high", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x43d1f34, 0x6927a7d4, 0xc2b67069, 0x6927a7d4, 0xfc345163, 0x43d1f34, 0x43d1f34, 0xa0717008, 0xa0717008, 0xa0717008, 0xdf7bd9a0, 0xdf7bd9a0, 0xdf7bd9a0, 0x8e5a9312, 0x8e5a9312, 0x8e5a9312, 0x43d1f34, 0xfc345163, 0xfc345163, 0x43d1f34, }, 20 },
|
||||
+ { "videotest", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0xe6012f70, 0xe6012f70, 0xe6012f70, 0xe6012f70, 0xe6012f70, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xfb6be77b, 0xfb6be77b, 0xfb6be77b, 0xfb6be77b, 0xfb6be77b, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0x67c0629f, 0x67c0629f, 0x67c0629f, 0x67c0629f, 0x67c0629f, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x8f20afbb, 0xd8f7abc, 0x8f937344, 0xd3ca643, 0x8e471645, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xdca764da, 0x9f76da9a, 0x5b04185a, 0x18d5a61a, 0xd60deb2b, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0x7b87af36, 0x7cb96093, 0x75fa307c, 0x72c4ffd9, 0x677c91a2, }, 5 },
|
||||
+ { "videotest", 2560, 1440, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 2560x1440xrgba8888 */, (grub_uint32_t []) { 0x72981c65, 0x50120635, 0x378c28c5, 0x15063295, 0xf8b07525, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi256 */, (grub_uint32_t []) { 0xc8f64b58, 0xc8f64b58, 0xc8f64b58, 0xc8f64b58, 0xc8f64b58, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi256 */, (grub_uint32_t []) { 0x2b499dfa, 0x2b499dfa, 0x2b499dfa, 0x2b499dfa, 0x2b499dfa, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi256 */, (grub_uint32_t []) { 0x6156b420, 0x6156b420, 0x6156b420, 0x6156b420, 0x6156b420, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 640x480xrgba5550 */, (grub_uint32_t []) { 0x363285ca, 0x363285ca, 0x363285ca, 0x363285ca, 0x363285ca, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 800x600xrgba5550 */, (grub_uint32_t []) { 0x25bb37f4, 0x25bb37f4, 0x25bb37f4, 0x25bb37f4, 0x25bb37f4, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 1024x768xrgba5550 */, (grub_uint32_t []) { 0xeeab9e91, 0xeeab9e91, 0xeeab9e91, 0xeeab9e91, 0xeeab9e91, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 640x480xrgba5650 */, (grub_uint32_t []) { 0x26a9a50b, 0x26a9a50b, 0x26a9a50b, 0x26a9a50b, 0x26a9a50b, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 800x600xrgba5650 */, (grub_uint32_t []) { 0x2c0f4fe7, 0x2c0f4fe7, 0x2c0f4fe7, 0x2c0f4fe7, 0x2c0f4fe7, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 1024x768xrgba5650 */, (grub_uint32_t []) { 0x46c11052, 0x46c11052, 0x46c11052, 0x46c11052, 0x46c11052, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 640x480xrgba8880 */, (grub_uint32_t []) { 0xe56cf615, 0xcd2be572, 0xb5e2d0db, 0x9da5c3bc, 0x4470bb89, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 800x600xrgba8880 */, (grub_uint32_t []) { 0x2a25b871, 0x4bf85361, 0xe99e6e51, 0x88438541, 0xa8be62c0, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 1024x768xrgba8880 */, (grub_uint32_t []) { 0x81523037, 0xd8c0bfd3, 0x32772fff, 0x6be5a01b, 0xe2f47956, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 640x480xbgra5550 */, (grub_uint32_t []) { 0x1833bb41, 0x1833bb41, 0x1833bb41, 0x1833bb41, 0x1833bb41, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 800x600xbgra5550 */, (grub_uint32_t []) { 0x2c39a0e8, 0x2c39a0e8, 0x2c39a0e8, 0x2c39a0e8, 0x2c39a0e8, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 1024x768xbgra5550 */, (grub_uint32_t []) { 0xf0d4c23, 0xf0d4c23, 0xf0d4c23, 0xf0d4c23, 0xf0d4c23, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 640x480xbgra5650 */, (grub_uint32_t []) { 0x456d063c, 0x456d063c, 0x456d063c, 0x456d063c, 0x456d063c, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 800x600xbgra5650 */, (grub_uint32_t []) { 0x47e15a2e, 0x47e15a2e, 0x47e15a2e, 0x47e15a2e, 0x47e15a2e, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 1024x768xbgra5650 */, (grub_uint32_t []) { 0x54d7300d, 0x54d7300d, 0x54d7300d, 0x54d7300d, 0x54d7300d, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 640x480xbgra8880 */, (grub_uint32_t []) { 0x770da211, 0x8ef2528e, 0x811e35de, 0x78e1c541, 0x9ec6fb7e, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 800x600xbgra8880 */, (grub_uint32_t []) { 0xeb181fbc, 0xae648cc1, 0x61e13946, 0x249daa3b, 0xfb0624b9, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 1024x768xbgra8880 */, (grub_uint32_t []) { 0x2b6f64dc, 0xc25f8431, 0xfce2d3f7, 0x15d2331a, 0x81987c7b, }, 5 },
|
||||
+ { "videotest", 640, 480, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 640x480xbgra8888 */, (grub_uint32_t []) { 0xa260f7dd, 0x3e2f4980, 0x9f13fd96, 0x35c43cb, 0xd886e34b, }, 5 },
|
||||
+ { "videotest", 800, 600, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 800x600xbgra8888 */, (grub_uint32_t []) { 0x41a9bff8, 0xa0d3f7c3, 0x86b1597f, 0x67cb1144, 0xca740407, }, 5 },
|
||||
+ { "videotest", 1024, 768, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 1024x768xbgra8888 */, (grub_uint32_t []) { 0x8f7a3b6d, 0xcb84c6e3, 0x687c071, 0x42793dff, 0x996dbba4, }, 5 },
|
22
0081-grub-fs-tester-Fix-bashism.patch
Normal file
22
0081-grub-fs-tester-Fix-bashism.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 4f31bfe1d36e95ca3b1cdaf6a9d45d1e3722ad2f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@google.com>
|
||||
Date: Wed, 30 Aug 2017 17:22:58 +0200
|
||||
Subject: [PATCH] grub-fs-tester: Fix bashism
|
||||
|
||||
---
|
||||
tests/util/grub-fs-tester.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/util/grub-fs-tester.in b/tests/util/grub-fs-tester.in
|
||||
index fd7e0f14b68..15969d796a6 100644
|
||||
--- a/tests/util/grub-fs-tester.in
|
||||
+++ b/tests/util/grub-fs-tester.in
|
||||
@@ -957,7 +957,7 @@ for LOGSECSIZE in $(range "$MINLOGSECSIZE" "$MAXLOGSECSIZE" 1); do
|
||||
esac
|
||||
# Make sure file is not exact multiple of block size. This helps to force
|
||||
# tail packing in case of squash4.
|
||||
- : $((BLOCKCNT--))
|
||||
+ BLOCKCNT="$((BLOCKCNT-1))"
|
||||
case x"$fs" in
|
||||
x"ntfscomp")
|
||||
setfattr -h -v 0x00000800 -n system.ntfs_attrib_be "$MNTPOINTRW/$OSDIR";;
|
22
0082-gzio-fix-unaligned-access.patch
Normal file
22
0082-gzio-fix-unaligned-access.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 95acd4cbdac495c088fc3401fa365455f7039151 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@google.com>
|
||||
Date: Wed, 30 Aug 2017 20:46:14 +0200
|
||||
Subject: [PATCH] gzio: fix unaligned access
|
||||
|
||||
---
|
||||
grub-core/io/gzio.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
|
||||
index dcf3a870147..86ea8cfdea2 100644
|
||||
--- a/grub-core/io/gzio.c
|
||||
+++ b/grub-core/io/gzio.c
|
||||
@@ -1116,7 +1116,7 @@ inflate_window (grub_gzio_t gzio)
|
||||
grub_uint32_t csum;
|
||||
|
||||
gzio->hdesc->final (gzio->hcontext);
|
||||
- csum = *(grub_uint32_t *)gzio->hdesc->read (gzio->hcontext);
|
||||
+ csum = grub_get_unaligned32 (gzio->hdesc->read (gzio->hcontext));
|
||||
csum = grub_be_to_cpu32 (csum);
|
||||
if (csum != gzio->orig_checksum)
|
||||
grub_error (GRUB_ERR_BAD_COMPRESSED_DATA,
|
120
0083-Add-a-file-missing-in-multiboot2-commit.patch
Normal file
120
0083-Add-a-file-missing-in-multiboot2-commit.patch
Normal file
@ -0,0 +1,120 @@
|
||||
From 1b18d6b0d34872ced6b3dbfc3e7957c80efbcb7a Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 5 Sep 2017 23:13:55 +0200
|
||||
Subject: [PATCH] Add a file missing in multiboot2 commit.
|
||||
|
||||
---
|
||||
include/grub/multiboot2.h | 104 ++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 104 insertions(+)
|
||||
create mode 100644 include/grub/multiboot2.h
|
||||
|
||||
diff --git a/include/grub/multiboot2.h b/include/grub/multiboot2.h
|
||||
new file mode 100644
|
||||
index 00000000000..502d34ef180
|
||||
--- /dev/null
|
||||
+++ b/include/grub/multiboot2.h
|
||||
@@ -0,0 +1,104 @@
|
||||
+/* multiboot.h - multiboot header file with grub definitions. */
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2003,2007,2008,2010 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_MULTIBOOT2_HEADER
|
||||
+#define GRUB_MULTIBOOT2_HEADER 1
|
||||
+
|
||||
+#include <grub/file.h>
|
||||
+
|
||||
+#include <multiboot2.h>
|
||||
+
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/err.h>
|
||||
+
|
||||
+extern struct grub_relocator *grub_multiboot2_relocator;
|
||||
+
|
||||
+void grub_multiboot2 (int argc, char *argv[]);
|
||||
+void grub_module2 (int argc, char *argv[]);
|
||||
+
|
||||
+void grub_multiboot2_set_accepts_video (int val);
|
||||
+grub_err_t grub_multiboot2_make_mbi (grub_uint32_t *target);
|
||||
+void grub_multiboot2_free_mbi (void);
|
||||
+grub_err_t grub_multiboot2_init_mbi (int argc, char *argv[]);
|
||||
+grub_err_t grub_multiboot2_add_module (grub_addr_t start, grub_size_t size,
|
||||
+ int argc, char *argv[]);
|
||||
+void grub_multiboot2_set_bootdev (void);
|
||||
+void
|
||||
+grub_multiboot2_add_elfsyms (grub_size_t num, grub_size_t entsize,
|
||||
+ unsigned shndx, void *data);
|
||||
+
|
||||
+grub_uint32_t grub_multiboot2_get_mmap_count (void);
|
||||
+grub_err_t grub_multiboot2_set_video_mode (void);
|
||||
+
|
||||
+/* FIXME: support coreboot as well. */
|
||||
+#if defined (GRUB_MACHINE_PCBIOS)
|
||||
+#define GRUB_MACHINE_HAS_VBE 1
|
||||
+#else
|
||||
+#define GRUB_MACHINE_HAS_VBE 0
|
||||
+#endif
|
||||
+
|
||||
+#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_QEMU)
|
||||
+#define GRUB_MACHINE_HAS_VGA_TEXT 1
|
||||
+#else
|
||||
+#define GRUB_MACHINE_HAS_VGA_TEXT 0
|
||||
+#endif
|
||||
+
|
||||
+#if defined (GRUB_MACHINE_EFI) || defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
+#define GRUB_MACHINE_HAS_ACPI 1
|
||||
+#else
|
||||
+#define GRUB_MACHINE_HAS_ACPI 0
|
||||
+#endif
|
||||
+
|
||||
+#define GRUB_MULTIBOOT2_CONSOLE_EGA_TEXT 1
|
||||
+#define GRUB_MULTIBOOT2_CONSOLE_FRAMEBUFFER 2
|
||||
+
|
||||
+grub_err_t
|
||||
+grub_multiboot2_set_console (int console_type, int accepted_consoles,
|
||||
+ int width, int height, int depth,
|
||||
+ int console_required);
|
||||
+grub_err_t
|
||||
+grub_multiboot2_load (grub_file_t file, const char *filename);
|
||||
+
|
||||
+struct mbi_load_data
|
||||
+{
|
||||
+ grub_file_t file;
|
||||
+ const char *filename;
|
||||
+ void *buffer;
|
||||
+ unsigned int mbi_ver;
|
||||
+ int relocatable;
|
||||
+ grub_uint32_t min_addr;
|
||||
+ grub_uint32_t max_addr;
|
||||
+ grub_size_t align;
|
||||
+ grub_uint32_t preference;
|
||||
+ grub_uint32_t link_base_addr;
|
||||
+ grub_uint32_t load_base_addr;
|
||||
+ int avoid_efi_boot_services;
|
||||
+};
|
||||
+typedef struct mbi_load_data mbi_load_data_t;
|
||||
+
|
||||
+/* Load ELF32 or ELF64. */
|
||||
+grub_err_t
|
||||
+grub_multiboot2_load_elf (mbi_load_data_t *mld);
|
||||
+
|
||||
+extern grub_size_t grub_multiboot2_pure_size;
|
||||
+extern grub_size_t grub_multiboot2_alloc_mbi;
|
||||
+extern grub_uint32_t grub_multiboot2_payload_eip;
|
||||
+
|
||||
+
|
||||
+#endif /* ! GRUB_MULTIBOOT_HEADER */
|
@ -1,47 +0,0 @@
|
||||
From 793d4270384ef3373bc0b3c956cab8a8cdb75bcf Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Mon, 16 Jul 2012 18:57:11 -0400
|
||||
Subject: [PATCH] Use "linuxefi" and "initrdefi" where appropriate.
|
||||
|
||||
---
|
||||
util/grub.d/10_linux.in | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index cf6331f2a51..8ccf012f747 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -129,17 +129,31 @@ linux_entry ()
|
||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
||||
- sed "s/^/$submenu_indentation/" << EOF
|
||||
+ if [ -d /sys/firmware/efi ]; then
|
||||
+ sed "s/^/$submenu_indentation/" << EOF
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
+ linuxefi ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
|
||||
+EOF
|
||||
+ else
|
||||
+ sed "s/^/$submenu_indentation/" << EOF
|
||||
echo '$(echo "$message" | grub_quote)'
|
||||
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
|
||||
EOF
|
||||
+ fi
|
||||
if test -n "${initrd}" ; then
|
||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||
message="$(gettext_printf "Loading initial ramdisk ...")"
|
||||
- sed "s/^/$submenu_indentation/" << EOF
|
||||
+ if [ -d /sys/firmware/efi ]; then
|
||||
+ sed "s/^/$submenu_indentation/" << EOF
|
||||
echo '$(echo "$message" | grub_quote)'
|
||||
+ initrdefi ${rel_dirname}/${initrd}
|
||||
+EOF
|
||||
+ else
|
||||
+ sed "s/^/$submenu_indentation/" << EOF
|
||||
+ echo '$message'
|
||||
initrd ${rel_dirname}/${initrd}
|
||||
EOF
|
||||
+ fi
|
||||
fi
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
}
|
38
0084-Fix-compilation-for-x86_64-efi.patch
Normal file
38
0084-Fix-compilation-for-x86_64-efi.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From 78d2b81bd1af0a3a84d0c23c9ff4af3caa2df23b Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 7 Sep 2017 13:55:22 +0200
|
||||
Subject: [PATCH] Fix compilation for x86_64-efi.
|
||||
|
||||
---
|
||||
grub-core/loader/multiboot.c | 2 +-
|
||||
include/grub/i386/multiboot.h | 4 ++++
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/loader/multiboot.c b/grub-core/loader/multiboot.c
|
||||
index 3b57cb132a6..40c67e82489 100644
|
||||
--- a/grub-core/loader/multiboot.c
|
||||
+++ b/grub-core/loader/multiboot.c
|
||||
@@ -143,7 +143,7 @@ efi_boot (struct grub_relocator *rel,
|
||||
#else
|
||||
struct grub_relocator_efi_state state_efi = MULTIBOOT_EFI_INITIAL_STATE;
|
||||
#endif
|
||||
- state_efi.MULTIBOOT_EFI_ENTRY_REGISTER = grub_multiboot_payload_eip;
|
||||
+ state_efi.MULTIBOOT_EFI_ENTRY_REGISTER = GRUB_MULTIBOOT (payload_eip);
|
||||
state_efi.MULTIBOOT_EFI_MBI_REGISTER = target;
|
||||
|
||||
grub_relocator_efi_boot (rel, state_efi);
|
||||
diff --git a/include/grub/i386/multiboot.h b/include/grub/i386/multiboot.h
|
||||
index 9cd97dfced8..0b596fc2060 100644
|
||||
--- a/include/grub/i386/multiboot.h
|
||||
+++ b/include/grub/i386/multiboot.h
|
||||
@@ -43,6 +43,10 @@
|
||||
.rcx = 0, \
|
||||
.rdx = 0, \
|
||||
}
|
||||
+#define MULTIBOOT2_EFI_INITIAL_STATE { .rax = MULTIBOOT2_BOOTLOADER_MAGIC, \
|
||||
+ .rcx = 0, \
|
||||
+ .rdx = 0, \
|
||||
+ }
|
||||
#define MULTIBOOT_EFI_ENTRY_REGISTER rip
|
||||
#define MULTIBOOT_EFI_MBI_REGISTER rbx
|
||||
#endif
|
@ -1,8 +1,8 @@
|
||||
From cba0322cd88baf136ac693f5ec1826f3314daeff Mon Sep 17 00:00:00 2001
|
||||
From a8e0f1adf7019238fff263111794c86f4eea79ac Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Mon, 28 Aug 2017 13:51:14 -0400
|
||||
Subject: [PATCH] Fix util/grub.d/20_linux_xen.in: Add xen_boot command
|
||||
support for aarch64
|
||||
Date: Tue, 29 Aug 2017 16:40:52 -0400
|
||||
Subject: [PATCH] Fix util/grub.d/20_linux_xen.in: Add xen_boot command support
|
||||
for aarch64
|
||||
|
||||
Commit d33045ce7ffcb7c1e4a60c14d5ca64b36e3c5abe introduced
|
||||
the support for this, but it does not work under x86 (as it stops
|
||||
@ -15,12 +15,29 @@ The 20_linux_xen is run under a shell and any exits from within it:
|
||||
[root@tst063 grub]# echo $?
|
||||
1
|
||||
|
||||
will result in 20_linux_xen exciting without continuing
|
||||
will result in 20_linux_xen exiting without continuing
|
||||
and also causing grub2-mkconfig to stop processing.
|
||||
|
||||
As in:
|
||||
|
||||
[root@tst063 ~]#
|
||||
[root@tst063 grub]# ./grub-mkconfig | tail
|
||||
Generating grub configuration file ...
|
||||
Found linux image: /boot/vmlinuz-4.13.0-0.rc5.git1.1.fc27.x86_64
|
||||
Found initrd image: /boot/initramfs-4.13.0-0.rc5.git1.1.fc27.x86_64.img
|
||||
Found linux image: /boot/vmlinuz-0-rescue-ec082ee24aea41b9b16aca52a6d10cc2
|
||||
Found initrd image: /boot/initramfs-0-rescue-ec082ee24aea41b9b16aca52a6d10cc2.img
|
||||
echo 'Loading Linux 0-rescue-ec082ee24aea41b9b16aca52a6d10cc2 ...'
|
||||
linux /vmlinuz-0-rescue-ec082ee24aea41b9b16aca52a6d10cc2 root=/dev/mapper/fedora_tst063-root ro single
|
||||
echo 'Loading initial ramdisk ...'
|
||||
initrd /initramfs-0-rescue-ec082ee24aea41b9b16aca52a6d10cc2.img
|
||||
}
|
||||
}
|
||||
|
||||
### END /usr/local/etc/grub.d/10_linux ###
|
||||
|
||||
### BEGIN /usr/local/etc/grub.d/20_linux_xen ###
|
||||
|
||||
root@tst063 grub]#
|
||||
|
||||
And no more.
|
||||
|
||||
@ -29,17 +46,19 @@ and to process the return value in a conditional. That fixes
|
||||
the issue.
|
||||
|
||||
RH-BZ 1486002: grub2-mkconfig does not work if xen.gz is installed.
|
||||
|
||||
CC: Fu Wei <fu.wei@linaro.org>
|
||||
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub.d/20_linux_xen.in | 9 ++++-----
|
||||
1 file changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 462f8e1f819..9b1bd716965 100644
|
||||
index c002fc9f946..083bcef5d1b 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -210,13 +210,12 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
@@ -206,13 +206,12 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
if [ "x$is_top_level" != xtrue ]; then
|
||||
echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
|
||||
fi
|
@ -1,30 +1,36 @@
|
||||
From 87c089b6f1945ebcc690697d279c74284f1b4072 Mon Sep 17 00:00:00 2001
|
||||
From b4d709b6ee789cdaf3fa7a80fd90c721a16f48c2 Mon Sep 17 00:00:00 2001
|
||||
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Date: Mon, 28 Aug 2017 13:59:12 -0400
|
||||
Subject: [PATCH] Use grub-file to figure out whether multiboot2 should
|
||||
be used for Xen.gz
|
||||
Date: Tue, 29 Aug 2017 16:40:53 -0400
|
||||
Subject: [PATCH] Use grub-file to figure out whether multiboot2 should be used
|
||||
for Xen.gz
|
||||
|
||||
The multiboot2 is much more preferable than multiboot. Especiall
|
||||
if booting under EFI where multiboot does not have the functionality
|
||||
to pass ImageHandler.
|
||||
|
||||
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub.d/20_linux_xen.in | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
util/grub.d/20_linux_xen.in | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 9b1bd716965..fae1ffe9494 100644
|
||||
index 083bcef5d1b..0cb0f4e49b9 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -216,6 +216,10 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
@@ -210,8 +210,13 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
xen_loader="xen_hypervisor"
|
||||
module_loader="xen_module"
|
||||
else
|
||||
xen_loader="multiboot"
|
||||
module_loader="module"
|
||||
- xen_loader="multiboot"
|
||||
- module_loader="module"
|
||||
+ if ($grub_file --is-x86-multiboot2 $current_xen); then
|
||||
+ xen_loader="multiboot2"
|
||||
+ module_loader="module2"
|
||||
+ fi
|
||||
+ xen_loader="multiboot2"
|
||||
+ module_loader="module2"
|
||||
+ else
|
||||
+ xen_loader="multiboot"
|
||||
+ module_loader="module"
|
||||
+ fi
|
||||
fi
|
||||
while [ "x$list" != "x" ] ; do
|
||||
linux=`version_find_latest $list`
|
115
0087-efi-Move-grub_reboot-into-kernel.patch
Normal file
115
0087-efi-Move-grub_reboot-into-kernel.patch
Normal file
@ -0,0 +1,115 @@
|
||||
From 0ba90a7f017889d32a47897d9107ef45cc50a049 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Thu, 31 Aug 2017 16:40:18 +0200
|
||||
Subject: [PATCH] efi: Move grub_reboot() into kernel
|
||||
|
||||
The reboot function calls machine_fini() and then reboots the system.
|
||||
Currently it lives in lib/ which means it gets compiled into the
|
||||
reboot module which lives on the heap.
|
||||
|
||||
In a following patch, I want to free the heap on machine_fini()
|
||||
though, so we would free the memory that the code is running in. That
|
||||
obviously breaks with smarter UEFI implementations.
|
||||
|
||||
So this patch moves it into the core. That way we ensure that all
|
||||
code running after machine_fini() in the UEFI case is running from
|
||||
memory that got allocated (and gets deallocated) by the UEFI core.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/Makefile.core.def | 4 ----
|
||||
grub-core/kern/efi/efi.c | 9 +++++++++
|
||||
grub-core/lib/efi/reboot.c | 33 ---------------------------------
|
||||
include/grub/misc.h | 3 ++-
|
||||
4 files changed, 11 insertions(+), 38 deletions(-)
|
||||
delete mode 100644 grub-core/lib/efi/reboot.c
|
||||
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index d90ad622082..2c1d62ceea9 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -872,10 +872,6 @@ module = {
|
||||
name = reboot;
|
||||
i386 = lib/i386/reboot.c;
|
||||
i386 = lib/i386/reboot_trampoline.S;
|
||||
- ia64_efi = lib/efi/reboot.c;
|
||||
- x86_64_efi = lib/efi/reboot.c;
|
||||
- arm_efi = lib/efi/reboot.c;
|
||||
- arm64_efi = lib/efi/reboot.c;
|
||||
powerpc_ieee1275 = lib/ieee1275/reboot.c;
|
||||
sparc64_ieee1275 = lib/ieee1275/reboot.c;
|
||||
mips_arc = lib/mips/arc/reboot.c;
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index d467785fc6c..708581fcbde 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -154,6 +154,15 @@ grub_efi_get_loaded_image (grub_efi_handle_t image_handle)
|
||||
GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||
}
|
||||
|
||||
+void
|
||||
+grub_reboot (void)
|
||||
+{
|
||||
+ grub_machine_fini (GRUB_LOADER_FLAG_NORETURN);
|
||||
+ efi_call_4 (grub_efi_system_table->runtime_services->reset_system,
|
||||
+ GRUB_EFI_RESET_COLD, GRUB_EFI_SUCCESS, 0, NULL);
|
||||
+ for (;;) ;
|
||||
+}
|
||||
+
|
||||
void
|
||||
grub_exit (void)
|
||||
{
|
||||
diff --git a/grub-core/lib/efi/reboot.c b/grub-core/lib/efi/reboot.c
|
||||
deleted file mode 100644
|
||||
index 7de8bcb5d6e..00000000000
|
||||
--- a/grub-core/lib/efi/reboot.c
|
||||
+++ /dev/null
|
||||
@@ -1,33 +0,0 @@
|
||||
-/*
|
||||
- * GRUB -- GRand Unified Bootloader
|
||||
- * Copyright (C) 2011 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/efi/api.h>
|
||||
-#include <grub/efi/efi.h>
|
||||
-#include <grub/mm.h>
|
||||
-#include <grub/misc.h>
|
||||
-#include <grub/kernel.h>
|
||||
-#include <grub/loader.h>
|
||||
-
|
||||
-void
|
||||
-grub_reboot (void)
|
||||
-{
|
||||
- grub_machine_fini (GRUB_LOADER_FLAG_NORETURN);
|
||||
- efi_call_4 (grub_efi_system_table->runtime_services->reset_system,
|
||||
- GRUB_EFI_RESET_COLD, GRUB_EFI_SUCCESS, 0, NULL);
|
||||
- for (;;) ;
|
||||
-}
|
||||
diff --git a/include/grub/misc.h b/include/grub/misc.h
|
||||
index 2a9f87cc255..372f009e84f 100644
|
||||
--- a/include/grub/misc.h
|
||||
+++ b/include/grub/misc.h
|
||||
@@ -396,7 +396,8 @@ grub_abs (int x)
|
||||
}
|
||||
|
||||
/* Reboot the machine. */
|
||||
-#if defined (GRUB_MACHINE_EMU) || defined (GRUB_MACHINE_QEMU_MIPS)
|
||||
+#if defined (GRUB_MACHINE_EMU) || defined (GRUB_MACHINE_QEMU_MIPS) || \
|
||||
+ defined (GRUB_MACHINE_EFI)
|
||||
void EXPORT_FUNC(grub_reboot) (void) __attribute__ ((noreturn));
|
||||
#else
|
||||
void grub_reboot (void) __attribute__ ((noreturn));
|
154
0088-efi-Free-malloc-regions-on-exit.patch
Normal file
154
0088-efi-Free-malloc-regions-on-exit.patch
Normal file
@ -0,0 +1,154 @@
|
||||
From 92bfc33db984eec22966a163eed7b6f2ab0266bf Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Thu, 31 Aug 2017 16:40:19 +0200
|
||||
Subject: [PATCH] efi: Free malloc regions on exit
|
||||
|
||||
When we exit grub, we don't free all the memory that we allocated earlier
|
||||
for our heap region. This can cause problems with setups where you try
|
||||
to descend the boot order using "exit" entries, such as PXE -> HD boot
|
||||
scenarios.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/efi/init.c | 1 +
|
||||
grub-core/kern/efi/mm.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/efi/efi.h | 1 +
|
||||
3 files changed, 84 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
|
||||
index 2c31847bf6d..3dfdf2d22b0 100644
|
||||
--- a/grub-core/kern/efi/init.c
|
||||
+++ b/grub-core/kern/efi/init.c
|
||||
@@ -80,4 +80,5 @@ grub_efi_fini (void)
|
||||
{
|
||||
grub_efidisk_fini ();
|
||||
grub_console_fini ();
|
||||
+ grub_efi_memory_fini ();
|
||||
}
|
||||
diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
|
||||
index ac2a4c556b8..c48e9b5c7c3 100644
|
||||
--- a/grub-core/kern/efi/mm.c
|
||||
+++ b/grub-core/kern/efi/mm.c
|
||||
@@ -49,6 +49,70 @@ static grub_efi_uintn_t finish_desc_size;
|
||||
static grub_efi_uint32_t finish_desc_version;
|
||||
int grub_efi_is_finished = 0;
|
||||
|
||||
+/*
|
||||
+ * We need to roll back EFI allocations on exit. Remember allocations that
|
||||
+ * we'll free on exit.
|
||||
+ */
|
||||
+struct efi_allocation;
|
||||
+struct efi_allocation {
|
||||
+ grub_efi_physical_address_t address;
|
||||
+ grub_efi_uint64_t pages;
|
||||
+ struct efi_allocation *next;
|
||||
+};
|
||||
+static struct efi_allocation *efi_allocated_memory;
|
||||
+
|
||||
+static void
|
||||
+grub_efi_store_alloc (grub_efi_physical_address_t address,
|
||||
+ grub_efi_uintn_t pages)
|
||||
+{
|
||||
+ grub_efi_boot_services_t *b;
|
||||
+ struct efi_allocation *alloc;
|
||||
+ grub_efi_status_t status;
|
||||
+
|
||||
+ b = grub_efi_system_table->boot_services;
|
||||
+ status = efi_call_3 (b->allocate_pool, GRUB_EFI_LOADER_DATA,
|
||||
+ sizeof(*alloc), (void**)&alloc);
|
||||
+
|
||||
+ if (status == GRUB_EFI_SUCCESS)
|
||||
+ {
|
||||
+ alloc->next = efi_allocated_memory;
|
||||
+ alloc->address = address;
|
||||
+ alloc->pages = pages;
|
||||
+ efi_allocated_memory = alloc;
|
||||
+ }
|
||||
+ else
|
||||
+ grub_printf ("Could not malloc memory to remember EFI allocation. "
|
||||
+ "Exiting GRUB won't free all memory.\n");
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+grub_efi_drop_alloc (grub_efi_physical_address_t address,
|
||||
+ grub_efi_uintn_t pages)
|
||||
+{
|
||||
+ struct efi_allocation *ea, *eap;
|
||||
+ grub_efi_boot_services_t *b;
|
||||
+
|
||||
+ b = grub_efi_system_table->boot_services;
|
||||
+
|
||||
+ for (eap = NULL, ea = efi_allocated_memory; ea; eap = ea, ea = ea->next)
|
||||
+ {
|
||||
+ if (ea->address != address || ea->pages != pages)
|
||||
+ continue;
|
||||
+
|
||||
+ /* Remove the current entry from the list. */
|
||||
+ if (eap)
|
||||
+ eap->next = ea->next;
|
||||
+ else
|
||||
+ efi_allocated_memory = ea->next;
|
||||
+
|
||||
+ /* Then free the memory backing it. */
|
||||
+ efi_call_1 (b->free_pool, ea);
|
||||
+
|
||||
+ /* And leave, we're done. */
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* Allocate pages. Return the pointer to the first of allocated pages. */
|
||||
void *
|
||||
grub_efi_allocate_pages_real (grub_efi_physical_address_t address,
|
||||
@@ -79,6 +143,8 @@ grub_efi_allocate_pages_real (grub_efi_physical_address_t address,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+ grub_efi_store_alloc (address, pages);
|
||||
+
|
||||
return (void *) ((grub_addr_t) address);
|
||||
}
|
||||
|
||||
@@ -108,6 +174,8 @@ grub_efi_free_pages (grub_efi_physical_address_t address,
|
||||
|
||||
b = grub_efi_system_table->boot_services;
|
||||
efi_call_2 (b->free_pages, address, pages);
|
||||
+
|
||||
+ grub_efi_drop_alloc (address, pages);
|
||||
}
|
||||
|
||||
#if defined (__i386__) || defined (__x86_64__)
|
||||
@@ -422,6 +490,20 @@ add_memory_regions (grub_efi_memory_descriptor_t *memory_map,
|
||||
grub_fatal ("too little memory");
|
||||
}
|
||||
|
||||
+void
|
||||
+grub_efi_memory_fini (void)
|
||||
+{
|
||||
+ /*
|
||||
+ * Free all stale allocations. grub_efi_free_pages() will remove
|
||||
+ * the found entry from the list and it will always find the first
|
||||
+ * list entry (efi_allocated_memory is the list start). Hence we
|
||||
+ * remove all entries from the list until none is left altogether.
|
||||
+ */
|
||||
+ while (efi_allocated_memory)
|
||||
+ grub_efi_free_pages (efi_allocated_memory->address,
|
||||
+ efi_allocated_memory->pages);
|
||||
+}
|
||||
+
|
||||
#if 0
|
||||
/* Print the memory map. */
|
||||
static void
|
||||
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
|
||||
index 3fa082816ca..c996913e5bc 100644
|
||||
--- a/include/grub/efi/efi.h
|
||||
+++ b/include/grub/efi/efi.h
|
||||
@@ -55,6 +55,7 @@ EXPORT_FUNC(grub_efi_get_memory_map) (grub_efi_uintn_t *memory_map_size,
|
||||
grub_efi_uintn_t *map_key,
|
||||
grub_efi_uintn_t *descriptor_size,
|
||||
grub_efi_uint32_t *descriptor_version);
|
||||
+void grub_efi_memory_fini (void);
|
||||
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);
|
42
0090-ls-prevent-double-open.patch
Normal file
42
0090-ls-prevent-double-open.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 3d8df86d825ff07a8eeb202329b8731fd1a4a24e Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 13 Nov 2017 08:27:28 -0800
|
||||
Subject: [PATCH] ls: prevent double open
|
||||
|
||||
Prevent a double open. This can cause problems with some ieee1275
|
||||
devices, causing the system to hang. The double open can occur
|
||||
as follows:
|
||||
|
||||
grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
||||
dev = grub_device_open (device_name);
|
||||
dev remains open while:
|
||||
grub_normal_print_device_info (device_name);
|
||||
dev = grub_device_open (name);
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/commands/ls.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/grub-core/commands/ls.c b/grub-core/commands/ls.c
|
||||
index 0eaf8365279..c25161cc4f2 100644
|
||||
--- a/grub-core/commands/ls.c
|
||||
+++ b/grub-core/commands/ls.c
|
||||
@@ -201,6 +201,15 @@ grub_ls_list_files (char *dirname, int longlist, int all, int human)
|
||||
if (grub_errno == GRUB_ERR_UNKNOWN_FS)
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
|
||||
+#ifdef GRUB_MACHINE_IEEE1275
|
||||
+ /*
|
||||
+ * Close device to prevent a double open in grub_normal_print_device_info().
|
||||
+ * Otherwise it may lead to hangs on some IEEE 1275 platforms.
|
||||
+ */
|
||||
+ grub_device_close (dev);
|
||||
+ dev = NULL;
|
||||
+#endif
|
||||
+
|
||||
grub_normal_print_device_info (device_name);
|
||||
}
|
||||
else if (fs)
|
23
0091-grub-install-Fix-memory-leak.patch
Normal file
23
0091-grub-install-Fix-memory-leak.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From 2a8856401774d86ec78481e2188a54bbf689f25e Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 27 Nov 2017 09:12:49 -0800
|
||||
Subject: [PATCH] grub-install: Fix memory leak
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-install.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 75e3e5ba6f0..5e4cdfd2b52 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -1472,6 +1472,7 @@ main (int argc, char *argv[])
|
||||
{
|
||||
grub_util_fprint_full_disk_name (load_cfg_f, g, dev);
|
||||
fprintf (load_cfg_f, " ");
|
||||
+ free (g);
|
||||
}
|
||||
if (dev != grub_dev)
|
||||
grub_device_close (dev);
|
26
0092-ieee1275-Fix-segfault-in-grub-ofpathname.patch
Normal file
26
0092-ieee1275-Fix-segfault-in-grub-ofpathname.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 2dc163bf692c18275de7b0d6716138c676e3bf92 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Tue, 28 Nov 2017 11:51:39 -0800
|
||||
Subject: [PATCH] ieee1275: Fix segfault in grub-ofpathname
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/ieee1275/grub-ofpathname.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/ieee1275/grub-ofpathname.c b/util/ieee1275/grub-ofpathname.c
|
||||
index 8e5d766cb63..300fbddad7c 100644
|
||||
--- a/util/ieee1275/grub-ofpathname.c
|
||||
+++ b/util/ieee1275/grub-ofpathname.c
|
||||
@@ -46,7 +46,9 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
of_path = grub_util_devname_to_ofpath (argv[1]);
|
||||
- printf("%s\n", of_path);
|
||||
+
|
||||
+ if (of_path)
|
||||
+ printf ("%s\n", of_path);
|
||||
|
||||
free (of_path);
|
||||
|
@ -0,0 +1,27 @@
|
||||
From 5033080eb6cb784a3d7f36b3d66b71f4603bf0aa Mon Sep 17 00:00:00 2001
|
||||
From: Jordan Glover <Golden_Miller83@protonmail.ch>
|
||||
Date: Wed, 29 Nov 2017 08:35:37 -0500
|
||||
Subject: [PATCH] grub-mkconfig: Fix detecting .sig files as system images
|
||||
|
||||
grub-mkconfig detects detached RSA signatures for kernel images used for
|
||||
signature checking as valid images and adds them to grub.cfg as separate
|
||||
menu entries. This patch adds .sig extension to common blacklist.
|
||||
|
||||
Signed-off-by: Jordan Glover <Golden_Miller83@protonmail.ch>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkconfig_lib.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 60b31caddeb..0f801cab3e4 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -188,6 +188,7 @@ grub_file_is_not_garbage ()
|
||||
*.dpkg-*) return 1 ;; # debian dpkg
|
||||
*.rpmsave|*.rpmnew) return 1 ;;
|
||||
README*|*/README*) return 1 ;; # documentation
|
||||
+ *.sig) return 1 ;; # signatures
|
||||
esac
|
||||
else
|
||||
return 1
|
@ -0,0 +1,45 @@
|
||||
From d34977cb662d9d3c74532dc175103758c47f552f Mon Sep 17 00:00:00 2001
|
||||
From: Julien Grall <julien.grall@linaro.org>
|
||||
Date: Wed, 29 Nov 2017 17:08:12 +0000
|
||||
Subject: [PATCH] arm64/xen: Add missing #address-cells and #size-cells
|
||||
properties
|
||||
|
||||
The properties #address-cells and #size-cells are used to know the
|
||||
number of cells for ranges provided by "regs". If they don't exist, the
|
||||
value are resp. 2 and 1.
|
||||
|
||||
Currently, when multiboot nodes are created it is assumed that #address-cells
|
||||
and #size-cells are exactly 2. However, they are never set by GRUB and
|
||||
will result to later failure when the device-tree is generated by GRUB
|
||||
or contain different values.
|
||||
|
||||
To prevent this failure, create the both properties in the chosen nodes.
|
||||
|
||||
Signed-off-by: Julien Grall <julien.grall@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/arm64/xen_boot.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/grub-core/loader/arm64/xen_boot.c b/grub-core/loader/arm64/xen_boot.c
|
||||
index c95d6c5a868..6780b1f0c4a 100644
|
||||
--- a/grub-core/loader/arm64/xen_boot.c
|
||||
+++ b/grub-core/loader/arm64/xen_boot.c
|
||||
@@ -115,6 +115,17 @@ prepare_xen_hypervisor_params (void *xen_boot_fdt)
|
||||
if (chosen_node < 1)
|
||||
return grub_error (GRUB_ERR_IO, "failed to get chosen node in FDT");
|
||||
|
||||
+ /*
|
||||
+ * The address and size are always written using 64-bits value. Set
|
||||
+ * #address-cells and #size-cells accordingly.
|
||||
+ */
|
||||
+ retval = grub_fdt_set_prop32 (xen_boot_fdt, chosen_node, "#address-cells", 2);
|
||||
+ if (retval)
|
||||
+ return grub_error (GRUB_ERR_IO, "failed to set #address-cells");
|
||||
+ retval = grub_fdt_set_prop32 (xen_boot_fdt, chosen_node, "#size-cells", 2);
|
||||
+ if (retval)
|
||||
+ return grub_error (GRUB_ERR_IO, "failed to set #size-cells");
|
||||
+
|
||||
grub_dprintf ("xen_loader",
|
||||
"Xen Hypervisor cmdline : %s @ %p size:%d\n",
|
||||
xen_hypervisor->cmdline, xen_hypervisor->cmdline,
|
@ -0,0 +1,31 @@
|
||||
From 52ef7b23f528ce844716661d586497a177e80d5b Mon Sep 17 00:00:00 2001
|
||||
From: dann frazier <dann.frazier@canonical.com>
|
||||
Date: Thu, 18 Jan 2018 11:57:26 -0700
|
||||
Subject: [PATCH] Keep the native terminal active when enabling gfxterm
|
||||
|
||||
grub-mkconfig will set GRUB_TERMINAL_OUTPUT to "gfxterm" unless the user
|
||||
has overridden it. On EFI systems, this will stop output from going to the
|
||||
default "console" terminal. When the EFI fw console is configured to output to
|
||||
both serial and video, this will cause GRUB to only display on video - while
|
||||
continuing to accept input from both video and serial.
|
||||
|
||||
Instead of switching from "console" to "gfxterm", let's output to both.
|
||||
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub.d/00_header.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
|
||||
index 93a90233ead..8d46fc973c1 100644
|
||||
--- a/util/grub.d/00_header.in
|
||||
+++ b/util/grub.d/00_header.in
|
||||
@@ -221,7 +221,7 @@ case x${GRUB_TERMINAL_OUTPUT} in
|
||||
;;
|
||||
x*)
|
||||
cat << EOF
|
||||
-terminal_output ${GRUB_TERMINAL_OUTPUT}
|
||||
+terminal_output --append ${GRUB_TERMINAL_OUTPUT}
|
||||
EOF
|
||||
;;
|
||||
esac
|
84
0096-ahci-Improve-error-handling.patch
Normal file
84
0096-ahci-Improve-error-handling.patch
Normal file
@ -0,0 +1,84 @@
|
||||
From 566a03a623ca5ec07c815683625aecc410dc3095 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Fritsch <fritsch@genua.de>
|
||||
Date: Fri, 19 Jan 2018 14:13:29 +0100
|
||||
Subject: [PATCH] ahci: Improve error handling
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Check the error bits in the interrupt status register. According to the
|
||||
AHCI 1.2 spec, "Interrupt sources that are disabled (‘0’) are still
|
||||
reflected in the status registers.", so this should work even though
|
||||
grub uses polling
|
||||
|
||||
This fixes the following problem on a Fujitsu E744 laptop:
|
||||
|
||||
Sometimes there is a very long delay (up to several minutes) when
|
||||
booting from hard disk. It seems accessing the DVD drive (which has no
|
||||
disk inserted) sometimes fails with some errors, which leads to each
|
||||
access being stalled until the 20s timeout triggers. This seems to
|
||||
happen when grub is trying to read filesystem/partition data.
|
||||
|
||||
The problem is that the command_issue bit that is checked in the loop is
|
||||
only reset if the "HBA receives a FIS which clears the BSY, DRQ, and ERR
|
||||
bits for the command", but the ERR bit is never cleared. Therefore
|
||||
command_issue is never reset and grub waits for the timeout.
|
||||
|
||||
The relevant bit in our case is the Task File Error Status (TFES), which
|
||||
is equivalent to the ERR bit 0 in tfd. But this patch also checks
|
||||
the other error bits except for the "Interface non-fatal error status"
|
||||
bit.
|
||||
|
||||
Signed-off-by: Stefan Fritsch <fritsch@genua.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/disk/ahci.c | 22 ++++++++++++++++++++--
|
||||
1 file changed, 20 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/disk/ahci.c b/grub-core/disk/ahci.c
|
||||
index 494a1b7734e..f2f606423ac 100644
|
||||
--- a/grub-core/disk/ahci.c
|
||||
+++ b/grub-core/disk/ahci.c
|
||||
@@ -82,6 +82,20 @@ enum grub_ahci_hba_port_command
|
||||
GRUB_AHCI_HBA_PORT_CMD_FR = 0x4000,
|
||||
};
|
||||
|
||||
+enum grub_ahci_hba_port_int_status
|
||||
+ {
|
||||
+ GRUB_AHCI_HBA_PORT_IS_IFS = (1UL << 27),
|
||||
+ GRUB_AHCI_HBA_PORT_IS_HBDS = (1UL << 28),
|
||||
+ GRUB_AHCI_HBA_PORT_IS_HBFS = (1UL << 29),
|
||||
+ GRUB_AHCI_HBA_PORT_IS_TFES = (1UL << 30),
|
||||
+ };
|
||||
+
|
||||
+#define GRUB_AHCI_HBA_PORT_IS_FATAL_MASK ( \
|
||||
+ GRUB_AHCI_HBA_PORT_IS_IFS | \
|
||||
+ GRUB_AHCI_HBA_PORT_IS_HBDS | \
|
||||
+ GRUB_AHCI_HBA_PORT_IS_HBFS | \
|
||||
+ GRUB_AHCI_HBA_PORT_IS_TFES)
|
||||
+
|
||||
struct grub_ahci_hba
|
||||
{
|
||||
grub_uint32_t cap;
|
||||
@@ -1026,7 +1040,8 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
|
||||
|
||||
endtime = grub_get_time_ms () + (spinup ? 20000 : 20000);
|
||||
while ((dev->hba->ports[dev->port].command_issue & 1))
|
||||
- if (grub_get_time_ms () > endtime)
|
||||
+ if (grub_get_time_ms () > endtime ||
|
||||
+ (dev->hba->ports[dev->port].intstatus & GRUB_AHCI_HBA_PORT_IS_FATAL_MASK))
|
||||
{
|
||||
grub_dprintf ("ahci", "AHCI status <%x %x %x %x>\n",
|
||||
dev->hba->ports[dev->port].command_issue,
|
||||
@@ -1034,7 +1049,10 @@ grub_ahci_readwrite_real (struct grub_ahci_device *dev,
|
||||
dev->hba->ports[dev->port].intstatus,
|
||||
dev->hba->ports[dev->port].task_file_data);
|
||||
dev->hba->ports[dev->port].command_issue = 0;
|
||||
- err = grub_error (GRUB_ERR_IO, "AHCI transfer timed out");
|
||||
+ if (dev->hba->ports[dev->port].intstatus & GRUB_AHCI_HBA_PORT_IS_FATAL_MASK)
|
||||
+ err = grub_error (GRUB_ERR_IO, "AHCI transfer error");
|
||||
+ else
|
||||
+ err = grub_error (GRUB_ERR_IO, "AHCI transfer timed out");
|
||||
if (!reset)
|
||||
grub_ahci_reset_port (dev, 1);
|
||||
break;
|
94
0097-sparc64-Add-blocklist-GPT-support-for-SPARC.patch
Normal file
94
0097-sparc64-Add-blocklist-GPT-support-for-SPARC.patch
Normal file
@ -0,0 +1,94 @@
|
||||
From 69e0a67bfb419a8d6c905fb23330a8afc2435de6 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Thu, 11 May 2017 18:25:24 -0700
|
||||
Subject: [PATCH] sparc64: Add blocklist GPT support for SPARC
|
||||
|
||||
Add block-list GPT support for SPARC. The OBP "load" and "boot" methods
|
||||
are partition aware and neither command can see the partition table. Also
|
||||
neither command can address the entire physical disk. When the install
|
||||
happens, grub generates the block-list entries based on the beginning of the
|
||||
physical disk, not the beginning of the partition. This patch fixes the
|
||||
block-list entries so they match what OBP expects during boot for a GPT disk.
|
||||
|
||||
T5 and above now supports GPT as well as VTOC.
|
||||
|
||||
This patch has been tested on T5-2 and newer SPARC systems.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/setup.c | 26 +++++++++++++++++++++++---
|
||||
1 file changed, 23 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/util/setup.c b/util/setup.c
|
||||
index 8aa5a39a794..80363075d34 100644
|
||||
--- a/util/setup.c
|
||||
+++ b/util/setup.c
|
||||
@@ -137,6 +137,9 @@ struct blocklists
|
||||
struct grub_boot_blocklist *first_block, *block;
|
||||
#ifdef GRUB_SETUP_BIOS
|
||||
grub_uint16_t current_segment;
|
||||
+#endif
|
||||
+#ifdef GRUB_SETUP_SPARC64
|
||||
+ grub_uint64_t gpt_offset;
|
||||
#endif
|
||||
grub_uint16_t last_length;
|
||||
grub_disk_addr_t first_sector;
|
||||
@@ -151,6 +154,10 @@ save_blocklists (grub_disk_addr_t sector, unsigned offset, unsigned length,
|
||||
struct grub_boot_blocklist *prev = bl->block + 1;
|
||||
grub_uint64_t seclen;
|
||||
|
||||
+#ifdef GRUB_SETUP_SPARC64
|
||||
+ sector -= bl->gpt_offset;
|
||||
+#endif
|
||||
+
|
||||
grub_util_info ("saving <%" GRUB_HOST_PRIuLONG_LONG ",%u,%u>",
|
||||
(unsigned long long) sector, offset, length);
|
||||
|
||||
@@ -662,6 +669,16 @@ unable_to_embed:
|
||||
|
||||
bl.block = bl.first_block;
|
||||
|
||||
+#ifdef GRUB_SETUP_SPARC64
|
||||
+ {
|
||||
+ grub_partition_t container = root_dev->disk->partition;
|
||||
+ bl.gpt_offset = 0;
|
||||
+
|
||||
+ if (grub_strstr (container->partmap->name, "gpt"))
|
||||
+ bl.gpt_offset = grub_partition_get_start (container);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
grub_install_get_blocklist (root_dev, core_path, core_img, core_size,
|
||||
save_blocklists, &bl);
|
||||
|
||||
@@ -721,15 +738,18 @@ unable_to_embed:
|
||||
{
|
||||
char *buf, *ptr = core_img;
|
||||
size_t len = core_size;
|
||||
- grub_uint64_t blk;
|
||||
+ grub_uint64_t blk, offset = 0;
|
||||
grub_partition_t container = core_dev->disk->partition;
|
||||
grub_err_t err;
|
||||
|
||||
core_dev->disk->partition = 0;
|
||||
+#ifdef GRUB_SETUP_SPARC64
|
||||
+ offset = bl.gpt_offset;
|
||||
+#endif
|
||||
|
||||
buf = xmalloc (core_size);
|
||||
blk = bl.first_sector;
|
||||
- err = grub_disk_read (core_dev->disk, blk, 0, GRUB_DISK_SECTOR_SIZE, buf);
|
||||
+ err = grub_disk_read (core_dev->disk, blk + offset, 0, GRUB_DISK_SECTOR_SIZE, buf);
|
||||
if (err)
|
||||
grub_util_error (_("cannot read `%s': %s"), core_dev->disk->name,
|
||||
grub_errmsg);
|
||||
@@ -748,7 +768,7 @@ unable_to_embed:
|
||||
if (cur > len)
|
||||
cur = len;
|
||||
|
||||
- err = grub_disk_read (core_dev->disk, blk, 0, cur, buf);
|
||||
+ err = grub_disk_read (core_dev->disk, blk + offset, 0, cur, buf);
|
||||
if (err)
|
||||
grub_util_error (_("cannot read `%s': %s"), core_dev->disk->name,
|
||||
grub_errmsg);
|
220
0098-sparc64-fix-OF-path-names-for-sun4v-systems.patch
Normal file
220
0098-sparc64-fix-OF-path-names-for-sun4v-systems.patch
Normal file
@ -0,0 +1,220 @@
|
||||
From d85c76b501edda038b68bc23eee946e6cc600513 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Tue, 30 Jan 2018 20:49:48 -0800
|
||||
Subject: [PATCH] sparc64: fix OF path names for sun4v systems
|
||||
|
||||
Fix the Open Firmware (OF) path property for sun4v SPARC systems.
|
||||
These platforms do not have a /sas/ within their path. Over time
|
||||
different OF addressing schemes have been supported. There
|
||||
is no generic addressing scheme that works across every HBA.
|
||||
|
||||
It looks that this functionality will not work if you try to cross-install
|
||||
SPARC GRUB2 binary using e.g. x86 grub-install. By default it should work.
|
||||
However, we will also have other issues here, like lack of access to OF
|
||||
firmware/paths, which make such configs unusable anyway. So, let's leave
|
||||
this patch as is for time being. If somebody cares then he/she should fix
|
||||
the issue(s) at some point.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/linux/ofpath.c | 147 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 144 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
|
||||
index dce4e59d081..8d7d6837f26 100644
|
||||
--- a/grub-core/osdep/linux/ofpath.c
|
||||
+++ b/grub-core/osdep/linux/ofpath.c
|
||||
@@ -38,6 +38,46 @@
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
|
||||
+#ifdef __sparc__
|
||||
+typedef enum
|
||||
+ {
|
||||
+ GRUB_OFPATH_SPARC_WWN_ADDR = 1,
|
||||
+ GRUB_OFPATH_SPARC_TGT_LUN,
|
||||
+ } ofpath_sparc_addressing;
|
||||
+
|
||||
+struct ofpath_sparc_hba
|
||||
+{
|
||||
+ grub_uint32_t device_id;
|
||||
+ ofpath_sparc_addressing addressing;
|
||||
+};
|
||||
+
|
||||
+static struct ofpath_sparc_hba sparc_lsi_hba[] = {
|
||||
+ /* Rhea, Jasper 320, LSI53C1020/1030. */
|
||||
+ {0x30, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* SAS-1068E. */
|
||||
+ {0x50, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* SAS-1064E. */
|
||||
+ {0x56, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* Pandora SAS-1068E. */
|
||||
+ {0x58, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* Aspen, Invader, LSI SAS-3108. */
|
||||
+ {0x5d, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* Niwot, SAS 2108. */
|
||||
+ {0x79, GRUB_OFPATH_SPARC_TGT_LUN},
|
||||
+ /* Erie, Falcon, LSI SAS 2008. */
|
||||
+ {0x72, GRUB_OFPATH_SPARC_WWN_ADDR},
|
||||
+ /* LSI WarpDrive 6203. */
|
||||
+ {0x7e, GRUB_OFPATH_SPARC_WWN_ADDR},
|
||||
+ /* LSI SAS 2308. */
|
||||
+ {0x87, GRUB_OFPATH_SPARC_WWN_ADDR},
|
||||
+ /* LSI SAS 3008. */
|
||||
+ {0x97, GRUB_OFPATH_SPARC_WWN_ADDR},
|
||||
+ {0, 0}
|
||||
+};
|
||||
+
|
||||
+static const int LSI_VENDOR_ID = 0x1000;
|
||||
+#endif
|
||||
+
|
||||
#ifdef OFPATH_STANDALONE
|
||||
#define xmalloc malloc
|
||||
void
|
||||
@@ -338,6 +378,64 @@ vendor_is_ATA(const char *path)
|
||||
return (memcmp(bufcont, "ATA", 3) == 0);
|
||||
}
|
||||
|
||||
+#ifdef __sparc__
|
||||
+static void
|
||||
+check_hba_identifiers (const char *sysfs_path, int *vendor, int *device_id)
|
||||
+{
|
||||
+ char *ed = strstr (sysfs_path, "host");
|
||||
+ size_t path_size;
|
||||
+ char *p, *path;
|
||||
+ char buf[8];
|
||||
+ int fd;
|
||||
+
|
||||
+ if (!ed)
|
||||
+ return;
|
||||
+
|
||||
+ p = xstrdup (sysfs_path);
|
||||
+ ed = strstr (p, "host");
|
||||
+
|
||||
+ *ed = '\0';
|
||||
+
|
||||
+ path_size = (strlen (p) + sizeof ("vendor"));
|
||||
+ path = xmalloc (path_size);
|
||||
+
|
||||
+ if (!path)
|
||||
+ goto out;
|
||||
+
|
||||
+ snprintf (path, path_size, "%svendor", p);
|
||||
+ fd = open (path, O_RDONLY);
|
||||
+
|
||||
+ if (fd < 0)
|
||||
+ goto out;
|
||||
+
|
||||
+ memset (buf, 0, sizeof (buf));
|
||||
+
|
||||
+ if (read (fd, buf, sizeof (buf) - 1) < 0)
|
||||
+ goto out;
|
||||
+
|
||||
+ close (fd);
|
||||
+ sscanf (buf, "%x", vendor);
|
||||
+
|
||||
+ snprintf (path, path_size, "%sdevice", p);
|
||||
+ fd = open (path, O_RDONLY);
|
||||
+
|
||||
+ if (fd < 0)
|
||||
+ goto out;
|
||||
+
|
||||
+ memset (buf, 0, sizeof (buf));
|
||||
+
|
||||
+ if (read (fd, buf, sizeof (buf) - 1) < 0)
|
||||
+ goto out;
|
||||
+
|
||||
+ close (fd);
|
||||
+ sscanf (buf, "%x", device_id);
|
||||
+
|
||||
+ out:
|
||||
+ free (path);
|
||||
+ free (p);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static void
|
||||
check_sas (const char *sysfs_path, int *tgt, unsigned long int *sas_address)
|
||||
{
|
||||
@@ -399,7 +497,7 @@ of_path_of_scsi(const char *sys_devname __attribute__((unused)), const char *dev
|
||||
{
|
||||
const char *p, *digit_string, *disk_name;
|
||||
int host, bus, tgt, lun;
|
||||
- unsigned long int sas_address;
|
||||
+ unsigned long int sas_address = 0;
|
||||
char *sysfs_path, disk[MAX_DISK_CAT - sizeof ("/fp@0,0")];
|
||||
char *of_path;
|
||||
|
||||
@@ -416,9 +514,8 @@ of_path_of_scsi(const char *sys_devname __attribute__((unused)), const char *dev
|
||||
}
|
||||
|
||||
of_path = find_obppath(sysfs_path);
|
||||
- free (sysfs_path);
|
||||
if (!of_path)
|
||||
- return NULL;
|
||||
+ goto out;
|
||||
|
||||
if (strstr (of_path, "qlc"))
|
||||
strcat (of_path, "/fp@0,0");
|
||||
@@ -447,6 +544,46 @@ of_path_of_scsi(const char *sys_devname __attribute__((unused)), const char *dev
|
||||
}
|
||||
else
|
||||
{
|
||||
+#ifdef __sparc__
|
||||
+ ofpath_sparc_addressing addressing = GRUB_OFPATH_SPARC_TGT_LUN;
|
||||
+ int vendor = 0, device_id = 0;
|
||||
+ char *optr = disk;
|
||||
+
|
||||
+ check_hba_identifiers (sysfs_path, &vendor, &device_id);
|
||||
+
|
||||
+ if (vendor == LSI_VENDOR_ID)
|
||||
+ {
|
||||
+ struct ofpath_sparc_hba *lsi_hba;
|
||||
+
|
||||
+ /*
|
||||
+ * Over time different OF addressing schemes have been supported.
|
||||
+ * There is no generic addressing scheme that works across
|
||||
+ * every HBA.
|
||||
+ */
|
||||
+ for (lsi_hba = sparc_lsi_hba; lsi_hba->device_id; lsi_hba++)
|
||||
+ if (lsi_hba->device_id == device_id)
|
||||
+ {
|
||||
+ addressing = lsi_hba->addressing;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (addressing == GRUB_OFPATH_SPARC_WWN_ADDR)
|
||||
+ optr += snprintf (disk, sizeof (disk), "/%s@w%lx,%x", disk_name,
|
||||
+ sas_address, lun);
|
||||
+ else
|
||||
+ optr += snprintf (disk, sizeof (disk), "/%s@%x,%x", disk_name, tgt,
|
||||
+ lun);
|
||||
+
|
||||
+ if (*digit_string != '\0')
|
||||
+ {
|
||||
+ int part;
|
||||
+
|
||||
+ sscanf (digit_string, "%d", &part);
|
||||
+ snprintf (optr, sizeof (disk) - (optr - disk - 1), ":%c", 'a'
|
||||
+ + (part - 1));
|
||||
+ }
|
||||
+#else
|
||||
if (lun == 0)
|
||||
{
|
||||
int sas_id = 0;
|
||||
@@ -494,8 +631,12 @@ of_path_of_scsi(const char *sys_devname __attribute__((unused)), const char *dev
|
||||
}
|
||||
free (lunstr);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
strcat(of_path, disk);
|
||||
+
|
||||
+ out:
|
||||
+ free (sysfs_path);
|
||||
return of_path;
|
||||
}
|
||||
|
178
0099-Make-grub-install-check-for-errors-from-efibootmgr.patch
Normal file
178
0099-Make-grub-install-check-for-errors-from-efibootmgr.patch
Normal file
@ -0,0 +1,178 @@
|
||||
From 6400613ad0b463abc93362086a491cd2a5e99b0d Mon Sep 17 00:00:00 2001
|
||||
From: Steve McIntyre <steve@einval.com>
|
||||
Date: Wed, 31 Jan 2018 21:49:36 +0000
|
||||
Subject: [PATCH] Make grub-install check for errors from efibootmgr
|
||||
|
||||
Code is currently ignoring errors from efibootmgr, giving users
|
||||
clearly bogus output like:
|
||||
|
||||
Setting up grub-efi-amd64 (2.02~beta3-4) ...
|
||||
Installing for x86_64-efi platform.
|
||||
Could not delete variable: No space left on device
|
||||
Could not prepare Boot variable: No space left on device
|
||||
Installation finished. No error reported.
|
||||
|
||||
and then potentially unbootable systems. If efibootmgr fails, grub-install
|
||||
should know that and report it!
|
||||
|
||||
We've been using similar patch in Debian now for some time, with no ill effects.
|
||||
|
||||
Signed-off-by: Steve McIntyre <93sam@debian.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/unix/platform.c | 24 +++++++++++++++---------
|
||||
util/grub-install.c | 18 +++++++++++++-----
|
||||
include/grub/util/install.h | 2 +-
|
||||
3 files changed, 29 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/grub-core/osdep/unix/platform.c b/grub-core/osdep/unix/platform.c
|
||||
index a3fcfcacaa8..ca448bc11a0 100644
|
||||
--- a/grub-core/osdep/unix/platform.c
|
||||
+++ b/grub-core/osdep/unix/platform.c
|
||||
@@ -78,19 +78,20 @@ get_ofpathname (const char *dev)
|
||||
dev);
|
||||
}
|
||||
|
||||
-static void
|
||||
+static int
|
||||
grub_install_remove_efi_entries_by_distributor (const char *efi_distributor)
|
||||
{
|
||||
int fd;
|
||||
pid_t pid = grub_util_exec_pipe ((const char * []){ "efibootmgr", NULL }, &fd);
|
||||
char *line = NULL;
|
||||
size_t len = 0;
|
||||
+ int rc;
|
||||
|
||||
if (!pid)
|
||||
{
|
||||
grub_util_warn (_("Unable to open stream from %s: %s"),
|
||||
"efibootmgr", strerror (errno));
|
||||
- return;
|
||||
+ return errno;
|
||||
}
|
||||
|
||||
FILE *fp = fdopen (fd, "r");
|
||||
@@ -98,7 +99,7 @@ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor)
|
||||
{
|
||||
grub_util_warn (_("Unable to open stream from %s: %s"),
|
||||
"efibootmgr", strerror (errno));
|
||||
- return;
|
||||
+ return errno;
|
||||
}
|
||||
|
||||
line = xmalloc (80);
|
||||
@@ -119,23 +120,25 @@ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor)
|
||||
bootnum = line + sizeof ("Boot") - 1;
|
||||
bootnum[4] = '\0';
|
||||
if (!verbosity)
|
||||
- grub_util_exec ((const char * []){ "efibootmgr", "-q",
|
||||
+ rc = grub_util_exec ((const char * []){ "efibootmgr", "-q",
|
||||
"-b", bootnum, "-B", NULL });
|
||||
else
|
||||
- grub_util_exec ((const char * []){ "efibootmgr",
|
||||
+ rc = grub_util_exec ((const char * []){ "efibootmgr",
|
||||
"-b", bootnum, "-B", NULL });
|
||||
}
|
||||
|
||||
free (line);
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
-void
|
||||
+int
|
||||
grub_install_register_efi (grub_device_t efidir_grub_dev,
|
||||
const char *efifile_path,
|
||||
const char *efi_distributor)
|
||||
{
|
||||
const char * efidir_disk;
|
||||
int efidir_part;
|
||||
+ int ret;
|
||||
efidir_disk = grub_util_biosdisk_get_osdev (efidir_grub_dev->disk);
|
||||
efidir_part = efidir_grub_dev->disk->partition ? efidir_grub_dev->disk->partition->number + 1 : 1;
|
||||
|
||||
@@ -151,23 +154,26 @@ grub_install_register_efi (grub_device_t efidir_grub_dev,
|
||||
grub_util_exec ((const char * []){ "modprobe", "-q", "efivars", NULL });
|
||||
#endif
|
||||
/* Delete old entries from the same distributor. */
|
||||
- grub_install_remove_efi_entries_by_distributor (efi_distributor);
|
||||
+ ret = grub_install_remove_efi_entries_by_distributor (efi_distributor);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
|
||||
char *efidir_part_str = xasprintf ("%d", efidir_part);
|
||||
|
||||
if (!verbosity)
|
||||
- grub_util_exec ((const char * []){ "efibootmgr", "-q",
|
||||
+ ret = grub_util_exec ((const char * []){ "efibootmgr", "-q",
|
||||
"-c", "-d", efidir_disk,
|
||||
"-p", efidir_part_str, "-w",
|
||||
"-L", efi_distributor, "-l",
|
||||
efifile_path, NULL });
|
||||
else
|
||||
- grub_util_exec ((const char * []){ "efibootmgr",
|
||||
+ ret = grub_util_exec ((const char * []){ "efibootmgr",
|
||||
"-c", "-d", efidir_disk,
|
||||
"-p", efidir_part_str, "-w",
|
||||
"-L", efi_distributor, "-l",
|
||||
efifile_path, NULL });
|
||||
free (efidir_part_str);
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 5e4cdfd2b52..690f180c5f6 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -1848,9 +1848,13 @@ main (int argc, char *argv[])
|
||||
if (!removable && update_nvram)
|
||||
{
|
||||
/* Try to make this image bootable using the EFI Boot Manager, if available. */
|
||||
- grub_install_register_efi (efidir_grub_dev,
|
||||
- "\\System\\Library\\CoreServices",
|
||||
- efi_distributor);
|
||||
+ int ret;
|
||||
+ ret = grub_install_register_efi (efidir_grub_dev,
|
||||
+ "\\System\\Library\\CoreServices",
|
||||
+ efi_distributor);
|
||||
+ if (ret)
|
||||
+ grub_util_error (_("efibootmgr failed to register the boot entry: %s"),
|
||||
+ strerror (ret));
|
||||
}
|
||||
|
||||
grub_device_close (ins_dev);
|
||||
@@ -1871,6 +1875,7 @@ main (int argc, char *argv[])
|
||||
{
|
||||
char * efifile_path;
|
||||
char * part;
|
||||
+ int ret;
|
||||
|
||||
/* Try to make this image bootable using the EFI Boot Manager, if available. */
|
||||
if (!efi_distributor || efi_distributor[0] == '\0')
|
||||
@@ -1887,8 +1892,11 @@ main (int argc, char *argv[])
|
||||
efidir_grub_dev->disk->name,
|
||||
(part ? ",": ""), (part ? : ""));
|
||||
grub_free (part);
|
||||
- grub_install_register_efi (efidir_grub_dev,
|
||||
- efifile_path, efi_distributor);
|
||||
+ ret = grub_install_register_efi (efidir_grub_dev,
|
||||
+ efifile_path, efi_distributor);
|
||||
+ if (ret)
|
||||
+ grub_util_error (_("efibootmgr failed to register the boot entry: %s"),
|
||||
+ strerror (ret));
|
||||
}
|
||||
break;
|
||||
|
||||
diff --git a/include/grub/util/install.h b/include/grub/util/install.h
|
||||
index 5910b0c09bc..0dba8b67f93 100644
|
||||
--- a/include/grub/util/install.h
|
||||
+++ b/include/grub/util/install.h
|
||||
@@ -210,7 +210,7 @@ grub_install_create_envblk_file (const char *name);
|
||||
const char *
|
||||
grub_install_get_default_x86_platform (void);
|
||||
|
||||
-void
|
||||
+int
|
||||
grub_install_register_efi (grub_device_t efidir_grub_dev,
|
||||
const char *efifile_path,
|
||||
const char *efi_distributor);
|
70
0100-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch
Normal file
70
0100-x86-64-Treat-R_X86_64_PLT32-as-R_X86_64_PC32.patch
Normal file
@ -0,0 +1,70 @@
|
||||
From 842c390469e2c2e10b5aa36700324cd3bde25875 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Sat, 17 Feb 2018 06:47:28 -0800
|
||||
Subject: [PATCH] x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32
|
||||
|
||||
Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a:
|
||||
|
||||
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
|
||||
|
||||
x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for
|
||||
32-bit PC-relative branches. Grub2 should treat R_X86_64_PLT32 as
|
||||
R_X86_64_PC32.
|
||||
|
||||
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/efiemu/i386/loadcore64.c | 1 +
|
||||
grub-core/kern/x86_64/dl.c | 1 +
|
||||
util/grub-mkimagexx.c | 1 +
|
||||
util/grub-module-verifier.c | 1 +
|
||||
4 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/grub-core/efiemu/i386/loadcore64.c b/grub-core/efiemu/i386/loadcore64.c
|
||||
index e49d0b6ff17..18facf47fd7 100644
|
||||
--- a/grub-core/efiemu/i386/loadcore64.c
|
||||
+++ b/grub-core/efiemu/i386/loadcore64.c
|
||||
@@ -98,6 +98,7 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs,
|
||||
break;
|
||||
|
||||
case R_X86_64_PC32:
|
||||
+ case R_X86_64_PLT32:
|
||||
err = grub_efiemu_write_value (addr,
|
||||
*addr32 + rel->r_addend
|
||||
+ sym.off
|
||||
diff --git a/grub-core/kern/x86_64/dl.c b/grub-core/kern/x86_64/dl.c
|
||||
index 44069067312..3a73e6e6ce2 100644
|
||||
--- a/grub-core/kern/x86_64/dl.c
|
||||
+++ b/grub-core/kern/x86_64/dl.c
|
||||
@@ -70,6 +70,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
|
||||
break;
|
||||
|
||||
case R_X86_64_PC32:
|
||||
+ case R_X86_64_PLT32:
|
||||
{
|
||||
grub_int64_t value;
|
||||
value = ((grub_int32_t) *addr32) + rel->r_addend + sym->st_value -
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index a2bb05439f0..39d7efb914a 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -841,6 +841,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
break;
|
||||
|
||||
case R_X86_64_PC32:
|
||||
+ case R_X86_64_PLT32:
|
||||
{
|
||||
grub_uint32_t *t32 = (grub_uint32_t *) target;
|
||||
*t32 = grub_host_to_target64 (grub_target_to_host32 (*t32)
|
||||
diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c
|
||||
index 9179285a5ff..a79271f6631 100644
|
||||
--- a/util/grub-module-verifier.c
|
||||
+++ b/util/grub-module-verifier.c
|
||||
@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = {
|
||||
-1
|
||||
}, (int[]){
|
||||
R_X86_64_PC32,
|
||||
+ R_X86_64_PLT32,
|
||||
-1
|
||||
}
|
||||
},
|
133
0101-chainloader-Fix-wrong-break-condition-must-be-AND-no.patch
Normal file
133
0101-chainloader-Fix-wrong-break-condition-must-be-AND-no.patch
Normal file
@ -0,0 +1,133 @@
|
||||
From ae2a2745185c08d194775f28588f58ac90ae4351 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Date: Fri, 23 Feb 2018 22:32:55 +0100
|
||||
Subject: [PATCH] chainloader: Fix wrong break condition (must be AND not, OR)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The definition of bpb's num_total_sectors_16 and num_total_sectors_32
|
||||
is that either the 16-bit field is non-zero and is used (in which case
|
||||
eg mkfs.fat sets the 32-bit field to zero), or it is zero and the
|
||||
32-bit field is used. Therefore, a BPB is invalid only if *both*
|
||||
fields are zero; having one field as zero and the other as non-zero is
|
||||
the case to be expected. (Indeed, according to Microsoft's specification
|
||||
one of the fields *must* be zero, and the other non-zero.)
|
||||
|
||||
This affects all users of grub_chainloader_patch_bpb which are in
|
||||
chainloader.c, freedos.c, and ntldr.c
|
||||
|
||||
Some descriptions of the semantics of these two fields:
|
||||
|
||||
https://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html
|
||||
|
||||
The old 2-byte fields "total number of sectors" and "number of
|
||||
sectors per FAT" are now zero; this information is now found in
|
||||
the new 4-byte fields.
|
||||
|
||||
(Here given in the FAT32 EBPB section but the total sectors 16/32 bit
|
||||
fields semantic is true of FAT12 and FAT16 too.)
|
||||
|
||||
https://wiki.osdev.org/FAT#BPB_.28BIOS_Parameter_Block.29
|
||||
|
||||
19 | 2 | The total sectors in the logical volume. If this value is 0,
|
||||
it means there are more than 65535 sectors in the volume, and the actual
|
||||
count is stored in "Large Sectors (bytes 32-35).
|
||||
|
||||
32 | 4 | Large amount of sector on media. This field is set if there
|
||||
are more than 65535 sectors in the volume.
|
||||
|
||||
(Doesn't specify what the "large" field is set to when unused, but as
|
||||
mentioned mkfs.fat sets it to zero then.)
|
||||
|
||||
https://technet.microsoft.com/en-us/library/cc976796.aspx
|
||||
|
||||
0x13 | WORD | 0x0000 |
|
||||
Small Sectors . The number of sectors on the volume represented in 16
|
||||
bits (< 65,536). For volumes larger than 65,536 sectors, this field
|
||||
has a value of zero and the Large Sectors field is used instead.
|
||||
|
||||
0x20 | DWORD | 0x01F03E00 |
|
||||
Large Sectors . If the value of the Small Sectors field is zero, this
|
||||
field contains the total number of sectors in the FAT16 volume. If the
|
||||
value of the Small Sectors field is not zero, the value of this field
|
||||
is zero.
|
||||
|
||||
https://staff.washington.edu/dittrich/misc/fatgen103.pdf page 10
|
||||
|
||||
BPB_TotSec16 | 19 | 2 |
|
||||
This field is the old 16-bit total count of sectors on the volume.
|
||||
This count includes the count of all sectors in all four regions of the
|
||||
volume. This field can be 0; if it is 0, then BPB_TotSec32 must be
|
||||
non-zero. For FAT32 volumes, this field must be 0. For FAT12 and
|
||||
FAT16 volumes, this field contains the sector count, and
|
||||
BPB_TotSec32 is 0 if the total sector count “fits” (is less than
|
||||
0x10000).
|
||||
|
||||
BPB_TotSec32 | 32 | 4 |
|
||||
This field is the new 32-bit total count of sectors on the volume.
|
||||
This count includes the count of all sectors in all four regions of the
|
||||
volume. This field can be 0; if it is 0, then BPB_TotSec16 must be
|
||||
non-zero. For FAT32 volumes, this field must be non-zero. For
|
||||
FAT12/FAT16 volumes, this field contains the sector count if
|
||||
BPB_TotSec16 is 0 (count is greater than or equal to 0x10000).
|
||||
|
||||
(This specifies that an unused BPB_TotSec32 field is set to zero.)
|
||||
|
||||
By the way fix offsets in include/grub/fat.h.
|
||||
|
||||
Tested with lDebug booted in qemu via grub2's
|
||||
FreeDOS direct loading support, refer to
|
||||
https://bitbucket.org/ecm/ldosboot + https://bitbucket.org/ecm/ldebug
|
||||
|
||||
Signed-off-by: C. Masloch <pushbx@38.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/i386/pc/chainloader.c | 2 +-
|
||||
include/grub/fat.h | 17 ++++++-----------
|
||||
2 files changed, 7 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/pc/chainloader.c b/grub-core/loader/i386/pc/chainloader.c
|
||||
index c79c4fe0fc9..18220b7aaab 100644
|
||||
--- a/grub-core/loader/i386/pc/chainloader.c
|
||||
+++ b/grub-core/loader/i386/pc/chainloader.c
|
||||
@@ -117,7 +117,7 @@ grub_chainloader_patch_bpb (void *bs, grub_device_t dev, grub_uint8_t dl)
|
||||
|
||||
if (bpb->num_reserved_sectors == 0)
|
||||
break;
|
||||
- if (bpb->num_total_sectors_16 == 0 || bpb->num_total_sectors_32 == 0)
|
||||
+ if (bpb->num_total_sectors_16 == 0 && bpb->num_total_sectors_32 == 0)
|
||||
break;
|
||||
|
||||
if (bpb->num_fats == 0)
|
||||
diff --git a/include/grub/fat.h b/include/grub/fat.h
|
||||
index 4a5aab79346..8d7e4a1e54d 100644
|
||||
--- a/include/grub/fat.h
|
||||
+++ b/include/grub/fat.h
|
||||
@@ -28,20 +28,15 @@ struct grub_fat_bpb
|
||||
grub_uint16_t bytes_per_sector;
|
||||
grub_uint8_t sectors_per_cluster;
|
||||
grub_uint16_t num_reserved_sectors;
|
||||
- grub_uint8_t num_fats;
|
||||
- /* 0x10 */
|
||||
+ grub_uint8_t num_fats; /* 0x10 */
|
||||
grub_uint16_t num_root_entries;
|
||||
grub_uint16_t num_total_sectors_16;
|
||||
- grub_uint8_t media;
|
||||
- /*0 x15 */
|
||||
+ grub_uint8_t media; /* 0x15 */
|
||||
grub_uint16_t sectors_per_fat_16;
|
||||
- grub_uint16_t sectors_per_track;
|
||||
- /*0 x19 */
|
||||
- grub_uint16_t num_heads;
|
||||
- /*0 x1b */
|
||||
- grub_uint32_t num_hidden_sectors;
|
||||
- /* 0x1f */
|
||||
- grub_uint32_t num_total_sectors_32;
|
||||
+ grub_uint16_t sectors_per_track; /* 0x18 */
|
||||
+ grub_uint16_t num_heads; /* 0x1A */
|
||||
+ grub_uint32_t num_hidden_sectors; /* 0x1C */
|
||||
+ grub_uint32_t num_total_sectors_32; /* 0x20 */
|
||||
union
|
||||
{
|
||||
struct
|
85
0102-ieee1275-add-nvme-support-within-ofpath.patch
Normal file
85
0102-ieee1275-add-nvme-support-within-ofpath.patch
Normal file
@ -0,0 +1,85 @@
|
||||
From 2391d579094cfab65a0fd89a3c617cb3a33fb715 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Tue, 20 Feb 2018 09:57:14 -0800
|
||||
Subject: [PATCH] ieee1275: add nvme support within ofpath
|
||||
|
||||
Add NVMe support within ofpath.
|
||||
|
||||
The Open Firmware text representation for a NVMe device contains the
|
||||
Namespace ID. An invalid namespace ID is one whose value is zero or whose
|
||||
value is greater than the value reported by the Number of Namespaces (NN)
|
||||
field in the Identify Controller data structure. At the moment only a
|
||||
single Namespace is supported, therefore the value is currently hard coded
|
||||
to one.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/linux/ofpath.c | 47 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 47 insertions(+)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
|
||||
index 8d7d6837f26..4308fceda35 100644
|
||||
--- a/grub-core/osdep/linux/ofpath.c
|
||||
+++ b/grub-core/osdep/linux/ofpath.c
|
||||
@@ -350,6 +350,50 @@ of_path_of_ide(const char *sys_devname __attribute__((unused)), const char *devi
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static char *
|
||||
+of_path_of_nvme(const char *sys_devname __attribute__((unused)),
|
||||
+ const char *device,
|
||||
+ const char *devnode __attribute__((unused)),
|
||||
+ const char *devicenode)
|
||||
+{
|
||||
+ char *sysfs_path, *of_path, disk[MAX_DISK_CAT];
|
||||
+ const char *digit_string, *part_end;
|
||||
+
|
||||
+ digit_string = trailing_digits (device);
|
||||
+ part_end = devicenode + strlen (devicenode) - 1;
|
||||
+
|
||||
+ if ((digit_string != '\0') && (*part_end == 'p'))
|
||||
+ {
|
||||
+ /* We have a partition number, strip it off. */
|
||||
+ int part;
|
||||
+ char *nvmedev, *end;
|
||||
+
|
||||
+ nvmedev = strdup (devicenode);
|
||||
+
|
||||
+ if (!nvmedev)
|
||||
+ return NULL;
|
||||
+
|
||||
+ end = nvmedev + strlen (nvmedev) - 1;
|
||||
+ /* Remove the p. */
|
||||
+ *end = '\0';
|
||||
+ sscanf (digit_string, "%d", &part);
|
||||
+ snprintf (disk, sizeof (disk), "/disk@1:%c", 'a' + (part - 1));
|
||||
+ sysfs_path = block_device_get_sysfs_path_and_link (nvmedev);
|
||||
+ free (nvmedev);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ /* We do not have the parition. */
|
||||
+ snprintf (disk, sizeof (disk), "/disk@1");
|
||||
+ sysfs_path = block_device_get_sysfs_path_and_link (device);
|
||||
+ }
|
||||
+
|
||||
+ of_path = find_obppath (sysfs_path);
|
||||
+ free (sysfs_path);
|
||||
+ strcat (of_path, disk);
|
||||
+ return of_path;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
vendor_is_ATA(const char *path)
|
||||
{
|
||||
@@ -681,6 +725,9 @@ grub_util_devname_to_ofpath (const char *sys_devname)
|
||||
/* All the models I've seen have a devalias "floppy".
|
||||
New models have no floppy at all. */
|
||||
ofpath = xstrdup ("floppy");
|
||||
+ else if (device[0] == 'n' && device[1] == 'v' && device[2] == 'm'
|
||||
+ && device[3] == 'e')
|
||||
+ ofpath = of_path_of_nvme (name_buf, device, devnode, devicenode);
|
||||
else
|
||||
{
|
||||
grub_util_warn (_("unknown device type %s"), device);
|
1373
0103-libgcrypt-Import-replacement-CRC-operations.patch
Normal file
1373
0103-libgcrypt-Import-replacement-CRC-operations.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,87 @@
|
||||
From 083c6e2455dcd4aafb6062d89fd6029dd3adddb6 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:49 +0000
|
||||
Subject: [PATCH] arm64/efi: move EFI_PAGE definitions to efi/memory.h
|
||||
|
||||
The EFI page definitions and macros are generic and should not be confined
|
||||
to arm64 headers - so move to efi/memory.h.
|
||||
Also add EFI_PAGE_SIZE macro.
|
||||
|
||||
Update loader sources to reflect new header location.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/arm64/linux.c | 1 +
|
||||
grub-core/loader/arm64/xen_boot.c | 1 +
|
||||
grub-core/loader/efi/fdt.c | 1 +
|
||||
include/grub/efi/fdtload.h | 3 ---
|
||||
include/grub/efi/memory.h | 7 +++++++
|
||||
5 files changed, 10 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
|
||||
index 746edd10415..ca01a234961 100644
|
||||
--- a/grub-core/loader/arm64/linux.c
|
||||
+++ b/grub-core/loader/arm64/linux.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <grub/cpu/linux.h>
|
||||
#include <grub/efi/efi.h>
|
||||
#include <grub/efi/fdtload.h>
|
||||
+#include <grub/efi/memory.h>
|
||||
#include <grub/efi/pe32.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/lib/cmdline.h>
|
||||
diff --git a/grub-core/loader/arm64/xen_boot.c b/grub-core/loader/arm64/xen_boot.c
|
||||
index 6780b1f0c4a..0a40e16be33 100644
|
||||
--- a/grub-core/loader/arm64/xen_boot.c
|
||||
+++ b/grub-core/loader/arm64/xen_boot.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <grub/cpu/linux.h>
|
||||
#include <grub/efi/efi.h>
|
||||
#include <grub/efi/fdtload.h>
|
||||
+#include <grub/efi/memory.h>
|
||||
#include <grub/efi/pe32.h> /* required by struct xen_hypervisor_header */
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/lib/cmdline.h>
|
||||
diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c
|
||||
index 17212c38d0b..c0c6800f79e 100644
|
||||
--- a/grub-core/loader/efi/fdt.c
|
||||
+++ b/grub-core/loader/efi/fdt.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <grub/file.h>
|
||||
#include <grub/efi/efi.h>
|
||||
#include <grub/efi/fdtload.h>
|
||||
+#include <grub/efi/memory.h>
|
||||
|
||||
static void *loaded_fdt;
|
||||
static void *fdt;
|
||||
diff --git a/include/grub/efi/fdtload.h b/include/grub/efi/fdtload.h
|
||||
index 7b9ddba916d..713c9424d0a 100644
|
||||
--- a/include/grub/efi/fdtload.h
|
||||
+++ b/include/grub/efi/fdtload.h
|
||||
@@ -29,7 +29,4 @@ grub_fdt_unload (void);
|
||||
grub_err_t
|
||||
grub_fdt_install (void);
|
||||
|
||||
-#define GRUB_EFI_PAGE_SHIFT 12
|
||||
-#define GRUB_EFI_BYTES_TO_PAGES(bytes) (((bytes) + 0xfff) >> GRUB_EFI_PAGE_SHIFT)
|
||||
-
|
||||
#endif
|
||||
diff --git a/include/grub/efi/memory.h b/include/grub/efi/memory.h
|
||||
index 20526b14676..08fe6227783 100644
|
||||
--- a/include/grub/efi/memory.h
|
||||
+++ b/include/grub/efi/memory.h
|
||||
@@ -22,6 +22,13 @@
|
||||
#include <grub/err.h>
|
||||
#include <grub/types.h>
|
||||
|
||||
+/* The term "page" in UEFI refers only to a 4 KiB-aligned 4 KiB size region of
|
||||
+ memory. It is not concerned with underlying translation management concepts,
|
||||
+ but only used as the granule for memory allocations. */
|
||||
+#define GRUB_EFI_PAGE_SHIFT 12
|
||||
+#define GRUB_EFI_PAGE_SIZE (1 << GRUB_EFI_PAGE_SHIFT)
|
||||
+#define GRUB_EFI_BYTES_TO_PAGES(bytes) (((bytes) + 0xfff) >> GRUB_EFI_PAGE_SHIFT)
|
||||
+
|
||||
#define GRUB_MMAP_REGISTER_BY_FIRMWARE 1
|
||||
|
||||
grub_err_t grub_machine_mmap_register (grub_uint64_t start, grub_uint64_t size,
|
@ -0,0 +1,80 @@
|
||||
From 8776e5a942582adaadc67865ed74cdd199e56a16 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:50 +0000
|
||||
Subject: [PATCH] Make arch-specific linux.h include guards architecture unique
|
||||
|
||||
Replace uses of GRUB_LINUX_MACHINE_HEADER and GRUB_LINUX_CPU_HEADER
|
||||
with GRUB_<arch>_LINUX_HEADER include guards to prevent issues when
|
||||
including more than one of them.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
include/grub/arm/linux.h | 6 +++---
|
||||
include/grub/arm64/linux.h | 6 +++---
|
||||
include/grub/i386/linux.h | 6 +++---
|
||||
3 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/include/grub/arm/linux.h b/include/grub/arm/linux.h
|
||||
index f217f8281ad..3706c46c66f 100644
|
||||
--- a/include/grub/arm/linux.h
|
||||
+++ b/include/grub/arm/linux.h
|
||||
@@ -17,8 +17,8 @@
|
||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#ifndef GRUB_LINUX_CPU_HEADER
|
||||
-#define GRUB_LINUX_CPU_HEADER 1
|
||||
+#ifndef GRUB_ARM_LINUX_HEADER
|
||||
+#define GRUB_ARM_LINUX_HEADER 1
|
||||
|
||||
#define LINUX_ZIMAGE_OFFSET 0x24
|
||||
#define LINUX_ZIMAGE_MAGIC 0x016f2818
|
||||
@@ -66,4 +66,4 @@ grub_arm_firmware_get_machine_type (void)
|
||||
|
||||
#define FDT_ADDITIONAL_ENTRIES_SIZE 0x300
|
||||
|
||||
-#endif /* ! GRUB_LINUX_CPU_HEADER */
|
||||
+#endif /* ! GRUB_ARM_LINUX_HEADER */
|
||||
diff --git a/include/grub/arm64/linux.h b/include/grub/arm64/linux.h
|
||||
index a981df5d15f..a8edf50dc2c 100644
|
||||
--- a/include/grub/arm64/linux.h
|
||||
+++ b/include/grub/arm64/linux.h
|
||||
@@ -16,8 +16,8 @@
|
||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#ifndef GRUB_LINUX_CPU_HEADER
|
||||
-#define GRUB_LINUX_CPU_HEADER 1
|
||||
+#ifndef GRUB_ARM64_LINUX_HEADER
|
||||
+#define GRUB_ARM64_LINUX_HEADER 1
|
||||
|
||||
#include <grub/efi/efi.h>
|
||||
|
||||
@@ -43,4 +43,4 @@ grub_err_t grub_arm64_uefi_check_image (struct grub_arm64_linux_kernel_header
|
||||
grub_err_t grub_arm64_uefi_boot_image (grub_addr_t addr, grub_size_t size,
|
||||
char *args);
|
||||
|
||||
-#endif /* ! GRUB_LINUX_CPU_HEADER */
|
||||
+#endif /* ! GRUB_ARM64_LINUX_HEADER */
|
||||
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
|
||||
index da0ca3b83cd..2ff1621a429 100644
|
||||
--- a/include/grub/i386/linux.h
|
||||
+++ b/include/grub/i386/linux.h
|
||||
@@ -16,8 +16,8 @@
|
||||
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#ifndef GRUB_LINUX_MACHINE_HEADER
|
||||
-#define GRUB_LINUX_MACHINE_HEADER 1
|
||||
+#ifndef GRUB_I386_LINUX_HEADER
|
||||
+#define GRUB_I386_LINUX_HEADER 1
|
||||
|
||||
#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */
|
||||
#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4
|
||||
@@ -312,4 +312,4 @@ struct linux_kernel_params
|
||||
} GRUB_PACKED;
|
||||
#endif /* ! ASM_FILE */
|
||||
|
||||
-#endif /* ! GRUB_LINUX_MACHINE_HEADER */
|
||||
+#endif /* ! GRUB_I386_LINUX_HEADER */
|
110
0106-make-GRUB_LINUX_MAGIC_SIGNATURE-architecture-specifi.patch
Normal file
110
0106-make-GRUB_LINUX_MAGIC_SIGNATURE-architecture-specifi.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From 3245f02d9d7274e942426541cf73dc73e7298f02 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:51 +0000
|
||||
Subject: [PATCH] make GRUB_LINUX_MAGIC_SIGNATURE architecture-specific
|
||||
|
||||
Rename GRUB_LINUX_MAGIC_SIGNATURE GRUB_LINUX_I386_MAGIC_SIGNATURE,
|
||||
to be usable in code that supports more than one image type.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/commands/file.c | 4 ++--
|
||||
grub-core/loader/i386/linux.c | 2 +-
|
||||
grub-core/loader/i386/pc/linux.c | 6 +++---
|
||||
grub-core/loader/i386/xen_file.c | 2 +-
|
||||
include/grub/i386/linux.h | 2 +-
|
||||
5 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/file.c b/grub-core/commands/file.c
|
||||
index 12fba99e06a..474666d3a98 100644
|
||||
--- a/grub-core/commands/file.c
|
||||
+++ b/grub-core/commands/file.c
|
||||
@@ -508,7 +508,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
|
||||
/* FIXME: some really old kernels (< 1.3.73) will fail this. */
|
||||
if (lh.header !=
|
||||
- grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
||||
break;
|
||||
|
||||
@@ -521,7 +521,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
/* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
|
||||
still not support 32-bit boot. */
|
||||
if (lh.header !=
|
||||
- grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0203)
|
||||
break;
|
||||
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index 083f9417cb6..9bd5afb6561 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -721,7 +721,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
/* FIXME: 2.03 is not always good enough (Linux 2.4 can be 2.03 and
|
||||
still not support 32-bit boot. */
|
||||
- if (lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ if (lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0203)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_OS, "version too old for 32-bit boot"
|
||||
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
|
||||
index a293b17aa10..31a68764465 100644
|
||||
--- a/grub-core/loader/i386/pc/linux.c
|
||||
+++ b/grub-core/loader/i386/pc/linux.c
|
||||
@@ -169,7 +169,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
maximal_cmdline_size = 256;
|
||||
|
||||
- if (lh.header == grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ if (lh.header == grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
&& grub_le_to_cpu16 (lh.version) >= 0x0200)
|
||||
{
|
||||
grub_linux_is_bzimage = (lh.loadflags & GRUB_LINUX_FLAG_BIG_KERNEL);
|
||||
@@ -322,7 +322,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- if (lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ if (lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0200)
|
||||
/* Clear the heap space. */
|
||||
grub_memset (grub_linux_real_chunk
|
||||
@@ -407,7 +407,7 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
lh = (struct linux_kernel_header *) grub_linux_real_chunk;
|
||||
|
||||
- if (!(lh->header == grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ if (!(lh->header == grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
&& grub_le_to_cpu16 (lh->version) >= 0x0200))
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_OS, "the kernel is too old for initrd");
|
||||
diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c
|
||||
index 99fad4cadae..6e76e16aa11 100644
|
||||
--- a/grub-core/loader/i386/xen_file.c
|
||||
+++ b/grub-core/loader/i386/xen_file.c
|
||||
@@ -43,7 +43,7 @@ grub_xen_file (grub_file_t file)
|
||||
goto fail;
|
||||
|
||||
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55)
|
||||
- || lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_MAGIC_SIGNATURE)
|
||||
+ || lh.header != grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
|| grub_le_to_cpu16 (lh.version) < 0x0208)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_OS, "version too old for xen boot");
|
||||
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
|
||||
index 2ff1621a429..3ff432be9ad 100644
|
||||
--- a/include/grub/i386/linux.h
|
||||
+++ b/include/grub/i386/linux.h
|
||||
@@ -19,7 +19,7 @@
|
||||
#ifndef GRUB_I386_LINUX_HEADER
|
||||
#define GRUB_I386_LINUX_HEADER 1
|
||||
|
||||
-#define GRUB_LINUX_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */
|
||||
+#define GRUB_LINUX_I386_MAGIC_SIGNATURE 0x53726448 /* "HdrS" */
|
||||
#define GRUB_LINUX_DEFAULT_SETUP_SECTS 4
|
||||
#define GRUB_LINUX_INITRD_MAX_ADDRESS 0x37FFFFFF
|
||||
#define GRUB_LINUX_MAX_SETUP_SECTS 64
|
100
0107-i386-make-struct-linux_kernel_header-architecture-sp.patch
Normal file
100
0107-i386-make-struct-linux_kernel_header-architecture-sp.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From 7d36709d5e769eb49b41cca709bd64336b47ab4f Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:52 +0000
|
||||
Subject: [PATCH] i386: make struct linux_kernel_header architecture specific
|
||||
|
||||
struct linux_kernel_header -> struct linux_i386_kernel_header
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/commands/file.c | 2 +-
|
||||
grub-core/loader/i386/linux.c | 2 +-
|
||||
grub-core/loader/i386/pc/linux.c | 6 +++---
|
||||
grub-core/loader/i386/xen_file.c | 2 +-
|
||||
include/grub/i386/linux.h | 2 +-
|
||||
5 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/file.c b/grub-core/commands/file.c
|
||||
index 474666d3a98..63c84499bab 100644
|
||||
--- a/grub-core/commands/file.c
|
||||
+++ b/grub-core/commands/file.c
|
||||
@@ -497,7 +497,7 @@ grub_cmd_file (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
case IS_X86_LINUX32:
|
||||
case IS_X86_LINUX:
|
||||
{
|
||||
- struct linux_kernel_header lh;
|
||||
+ struct linux_i386_kernel_header lh;
|
||||
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||
break;
|
||||
if (lh.boot_flag != grub_cpu_to_le16_compile_time (0xaa55))
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index 9bd5afb6561..44301e12659 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -678,7 +678,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
int argc, char *argv[])
|
||||
{
|
||||
grub_file_t file = 0;
|
||||
- struct linux_kernel_header lh;
|
||||
+ struct linux_i386_kernel_header lh;
|
||||
grub_uint8_t setup_sects;
|
||||
grub_size_t real_size, prot_size, prot_file_size;
|
||||
grub_ssize_t len;
|
||||
diff --git a/grub-core/loader/i386/pc/linux.c b/grub-core/loader/i386/pc/linux.c
|
||||
index 31a68764465..b69cb7a3a7f 100644
|
||||
--- a/grub-core/loader/i386/pc/linux.c
|
||||
+++ b/grub-core/loader/i386/pc/linux.c
|
||||
@@ -121,7 +121,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
int argc, char *argv[])
|
||||
{
|
||||
grub_file_t file = 0;
|
||||
- struct linux_kernel_header lh;
|
||||
+ struct linux_i386_kernel_header lh;
|
||||
grub_uint8_t setup_sects;
|
||||
grub_size_t real_size;
|
||||
grub_ssize_t len;
|
||||
@@ -387,7 +387,7 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
||||
{
|
||||
grub_size_t size = 0;
|
||||
grub_addr_t addr_max, addr_min;
|
||||
- struct linux_kernel_header *lh;
|
||||
+ struct linux_i386_kernel_header *lh;
|
||||
grub_uint8_t *initrd_chunk;
|
||||
grub_addr_t initrd_addr;
|
||||
grub_err_t err;
|
||||
@@ -405,7 +405,7 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- lh = (struct linux_kernel_header *) grub_linux_real_chunk;
|
||||
+ lh = (struct linux_i386_kernel_header *) grub_linux_real_chunk;
|
||||
|
||||
if (!(lh->header == grub_cpu_to_le32_compile_time (GRUB_LINUX_I386_MAGIC_SIGNATURE)
|
||||
&& grub_le_to_cpu16 (lh->version) >= 0x0200))
|
||||
diff --git a/grub-core/loader/i386/xen_file.c b/grub-core/loader/i386/xen_file.c
|
||||
index 6e76e16aa11..77a93e7b228 100644
|
||||
--- a/grub-core/loader/i386/xen_file.c
|
||||
+++ b/grub-core/loader/i386/xen_file.c
|
||||
@@ -26,7 +26,7 @@ grub_elf_t
|
||||
grub_xen_file (grub_file_t file)
|
||||
{
|
||||
grub_elf_t elf;
|
||||
- struct linux_kernel_header lh;
|
||||
+ struct linux_i386_kernel_header lh;
|
||||
grub_file_t off_file;
|
||||
grub_uint32_t payload_offset, payload_length;
|
||||
grub_uint8_t magic[6];
|
||||
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
|
||||
index 3ff432be9ad..0bd75881708 100644
|
||||
--- a/include/grub/i386/linux.h
|
||||
+++ b/include/grub/i386/linux.h
|
||||
@@ -85,7 +85,7 @@ enum
|
||||
};
|
||||
|
||||
/* For the Linux/i386 boot protocol version 2.10. */
|
||||
-struct linux_kernel_header
|
||||
+struct linux_i386_kernel_header
|
||||
{
|
||||
grub_uint8_t code1[0x0020];
|
||||
grub_uint16_t cl_magic; /* Magic number 0xA33F */
|
@ -0,0 +1,82 @@
|
||||
From ff1cf2548a3f33da19278829687d074ad746dd0a Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:53 +0000
|
||||
Subject: [PATCH] arm64: align linux kernel header struct naming with i386
|
||||
|
||||
Rename struct grub_arm64_linux_kernel_header -> linux_arm64_kernel_header.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/arm64/linux.c | 4 ++--
|
||||
grub-core/loader/arm64/xen_boot.c | 4 ++--
|
||||
include/grub/arm64/linux.h | 5 ++---
|
||||
3 files changed, 6 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
|
||||
index ca01a234961..79f25a71152 100644
|
||||
--- a/grub-core/loader/arm64/linux.c
|
||||
+++ b/grub-core/loader/arm64/linux.c
|
||||
@@ -48,7 +48,7 @@ static grub_addr_t initrd_start;
|
||||
static grub_addr_t initrd_end;
|
||||
|
||||
grub_err_t
|
||||
-grub_arm64_uefi_check_image (struct grub_arm64_linux_kernel_header * lh)
|
||||
+grub_arm64_uefi_check_image (struct linux_arm64_kernel_header * lh)
|
||||
{
|
||||
if (lh->magic != GRUB_ARM64_LINUX_MAGIC)
|
||||
return grub_error(GRUB_ERR_BAD_OS, "invalid magic number");
|
||||
@@ -249,7 +249,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
int argc, char *argv[])
|
||||
{
|
||||
grub_file_t file = 0;
|
||||
- struct grub_arm64_linux_kernel_header lh;
|
||||
+ struct linux_arm64_kernel_header lh;
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
diff --git a/grub-core/loader/arm64/xen_boot.c b/grub-core/loader/arm64/xen_boot.c
|
||||
index 0a40e16be33..258264c79e8 100644
|
||||
--- a/grub-core/loader/arm64/xen_boot.c
|
||||
+++ b/grub-core/loader/arm64/xen_boot.c
|
||||
@@ -67,7 +67,7 @@ typedef enum module_type module_type_t;
|
||||
|
||||
struct xen_hypervisor_header
|
||||
{
|
||||
- struct grub_arm64_linux_kernel_header efi_head;
|
||||
+ struct linux_arm64_kernel_header efi_head;
|
||||
|
||||
/* This is always PE\0\0. */
|
||||
grub_uint8_t signature[GRUB_PE32_SIGNATURE_SIZE];
|
||||
@@ -469,7 +469,7 @@ grub_cmd_xen_hypervisor (grub_command_t cmd __attribute__ ((unused)),
|
||||
if (grub_file_read (file, &sh, sizeof (sh)) != (long) sizeof (sh))
|
||||
goto fail;
|
||||
if (grub_arm64_uefi_check_image
|
||||
- ((struct grub_arm64_linux_kernel_header *) &sh) != GRUB_ERR_NONE)
|
||||
+ ((struct linux_arm64_kernel_header *) &sh) != GRUB_ERR_NONE)
|
||||
goto fail;
|
||||
grub_file_seek (file, 0);
|
||||
|
||||
diff --git a/include/grub/arm64/linux.h b/include/grub/arm64/linux.h
|
||||
index a8edf50dc2c..abe7e9cc3a6 100644
|
||||
--- a/include/grub/arm64/linux.h
|
||||
+++ b/include/grub/arm64/linux.h
|
||||
@@ -24,7 +24,7 @@
|
||||
#define GRUB_ARM64_LINUX_MAGIC 0x644d5241 /* 'ARM\x64' */
|
||||
|
||||
/* From linux/Documentation/arm64/booting.txt */
|
||||
-struct grub_arm64_linux_kernel_header
|
||||
+struct linux_arm64_kernel_header
|
||||
{
|
||||
grub_uint32_t code0; /* Executable code */
|
||||
grub_uint32_t code1; /* Executable code */
|
||||
@@ -38,8 +38,7 @@ struct grub_arm64_linux_kernel_header
|
||||
grub_uint32_t hdr_offset; /* Offset of PE/COFF header */
|
||||
};
|
||||
|
||||
-grub_err_t grub_arm64_uefi_check_image (struct grub_arm64_linux_kernel_header
|
||||
- *lh);
|
||||
+grub_err_t grub_arm64_uefi_check_image (struct linux_arm64_kernel_header *lh);
|
||||
grub_err_t grub_arm64_uefi_boot_image (grub_addr_t addr, grub_size_t size,
|
||||
char *args);
|
||||
|
@ -0,0 +1,40 @@
|
||||
From 7fd9722d0c5e9c5a85b782ef435c80085da308b2 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:54 +0000
|
||||
Subject: [PATCH] arm64: align linux kernel magic macro naming with i386
|
||||
|
||||
Change GRUB_ARM64_LINUX_MAGIC to GRUB_LINUX_ARM64_MAGIC_SIGNATURE.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/arm64/linux.c | 2 +-
|
||||
include/grub/arm64/linux.h | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/arm64/linux.c b/grub-core/loader/arm64/linux.c
|
||||
index 79f25a71152..ebe1e730d63 100644
|
||||
--- a/grub-core/loader/arm64/linux.c
|
||||
+++ b/grub-core/loader/arm64/linux.c
|
||||
@@ -50,7 +50,7 @@ static grub_addr_t initrd_end;
|
||||
grub_err_t
|
||||
grub_arm64_uefi_check_image (struct linux_arm64_kernel_header * lh)
|
||||
{
|
||||
- if (lh->magic != GRUB_ARM64_LINUX_MAGIC)
|
||||
+ if (lh->magic != GRUB_LINUX_ARM64_MAGIC_SIGNATURE)
|
||||
return grub_error(GRUB_ERR_BAD_OS, "invalid magic number");
|
||||
|
||||
if ((lh->code0 & 0xffff) != GRUB_PE32_MAGIC)
|
||||
diff --git a/include/grub/arm64/linux.h b/include/grub/arm64/linux.h
|
||||
index abe7e9cc3a6..b0634762450 100644
|
||||
--- a/include/grub/arm64/linux.h
|
||||
+++ b/include/grub/arm64/linux.h
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
#include <grub/efi/efi.h>
|
||||
|
||||
-#define GRUB_ARM64_LINUX_MAGIC 0x644d5241 /* 'ARM\x64' */
|
||||
+#define GRUB_LINUX_ARM64_MAGIC_SIGNATURE 0x644d5241 /* 'ARM\x64' */
|
||||
|
||||
/* From linux/Documentation/arm64/booting.txt */
|
||||
struct linux_arm64_kernel_header
|
@ -0,0 +1,79 @@
|
||||
From cda033298680b6984044563b2ef6374a725b8aac Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:55 +0000
|
||||
Subject: [PATCH] arm: switch linux loader to linux_arm_kernel_header struct
|
||||
|
||||
Use kernel header struct and magic definition to align (and coexist) with
|
||||
i386/arm64 ports.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/arm/linux.c | 11 +++++------
|
||||
include/grub/arm/linux.h | 15 ++++++++++++---
|
||||
2 files changed, 17 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
|
||||
index e64c79a9577..9f43e41bb55 100644
|
||||
--- a/grub-core/loader/arm/linux.c
|
||||
+++ b/grub-core/loader/arm/linux.c
|
||||
@@ -46,9 +46,6 @@ static const void *current_fdt;
|
||||
|
||||
typedef void (*kernel_entry_t) (int, unsigned long, void *);
|
||||
|
||||
-#define LINUX_ZIMAGE_OFFSET 0x24
|
||||
-#define LINUX_ZIMAGE_MAGIC 0x016f2818
|
||||
-
|
||||
#define LINUX_PHYS_OFFSET (0x00008000)
|
||||
#define LINUX_INITRD_PHYS_OFFSET (LINUX_PHYS_OFFSET + 0x02000000)
|
||||
#define LINUX_FDT_PHYS_OFFSET (LINUX_INITRD_PHYS_OFFSET - 0x10000)
|
||||
@@ -315,6 +312,7 @@ linux_boot (void)
|
||||
static grub_err_t
|
||||
linux_load (const char *filename, grub_file_t file)
|
||||
{
|
||||
+ struct linux_arm_kernel_header *lh;
|
||||
int size;
|
||||
|
||||
size = grub_file_size (file);
|
||||
@@ -337,9 +335,10 @@ linux_load (const char *filename, grub_file_t file)
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
- if (size > LINUX_ZIMAGE_OFFSET + 4
|
||||
- && *(grub_uint32_t *) (linux_addr + LINUX_ZIMAGE_OFFSET)
|
||||
- == LINUX_ZIMAGE_MAGIC)
|
||||
+ lh = (void *) linux_addr;
|
||||
+
|
||||
+ if ((grub_size_t) size > sizeof (*lh) &&
|
||||
+ lh->magic == GRUB_LINUX_ARM_MAGIC_SIGNATURE)
|
||||
;
|
||||
else if (size > 0x8000 && *(grub_uint32_t *) (linux_addr) == 0xea000006
|
||||
&& machine_type == GRUB_ARM_MACHINE_TYPE_RASPBERRY_PI)
|
||||
diff --git a/include/grub/arm/linux.h b/include/grub/arm/linux.h
|
||||
index 3706c46c66f..64dd3173cf7 100644
|
||||
--- a/include/grub/arm/linux.h
|
||||
+++ b/include/grub/arm/linux.h
|
||||
@@ -20,11 +20,20 @@
|
||||
#ifndef GRUB_ARM_LINUX_HEADER
|
||||
#define GRUB_ARM_LINUX_HEADER 1
|
||||
|
||||
-#define LINUX_ZIMAGE_OFFSET 0x24
|
||||
-#define LINUX_ZIMAGE_MAGIC 0x016f2818
|
||||
-
|
||||
#include "system.h"
|
||||
|
||||
+#define GRUB_LINUX_ARM_MAGIC_SIGNATURE 0x016f2818
|
||||
+
|
||||
+struct linux_arm_kernel_header {
|
||||
+ grub_uint32_t code0;
|
||||
+ grub_uint32_t reserved1[8];
|
||||
+ grub_uint32_t magic;
|
||||
+ grub_uint32_t start; /* _start */
|
||||
+ grub_uint32_t end; /* _edata */
|
||||
+ grub_uint32_t reserved2[4];
|
||||
+ grub_uint32_t hdr_offset;
|
||||
+};
|
||||
+
|
||||
#if defined GRUB_MACHINE_UBOOT
|
||||
# include <grub/uboot/uboot.h>
|
||||
# define LINUX_ADDRESS (start_of_ram + 0x8000)
|
@ -0,0 +1,39 @@
|
||||
From a244d9ebc7547f7ed373d9796a3bf186e7c035a1 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Thu, 1 Feb 2018 18:18:56 +0000
|
||||
Subject: [PATCH] arm: make linux.h safe to include for non-native builds
|
||||
|
||||
<grub/machine/loader.h> (for machine arm/efi) and
|
||||
<grub/machine/kernel.h> (for machine arm/coreboot) will not always
|
||||
resolve (and will likely not be valid to) if pulled in when building
|
||||
non-native commands, such as host tools or the "file" command.
|
||||
So explicitly include them with their expanded pathnames.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
include/grub/arm/linux.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/grub/arm/linux.h b/include/grub/arm/linux.h
|
||||
index 64dd3173cf7..cceb9c4a9cb 100644
|
||||
--- a/include/grub/arm/linux.h
|
||||
+++ b/include/grub/arm/linux.h
|
||||
@@ -43,7 +43,7 @@ struct linux_arm_kernel_header {
|
||||
# define grub_arm_firmware_get_machine_type grub_uboot_get_machine_type
|
||||
#elif defined GRUB_MACHINE_EFI
|
||||
# include <grub/efi/efi.h>
|
||||
-# include <grub/machine/loader.h>
|
||||
+# include <grub/arm/efi/loader.h>
|
||||
/* On UEFI platforms - load the images at the lowest available address not
|
||||
less than *_PHYS_OFFSET from the first available memory location. */
|
||||
# define LINUX_PHYS_OFFSET (0x00008000)
|
||||
@@ -57,7 +57,7 @@ grub_arm_firmware_get_machine_type (void)
|
||||
}
|
||||
#elif defined (GRUB_MACHINE_COREBOOT)
|
||||
#include <grub/fdtbus.h>
|
||||
-#include <grub/machine/kernel.h>
|
||||
+#include <grub/arm/coreboot/kernel.h>
|
||||
# define LINUX_ADDRESS (start_of_ram + 0x8000)
|
||||
# define LINUX_INITRD_ADDRESS (start_of_ram + 0x02000000)
|
||||
# define LINUX_FDT_ADDRESS (LINUX_INITRD_ADDRESS - 0x10000)
|
32
0112-ieee1275-fix-build-regression-in-of_path_of_nvme.patch
Normal file
32
0112-ieee1275-fix-build-regression-in-of_path_of_nvme.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 72b425b640f67ad7e6e0056a7a793bddc9997985 Mon Sep 17 00:00:00 2001
|
||||
From: Joakim Bech <joakim.bech@linaro.org>
|
||||
Date: Mon, 26 Feb 2018 09:57:34 +0100
|
||||
Subject: [PATCH] ieee1275: fix build regression in of_path_of_nvme
|
||||
|
||||
The of_path_of_nvme function (commit 2391d57, ieee1275: add nvme
|
||||
support within ofpath) introduced a build regression:
|
||||
grub-core/osdep/linux/ofpath.c:365:21: error: comparison between pointer
|
||||
and zero character constant [-Werror=pointer-compare]
|
||||
if ((digit_string != '\0') && (*part_end == 'p'))
|
||||
|
||||
Update digit_string to compare against the char instead of the pointer.
|
||||
|
||||
Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/linux/ofpath.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
|
||||
index 4308fceda35..1c30e723305 100644
|
||||
--- a/grub-core/osdep/linux/ofpath.c
|
||||
+++ b/grub-core/osdep/linux/ofpath.c
|
||||
@@ -362,7 +362,7 @@ of_path_of_nvme(const char *sys_devname __attribute__((unused)),
|
||||
digit_string = trailing_digits (device);
|
||||
part_end = devicenode + strlen (devicenode) - 1;
|
||||
|
||||
- if ((digit_string != '\0') && (*part_end == 'p'))
|
||||
+ if ((*digit_string != '\0') && (*part_end == 'p'))
|
||||
{
|
||||
/* We have a partition number, strip it off. */
|
||||
int part;
|
27
0113-aout.h-Fix-missing-include.patch
Normal file
27
0113-aout.h-Fix-missing-include.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From e1ead149efadf420fe16d2ce0b109a6982b8a5f6 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:23 -0500
|
||||
Subject: [PATCH] aout.h: Fix missing include.
|
||||
|
||||
grub_aout_load() has a grub_file_t parameter, and depending on what order
|
||||
includes land in, it's sometimes not defined. This patch explicitly adds
|
||||
file.h to aout.h so that it will always be defined.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
include/grub/aout.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/include/grub/aout.h b/include/grub/aout.h
|
||||
index 10d7dde61ec..c8c1d94eca5 100644
|
||||
--- a/include/grub/aout.h
|
||||
+++ b/include/grub/aout.h
|
||||
@@ -52,6 +52,7 @@
|
||||
#define GRUB_AOUT_HEADER 1
|
||||
|
||||
#include <grub/types.h>
|
||||
+#include <grub/file.h>
|
||||
|
||||
struct grub_aout32_header
|
||||
{
|
@ -0,0 +1,65 @@
|
||||
From 352868d1234c94393e84871072372d73cb1166fa Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:24 -0500
|
||||
Subject: [PATCH] mkimage: make it easier to run syntax checkers on
|
||||
grub-mkimagexx.c
|
||||
|
||||
This makes it so you can treat grub-mkimagexx.c as a file you can build
|
||||
directly, so syntax checkers like vim's "syntastic" plugin, which uses
|
||||
"gcc -x c -fsyntax-only" to build it, will work.
|
||||
|
||||
One still has to do whatever setup is required to make it pick the right
|
||||
include dirs, which -W options we use, etc., but this makes it so you
|
||||
can do the checking on the file you're editing, rather than on a
|
||||
different file.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimage32.c | 2 ++
|
||||
util/grub-mkimage64.c | 2 ++
|
||||
util/grub-mkimagexx.c | 9 +++++++++
|
||||
3 files changed, 13 insertions(+)
|
||||
|
||||
diff --git a/util/grub-mkimage32.c b/util/grub-mkimage32.c
|
||||
index 9b31397bc40..1f2ccccd225 100644
|
||||
--- a/util/grub-mkimage32.c
|
||||
+++ b/util/grub-mkimage32.c
|
||||
@@ -19,4 +19,6 @@
|
||||
# define ELF_ST_TYPE(val) ELF32_ST_TYPE(val)
|
||||
#define XEN_NOTE_SIZE 132
|
||||
|
||||
+#ifndef GRUB_MKIMAGEXX
|
||||
#include "grub-mkimagexx.c"
|
||||
+#endif
|
||||
diff --git a/util/grub-mkimage64.c b/util/grub-mkimage64.c
|
||||
index d8334592470..4ff72a625e0 100644
|
||||
--- a/util/grub-mkimage64.c
|
||||
+++ b/util/grub-mkimage64.c
|
||||
@@ -19,4 +19,6 @@
|
||||
# define ELF_ST_TYPE(val) ELF64_ST_TYPE(val)
|
||||
#define XEN_NOTE_SIZE 120
|
||||
|
||||
+#ifndef GRUB_MKIMAGEXX
|
||||
#include "grub-mkimagexx.c"
|
||||
+#endif
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 39d7efb914a..97ff599f073 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -50,6 +50,15 @@
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||
|
||||
+#define GRUB_MKIMAGEXX
|
||||
+#if !defined(MKIMAGE_ELF32) && !defined(MKIMAGE_ELF64)
|
||||
+#if __SIZEOF_POINTER__ == 8
|
||||
+#include "grub-mkimage64.c"
|
||||
+#else
|
||||
+#include "grub-mkimage32.c"
|
||||
+#endif
|
||||
+#endif
|
||||
+
|
||||
/* These structures are defined according to the CHRP binding to IEEE1275,
|
||||
"Client Program Format" section. */
|
||||
|
100
0115-mkimage-rename-a-couple-of-things-to-be-less-confusi.patch
Normal file
100
0115-mkimage-rename-a-couple-of-things-to-be-less-confusi.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From 594ac31571970611958b00284f9ca4c6f6c1286d Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:25 -0500
|
||||
Subject: [PATCH] mkimage: rename a couple of things to be less confusing
|
||||
later.
|
||||
|
||||
This renames some things:
|
||||
|
||||
- the "strtab" and "strtab_section" in relocate_symbols are changed to "symtab"
|
||||
instead, so as to be less confusing when "strtab" is moved to a struct in a
|
||||
later patch.
|
||||
|
||||
- The places where we pass section_vaddresses to functions are changed to also
|
||||
be called section_vaddresses"inside those functions, so I get less confused
|
||||
when I put addresses and vaddresses in a struct in a later patch.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 97ff599f073..85753448ee1 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -509,7 +509,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
|
||||
Return the address of a start symbol. */
|
||||
static Elf_Addr
|
||||
SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
- Elf_Shdr *symtab_section, Elf_Addr *section_addresses,
|
||||
+ Elf_Shdr *symtab_section, Elf_Addr *section_vaddresses,
|
||||
Elf_Half section_entsize, Elf_Half num_sections,
|
||||
void *jumpers, Elf_Addr jumpers_addr,
|
||||
Elf_Addr bss_start, Elf_Addr end,
|
||||
@@ -520,15 +520,15 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
Elf_Addr start_address = (Elf_Addr) -1;
|
||||
Elf_Sym *sym;
|
||||
Elf_Word i;
|
||||
- Elf_Shdr *strtab_section;
|
||||
- const char *strtab;
|
||||
+ Elf_Shdr *symtab_link_section;
|
||||
+ const char *symtab;
|
||||
grub_uint64_t *jptr = jumpers;
|
||||
|
||||
- strtab_section
|
||||
+ symtab_link_section
|
||||
= (Elf_Shdr *) ((char *) sections
|
||||
+ (grub_target_to_host32 (symtab_section->sh_link)
|
||||
* section_entsize));
|
||||
- strtab = (char *) e + grub_target_to_host (strtab_section->sh_offset);
|
||||
+ symtab = (char *) e + grub_target_to_host (symtab_link_section->sh_offset);
|
||||
|
||||
symtab_size = grub_target_to_host (symtab_section->sh_size);
|
||||
sym_size = grub_target_to_host (symtab_section->sh_entsize);
|
||||
@@ -542,7 +542,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
Elf_Section cur_index;
|
||||
const char *name;
|
||||
|
||||
- name = strtab + grub_target_to_host32 (sym->st_name);
|
||||
+ name = symtab + grub_target_to_host32 (sym->st_name);
|
||||
|
||||
cur_index = grub_target_to_host16 (sym->st_shndx);
|
||||
if (cur_index == STN_ABS)
|
||||
@@ -565,7 +565,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
else
|
||||
{
|
||||
sym->st_value = (grub_target_to_host (sym->st_value)
|
||||
- + section_addresses[cur_index]);
|
||||
+ + section_vaddresses[cur_index]);
|
||||
}
|
||||
|
||||
if (image_target->elf_target == EM_IA_64 && ELF_ST_TYPE (sym->st_info)
|
||||
@@ -580,7 +580,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
grub_util_info ("locating %s at 0x%" GRUB_HOST_PRIxLONG_LONG
|
||||
" (0x%" GRUB_HOST_PRIxLONG_LONG ")", name,
|
||||
(unsigned long long) sym->st_value,
|
||||
- (unsigned long long) section_addresses[cur_index]);
|
||||
+ (unsigned long long) section_vaddresses[cur_index]);
|
||||
|
||||
if (start_address == (Elf_Addr)-1)
|
||||
if (strcmp (name, "_start") == 0 || strcmp (name, "start") == 0)
|
||||
@@ -1644,7 +1644,7 @@ create_u64_fixups (struct translate_context *ctx,
|
||||
/* Make a .reloc section. */
|
||||
static void
|
||||
make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
- Elf_Addr *section_addresses, Elf_Shdr *sections,
|
||||
+ Elf_Addr *section_vaddresses, Elf_Shdr *sections,
|
||||
Elf_Half section_entsize, Elf_Half num_sections,
|
||||
const char *strtab,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
@@ -1674,7 +1674,7 @@ make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
rtab_offset = grub_target_to_host (s->sh_offset);
|
||||
num_rs = rtab_size / r_size;
|
||||
|
||||
- section_address = section_addresses[grub_le_to_cpu32 (s->sh_info)];
|
||||
+ section_address = section_vaddresses[grub_le_to_cpu32 (s->sh_info)];
|
||||
|
||||
for (j = 0, r = (Elf_Rel *) ((char *) e + rtab_offset);
|
||||
j < num_rs;
|
109
0116-mkimage-make-locate_sections-set-up-vaddresses-as-we.patch
Normal file
109
0116-mkimage-make-locate_sections-set-up-vaddresses-as-we.patch
Normal file
@ -0,0 +1,109 @@
|
||||
From e30de94926ec5250d7a0a091aef38b9071c97f6a Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:26 -0500
|
||||
Subject: [PATCH] mkimage: make locate_sections() set up vaddresses as well.
|
||||
|
||||
This puts both kinds of address initialization at the same place, and also lets
|
||||
us iterate through the section list one time fewer.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 49 ++++++++++++++++++++++++-------------------------
|
||||
1 file changed, 24 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 85753448ee1..851339becd5 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -1784,18 +1784,19 @@ SUFFIX (put_section) (Elf_Shdr *s, int i,
|
||||
return current_address;
|
||||
}
|
||||
|
||||
-/* Locate section addresses by merging code sections and data sections
|
||||
- into .text and .data, respectively. Return the array of section
|
||||
- addresses. */
|
||||
-static Elf_Addr *
|
||||
+/*
|
||||
+ * Locate section addresses by merging code sections and data sections
|
||||
+ * into .text and .data, respectively.
|
||||
+ */
|
||||
+static void
|
||||
SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
Elf_Shdr *sections, Elf_Half section_entsize,
|
||||
- Elf_Half num_sections, const char *strtab,
|
||||
+ Elf_Half num_sections, Elf_Addr *section_addresses,
|
||||
+ Elf_Addr *section_vaddresses, const char *strtab,
|
||||
struct grub_mkimage_layout *layout,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
int i;
|
||||
- Elf_Addr *section_addresses;
|
||||
Elf_Shdr *s;
|
||||
|
||||
layout->align = 1;
|
||||
@@ -1803,8 +1804,6 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
if (image_target->elf_target == EM_AARCH64)
|
||||
layout->align = 4096;
|
||||
|
||||
- section_addresses = xmalloc (sizeof (*section_addresses) * num_sections);
|
||||
- memset (section_addresses, 0, sizeof (*section_addresses) * num_sections);
|
||||
|
||||
layout->kernel_size = 0;
|
||||
|
||||
@@ -1880,12 +1879,16 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
for (i = 0, s = sections;
|
||||
i < num_sections;
|
||||
i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
- if (SUFFIX (is_bss_section) (s, image_target))
|
||||
- layout->end = SUFFIX (put_section) (s, i,
|
||||
- layout->end,
|
||||
- section_addresses,
|
||||
- strtab,
|
||||
- image_target);
|
||||
+ {
|
||||
+ if (SUFFIX (is_bss_section) (s, image_target))
|
||||
+ layout->end = SUFFIX (put_section) (s, i, layout->end,
|
||||
+ section_addresses, strtab,
|
||||
+ image_target);
|
||||
+ /*
|
||||
+ * This must to be in the last time this function passes through the loop.
|
||||
+ */
|
||||
+ section_vaddresses[i] = section_addresses[i] + image_target->vaddr_offset;
|
||||
+ }
|
||||
|
||||
layout->end = ALIGN_UP (layout->end + image_target->vaddr_offset,
|
||||
image_target->section_align) - image_target->vaddr_offset;
|
||||
@@ -1896,8 +1899,6 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
*/
|
||||
if (image_target->id == IMAGE_EFI || !is_relocatable (image_target))
|
||||
layout->kernel_size = layout->end;
|
||||
-
|
||||
- return section_addresses;
|
||||
}
|
||||
|
||||
char *
|
||||
@@ -1946,16 +1947,14 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
+ grub_host_to_target16 (e->e_shstrndx) * section_entsize);
|
||||
strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
|
||||
|
||||
- section_addresses = SUFFIX (locate_sections) (e, kernel_path,
|
||||
- sections, section_entsize,
|
||||
- num_sections, strtab,
|
||||
- layout,
|
||||
- image_target);
|
||||
+ section_addresses = xmalloc (sizeof (*section_addresses) * num_sections);
|
||||
+ memset (section_addresses, 0, sizeof (*section_addresses) * num_sections);
|
||||
+ section_vaddresses = xmalloc (sizeof (*section_vaddresses) * num_sections);
|
||||
+ memset (section_vaddresses, 0, sizeof (*section_vaddresses) * num_sections);
|
||||
|
||||
- section_vaddresses = xmalloc (sizeof (*section_addresses) * num_sections);
|
||||
-
|
||||
- for (i = 0; i < num_sections; i++)
|
||||
- section_vaddresses[i] = section_addresses[i] + image_target->vaddr_offset;
|
||||
+ SUFFIX (locate_sections) (e, kernel_path, sections, section_entsize, num_sections,
|
||||
+ section_addresses, section_vaddresses, strtab, layout,
|
||||
+ image_target);
|
||||
|
||||
if (!is_relocatable (image_target))
|
||||
{
|
566
0117-mkimage-refactor-a-bunch-of-section-data-into-a-stru.patch
Normal file
566
0117-mkimage-refactor-a-bunch-of-section-data-into-a-stru.patch
Normal file
@ -0,0 +1,566 @@
|
||||
From 7542af695f338a2b5b86d8cab5cac0d235d47c38 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:27 -0500
|
||||
Subject: [PATCH] mkimage: refactor a bunch of section data into a struct.
|
||||
|
||||
This basically moves a bunch of the section information we pass around a
|
||||
lot into a struct, and passes a pointer to a single one of those
|
||||
instead.
|
||||
|
||||
This shouldn't change the binary file output or the "grub-mkimage -v"
|
||||
output in any way.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 261 ++++++++++++++++++++++----------------------------
|
||||
1 file changed, 115 insertions(+), 146 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 851339becd5..5de34d53cb7 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -93,6 +93,17 @@ struct fixup_block_list
|
||||
|
||||
#define ALIGN_ADDR(x) (ALIGN_UP((x), image_target->voidp_sizeof))
|
||||
|
||||
+struct section_metadata
|
||||
+{
|
||||
+ Elf_Half num_sections;
|
||||
+ Elf_Shdr *sections;
|
||||
+ Elf_Addr *addrs;
|
||||
+ Elf_Addr *vaddrs;
|
||||
+ Elf_Half section_entsize;
|
||||
+ Elf_Shdr *symtab;
|
||||
+ const char *strtab;
|
||||
+};
|
||||
+
|
||||
static int
|
||||
is_relocatable (const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
@@ -508,9 +519,7 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc
|
||||
/* Relocate symbols; note that this function overwrites the symbol table.
|
||||
Return the address of a start symbol. */
|
||||
static Elf_Addr
|
||||
-SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
- Elf_Shdr *symtab_section, Elf_Addr *section_vaddresses,
|
||||
- Elf_Half section_entsize, Elf_Half num_sections,
|
||||
+SUFFIX (relocate_symbols) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||
void *jumpers, Elf_Addr jumpers_addr,
|
||||
Elf_Addr bss_start, Elf_Addr end,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
@@ -520,19 +529,18 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
Elf_Addr start_address = (Elf_Addr) -1;
|
||||
Elf_Sym *sym;
|
||||
Elf_Word i;
|
||||
- Elf_Shdr *symtab_link_section;
|
||||
+ Elf_Shdr *symtab_section;
|
||||
const char *symtab;
|
||||
grub_uint64_t *jptr = jumpers;
|
||||
|
||||
- symtab_link_section
|
||||
- = (Elf_Shdr *) ((char *) sections
|
||||
- + (grub_target_to_host32 (symtab_section->sh_link)
|
||||
- * section_entsize));
|
||||
- symtab = (char *) e + grub_target_to_host (symtab_link_section->sh_offset);
|
||||
+ symtab_section = (Elf_Shdr *) ((char *) smd->sections
|
||||
+ + grub_target_to_host32 (smd->symtab->sh_link)
|
||||
+ * smd->section_entsize);
|
||||
+ symtab = (char *) e + grub_target_to_host (symtab_section->sh_offset);
|
||||
|
||||
- symtab_size = grub_target_to_host (symtab_section->sh_size);
|
||||
- sym_size = grub_target_to_host (symtab_section->sh_entsize);
|
||||
- symtab_offset = grub_target_to_host (symtab_section->sh_offset);
|
||||
+ symtab_size = grub_target_to_host (smd->symtab->sh_size);
|
||||
+ sym_size = grub_target_to_host (smd->symtab->sh_entsize);
|
||||
+ symtab_offset = grub_target_to_host (smd->symtab->sh_offset);
|
||||
num_syms = symtab_size / sym_size;
|
||||
|
||||
for (i = 0, sym = (Elf_Sym *) ((char *) e + symtab_offset);
|
||||
@@ -560,12 +568,12 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
else
|
||||
continue;
|
||||
}
|
||||
- else if (cur_index >= num_sections)
|
||||
+ else if (cur_index >= smd->num_sections)
|
||||
grub_util_error ("section %d does not exist", cur_index);
|
||||
else
|
||||
{
|
||||
sym->st_value = (grub_target_to_host (sym->st_value)
|
||||
- + section_vaddresses[cur_index]);
|
||||
+ + smd->vaddrs[cur_index]);
|
||||
}
|
||||
|
||||
if (image_target->elf_target == EM_IA_64 && ELF_ST_TYPE (sym->st_info)
|
||||
@@ -580,7 +588,7 @@ SUFFIX (relocate_symbols) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
grub_util_info ("locating %s at 0x%" GRUB_HOST_PRIxLONG_LONG
|
||||
" (0x%" GRUB_HOST_PRIxLONG_LONG ")", name,
|
||||
(unsigned long long) sym->st_value,
|
||||
- (unsigned long long) section_vaddresses[cur_index]);
|
||||
+ (unsigned long long) smd->vaddrs[cur_index]);
|
||||
|
||||
if (start_address == (Elf_Addr)-1)
|
||||
if (strcmp (name, "_start") == 0 || strcmp (name, "start") == 0)
|
||||
@@ -722,12 +730,8 @@ arm_get_trampoline_size (Elf_Ehdr *e,
|
||||
addresses can be fully resolved. Absolute addresses must be relocated
|
||||
again by a PE32 relocator when loaded. */
|
||||
static void
|
||||
-SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
- Elf_Addr *section_addresses,
|
||||
- Elf_Half section_entsize, Elf_Half num_sections,
|
||||
- const char *strtab,
|
||||
- char *pe_target, Elf_Addr tramp_off,
|
||||
- Elf_Addr got_off,
|
||||
+SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||
+ char *pe_target, Elf_Addr tramp_off, Elf_Addr got_off,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
Elf_Half i;
|
||||
@@ -741,33 +745,29 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
grub_uint32_t *tr = (void *) (pe_target + tramp_off);
|
||||
#endif
|
||||
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd->sections;
|
||||
+ i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
if ((s->sh_type == grub_host_to_target32 (SHT_REL)) ||
|
||||
(s->sh_type == grub_host_to_target32 (SHT_RELA)))
|
||||
{
|
||||
Elf_Rela *r;
|
||||
Elf_Word rtab_size, r_size, num_rs;
|
||||
Elf_Off rtab_offset;
|
||||
- Elf_Shdr *symtab_section;
|
||||
Elf_Word target_section_index;
|
||||
Elf_Addr target_section_addr;
|
||||
Elf_Shdr *target_section;
|
||||
Elf_Word j;
|
||||
|
||||
- symtab_section = (Elf_Shdr *) ((char *) sections
|
||||
- + (grub_target_to_host32 (s->sh_link)
|
||||
- * section_entsize));
|
||||
target_section_index = grub_target_to_host32 (s->sh_info);
|
||||
- target_section_addr = section_addresses[target_section_index];
|
||||
- target_section = (Elf_Shdr *) ((char *) sections
|
||||
+ target_section_addr = smd->addrs[target_section_index];
|
||||
+ target_section = (Elf_Shdr *) ((char *) smd->sections
|
||||
+ (target_section_index
|
||||
- * section_entsize));
|
||||
+ * smd->section_entsize));
|
||||
|
||||
grub_util_info ("dealing with the relocation section %s for %s",
|
||||
- strtab + grub_target_to_host32 (s->sh_name),
|
||||
- strtab + grub_target_to_host32 (target_section->sh_name));
|
||||
+ smd->strtab + grub_target_to_host32 (s->sh_name),
|
||||
+ smd->strtab + grub_target_to_host32 (target_section->sh_name));
|
||||
|
||||
rtab_size = grub_target_to_host (s->sh_size);
|
||||
r_size = grub_target_to_host (s->sh_entsize);
|
||||
@@ -788,7 +788,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
target = SUFFIX (get_target_address) (e, target_section,
|
||||
offset, image_target);
|
||||
info = grub_target_to_host (r->r_info);
|
||||
- sym_addr = SUFFIX (get_symbol_address) (e, symtab_section,
|
||||
+ sym_addr = SUFFIX (get_symbol_address) (e, smd->symtab,
|
||||
ELF_R_SYM (info), image_target);
|
||||
|
||||
addend = (s->sh_type == grub_target_to_host32 (SHT_RELA)) ?
|
||||
@@ -919,8 +919,8 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
Elf_Sym *sym;
|
||||
|
||||
sym = (Elf_Sym *) ((char *) e
|
||||
- + grub_target_to_host (symtab_section->sh_offset)
|
||||
- + ELF_R_SYM (info) * grub_target_to_host (symtab_section->sh_entsize));
|
||||
+ + grub_target_to_host (smd->symtab->sh_offset)
|
||||
+ + ELF_R_SYM (info) * grub_target_to_host (smd->symtab->sh_entsize));
|
||||
if (ELF_ST_TYPE (sym->st_info) == STT_FUNC)
|
||||
sym_addr = grub_target_to_host64 (*(grub_uint64_t *) (pe_target
|
||||
+ sym->st_value
|
||||
@@ -1105,8 +1105,8 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
|
||||
- (char *) e),
|
||||
sym_addr);
|
||||
sym = (Elf_Sym *) ((char *) e
|
||||
- + grub_target_to_host (symtab_section->sh_offset)
|
||||
- + ELF_R_SYM (info) * grub_target_to_host (symtab_section->sh_entsize));
|
||||
+ + grub_target_to_host (smd->symtab->sh_offset)
|
||||
+ + ELF_R_SYM (info) * grub_target_to_host (smd->symtab->sh_entsize));
|
||||
if (ELF_ST_TYPE (sym->st_info) != STT_FUNC)
|
||||
sym_addr |= 1;
|
||||
if (!(sym_addr & 1))
|
||||
@@ -1644,9 +1644,7 @@ create_u64_fixups (struct translate_context *ctx,
|
||||
/* Make a .reloc section. */
|
||||
static void
|
||||
make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
- Elf_Addr *section_vaddresses, Elf_Shdr *sections,
|
||||
- Elf_Half section_entsize, Elf_Half num_sections,
|
||||
- const char *strtab,
|
||||
+ struct section_metadata *smd,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
unsigned i;
|
||||
@@ -1655,8 +1653,8 @@ make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
|
||||
translate_reloc_start (&ctx, image_target);
|
||||
|
||||
- for (i = 0, s = sections; i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd->sections; i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
if ((grub_target_to_host32 (s->sh_type) == SHT_REL) ||
|
||||
(grub_target_to_host32 (s->sh_type) == SHT_RELA))
|
||||
{
|
||||
@@ -1667,14 +1665,14 @@ make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
Elf_Word j;
|
||||
|
||||
grub_util_info ("translating the relocation section %s",
|
||||
- strtab + grub_le_to_cpu32 (s->sh_name));
|
||||
+ smd->strtab + grub_le_to_cpu32 (s->sh_name));
|
||||
|
||||
rtab_size = grub_target_to_host (s->sh_size);
|
||||
r_size = grub_target_to_host (s->sh_entsize);
|
||||
rtab_offset = grub_target_to_host (s->sh_offset);
|
||||
num_rs = rtab_size / r_size;
|
||||
|
||||
- section_address = section_vaddresses[grub_le_to_cpu32 (s->sh_info)];
|
||||
+ section_address = smd->vaddrs[grub_le_to_cpu32 (s->sh_info)];
|
||||
|
||||
for (j = 0, r = (Elf_Rel *) ((char *) e + rtab_offset);
|
||||
j < num_rs;
|
||||
@@ -1761,12 +1759,11 @@ SUFFIX (check_elf_header) (Elf_Ehdr *e, size_t size, const struct grub_install_i
|
||||
static Elf_Addr
|
||||
SUFFIX (put_section) (Elf_Shdr *s, int i,
|
||||
Elf_Addr current_address,
|
||||
- Elf_Addr *section_addresses,
|
||||
- const char *strtab,
|
||||
+ struct section_metadata *smd,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
Elf_Word align = grub_host_to_target_addr (s->sh_addralign);
|
||||
- const char *name = strtab + grub_host_to_target32 (s->sh_name);
|
||||
+ const char *name = smd->strtab + grub_host_to_target32 (s->sh_name);
|
||||
|
||||
if (align)
|
||||
current_address = ALIGN_UP (current_address + image_target->vaddr_offset,
|
||||
@@ -1778,8 +1775,8 @@ SUFFIX (put_section) (Elf_Shdr *s, int i,
|
||||
name, (unsigned long long) current_address);
|
||||
if (!is_relocatable (image_target))
|
||||
current_address = grub_host_to_target_addr (s->sh_addr)
|
||||
- - image_target->link_addr;
|
||||
- section_addresses[i] = current_address;
|
||||
+ - image_target->link_addr;
|
||||
+ smd->addrs[i] = current_address;
|
||||
current_address += grub_host_to_target_addr (s->sh_size);
|
||||
return current_address;
|
||||
}
|
||||
@@ -1790,9 +1787,7 @@ SUFFIX (put_section) (Elf_Shdr *s, int i,
|
||||
*/
|
||||
static void
|
||||
SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
- Elf_Shdr *sections, Elf_Half section_entsize,
|
||||
- Elf_Half num_sections, Elf_Addr *section_addresses,
|
||||
- Elf_Addr *section_vaddresses, const char *strtab,
|
||||
+ struct section_metadata *smd,
|
||||
struct grub_mkimage_layout *layout,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
@@ -1804,28 +1799,23 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
if (image_target->elf_target == EM_AARCH64)
|
||||
layout->align = 4096;
|
||||
|
||||
-
|
||||
layout->kernel_size = 0;
|
||||
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
- if ((grub_target_to_host (s->sh_flags) & SHF_ALLOC)
|
||||
+ for (i = 0, s = smd->sections;
|
||||
+ i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
+ if ((grub_target_to_host (s->sh_flags) & SHF_ALLOC)
|
||||
&& grub_host_to_target32 (s->sh_addralign) > layout->align)
|
||||
layout->align = grub_host_to_target32 (s->sh_addralign);
|
||||
|
||||
-
|
||||
/* .text */
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd->sections;
|
||||
+ i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
if (SUFFIX (is_text_section) (s, image_target))
|
||||
{
|
||||
- layout->kernel_size = SUFFIX (put_section) (s, i,
|
||||
- layout->kernel_size,
|
||||
- section_addresses,
|
||||
- strtab,
|
||||
- image_target);
|
||||
+ layout->kernel_size = SUFFIX (put_section) (s, i, layout->kernel_size,
|
||||
+ smd, image_target);
|
||||
if (!is_relocatable (image_target) &&
|
||||
grub_host_to_target_addr (s->sh_addr) != image_target->link_addr)
|
||||
{
|
||||
@@ -1845,15 +1835,12 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
layout->exec_size = layout->kernel_size;
|
||||
|
||||
/* .data */
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd->sections;
|
||||
+ i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
if (SUFFIX (is_data_section) (s, image_target))
|
||||
- layout->kernel_size = SUFFIX (put_section) (s, i,
|
||||
- layout->kernel_size,
|
||||
- section_addresses,
|
||||
- strtab,
|
||||
- image_target);
|
||||
+ layout->kernel_size = SUFFIX (put_section) (s, i, layout->kernel_size, smd,
|
||||
+ image_target);
|
||||
|
||||
#ifdef MKIMAGE_ELF32
|
||||
if (image_target->elf_target == EM_ARM)
|
||||
@@ -1864,8 +1851,8 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
|
||||
layout->kernel_size = ALIGN_UP (layout->kernel_size, 16);
|
||||
|
||||
- tramp = arm_get_trampoline_size (e, sections, section_entsize,
|
||||
- num_sections, image_target);
|
||||
+ tramp = arm_get_trampoline_size (e, smd->sections, smd->section_entsize,
|
||||
+ smd->num_sections, image_target);
|
||||
|
||||
layout->tramp_off = layout->kernel_size;
|
||||
layout->kernel_size += ALIGN_UP (tramp, 16);
|
||||
@@ -1876,18 +1863,17 @@ SUFFIX (locate_sections) (Elf_Ehdr *e, const char *kernel_path,
|
||||
layout->end = layout->kernel_size;
|
||||
|
||||
/* .bss */
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd->sections;
|
||||
+ i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
{
|
||||
if (SUFFIX (is_bss_section) (s, image_target))
|
||||
- layout->end = SUFFIX (put_section) (s, i, layout->end,
|
||||
- section_addresses, strtab,
|
||||
- image_target);
|
||||
+ layout->end = SUFFIX (put_section) (s, i, layout->end, smd, image_target);
|
||||
+
|
||||
/*
|
||||
* This must to be in the last time this function passes through the loop.
|
||||
*/
|
||||
- section_vaddresses[i] = section_addresses[i] + image_target->vaddr_offset;
|
||||
+ smd->vaddrs[i] = smd->addrs[i] + image_target->vaddr_offset;
|
||||
}
|
||||
|
||||
layout->end = ALIGN_UP (layout->end + image_target->vaddr_offset,
|
||||
@@ -1908,18 +1894,12 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
char *kernel_img, *out_img;
|
||||
- const char *strtab;
|
||||
+ struct section_metadata smd = { 0, };
|
||||
Elf_Ehdr *e;
|
||||
- Elf_Shdr *sections;
|
||||
- Elf_Addr *section_addresses;
|
||||
- Elf_Addr *section_vaddresses;
|
||||
int i;
|
||||
Elf_Shdr *s;
|
||||
- Elf_Half num_sections;
|
||||
Elf_Off section_offset;
|
||||
- Elf_Half section_entsize;
|
||||
grub_size_t kernel_size;
|
||||
- Elf_Shdr *symtab_section = 0;
|
||||
|
||||
grub_memset (layout, 0, sizeof (*layout));
|
||||
|
||||
@@ -1934,46 +1914,45 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
grub_util_error ("invalid ELF header");
|
||||
|
||||
section_offset = grub_target_to_host (e->e_shoff);
|
||||
- section_entsize = grub_target_to_host16 (e->e_shentsize);
|
||||
- num_sections = grub_target_to_host16 (e->e_shnum);
|
||||
+ smd.section_entsize = grub_target_to_host16 (e->e_shentsize);
|
||||
+ smd.num_sections = grub_target_to_host16 (e->e_shnum);
|
||||
|
||||
- if (kernel_size < section_offset + (grub_uint32_t) section_entsize * num_sections)
|
||||
+ if (kernel_size < section_offset
|
||||
+ + (grub_uint32_t) smd.section_entsize * smd.num_sections)
|
||||
grub_util_error (_("premature end of file %s"), kernel_path);
|
||||
|
||||
- sections = (Elf_Shdr *) (kernel_img + section_offset);
|
||||
+ smd.sections = (Elf_Shdr *) (kernel_img + section_offset);
|
||||
|
||||
/* Relocate sections then symbols in the virtual address space. */
|
||||
- s = (Elf_Shdr *) ((char *) sections
|
||||
- + grub_host_to_target16 (e->e_shstrndx) * section_entsize);
|
||||
- strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
|
||||
+ s = (Elf_Shdr *) ((char *) smd.sections
|
||||
+ + grub_host_to_target16 (e->e_shstrndx) * smd.section_entsize);
|
||||
+ smd.strtab = (char *) e + grub_host_to_target_addr (s->sh_offset);
|
||||
|
||||
- section_addresses = xmalloc (sizeof (*section_addresses) * num_sections);
|
||||
- memset (section_addresses, 0, sizeof (*section_addresses) * num_sections);
|
||||
- section_vaddresses = xmalloc (sizeof (*section_vaddresses) * num_sections);
|
||||
- memset (section_vaddresses, 0, sizeof (*section_vaddresses) * num_sections);
|
||||
+ smd.addrs = xmalloc (sizeof (*smd.addrs) * smd.num_sections);
|
||||
+ memset (smd.addrs, 0, sizeof (*smd.addrs) * smd.num_sections);
|
||||
+ smd.vaddrs = xmalloc (sizeof (*smd.vaddrs) * smd.num_sections);
|
||||
+ memset (smd.vaddrs, 0, sizeof (*smd.vaddrs) * smd.num_sections);
|
||||
|
||||
- SUFFIX (locate_sections) (e, kernel_path, sections, section_entsize, num_sections,
|
||||
- section_addresses, section_vaddresses, strtab, layout,
|
||||
- image_target);
|
||||
+ SUFFIX (locate_sections) (e, kernel_path, &smd, layout, image_target);
|
||||
|
||||
if (!is_relocatable (image_target))
|
||||
{
|
||||
Elf_Addr current_address = layout->kernel_size;
|
||||
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd.sections;
|
||||
+ i < smd.num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd.section_entsize))
|
||||
if (grub_target_to_host32 (s->sh_type) == SHT_NOBITS)
|
||||
{
|
||||
Elf_Word sec_align = grub_host_to_target_addr (s->sh_addralign);
|
||||
- const char *name = strtab + grub_host_to_target32 (s->sh_name);
|
||||
+ const char *name = smd.strtab + grub_host_to_target32 (s->sh_name);
|
||||
|
||||
if (sec_align)
|
||||
current_address = ALIGN_UP (current_address
|
||||
+ image_target->vaddr_offset,
|
||||
sec_align)
|
||||
- image_target->vaddr_offset;
|
||||
-
|
||||
+
|
||||
grub_util_info ("locating the section %s at 0x%"
|
||||
GRUB_HOST_PRIxLONG_LONG,
|
||||
name, (unsigned long long) current_address);
|
||||
@@ -1981,7 +1960,7 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
current_address = grub_host_to_target_addr (s->sh_addr)
|
||||
- image_target->link_addr;
|
||||
|
||||
- section_vaddresses[i] = current_address
|
||||
+ smd.vaddrs[i] = current_address
|
||||
+ image_target->vaddr_offset;
|
||||
current_address += grub_host_to_target_addr (s->sh_size);
|
||||
}
|
||||
@@ -2002,16 +1981,16 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
|
||||
if (is_relocatable (image_target))
|
||||
{
|
||||
- symtab_section = NULL;
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ smd.symtab = NULL;
|
||||
+ for (i = 0, s = smd.sections;
|
||||
+ i < smd.num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd.section_entsize))
|
||||
if (s->sh_type == grub_host_to_target32 (SHT_SYMTAB))
|
||||
{
|
||||
- symtab_section = s;
|
||||
+ smd.symtab = s;
|
||||
break;
|
||||
}
|
||||
- if (! symtab_section)
|
||||
+ if (! smd.symtab)
|
||||
grub_util_error ("%s", _("no symbol table"));
|
||||
#ifdef MKIMAGE_ELF64
|
||||
if (image_target->elf_target == EM_IA_64)
|
||||
@@ -2026,7 +2005,7 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
layout->kernel_size += ALIGN_UP (tramp, 16);
|
||||
|
||||
layout->ia64jmp_off = layout->kernel_size;
|
||||
- layout->ia64jmpnum = SUFFIX (count_funcs) (e, symtab_section,
|
||||
+ layout->ia64jmpnum = SUFFIX (count_funcs) (e, smd.symtab,
|
||||
image_target);
|
||||
layout->kernel_size += 16 * layout->ia64jmpnum;
|
||||
|
||||
@@ -2057,31 +2036,19 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
|
||||
if (is_relocatable (image_target))
|
||||
{
|
||||
- layout->start_address = SUFFIX (relocate_symbols) (e, sections, symtab_section,
|
||||
- section_vaddresses, section_entsize,
|
||||
- num_sections,
|
||||
- (char *) out_img + layout->ia64jmp_off,
|
||||
- layout->ia64jmp_off
|
||||
- + image_target->vaddr_offset,
|
||||
- layout->bss_start,
|
||||
- layout->end,
|
||||
- image_target);
|
||||
+ layout->start_address = SUFFIX (relocate_symbols) (e, &smd,
|
||||
+ (char *) out_img + layout->ia64jmp_off,
|
||||
+ layout->ia64jmp_off + image_target->vaddr_offset,
|
||||
+ layout->bss_start, layout->end, image_target);
|
||||
+
|
||||
if (layout->start_address == (Elf_Addr) -1)
|
||||
grub_util_error ("start symbol is not defined");
|
||||
|
||||
- /* Resolve addresses in the virtual address space. */
|
||||
- SUFFIX (relocate_addresses) (e, sections, section_addresses,
|
||||
- section_entsize,
|
||||
- num_sections, strtab,
|
||||
- out_img, layout->tramp_off,
|
||||
- layout->got_off,
|
||||
- image_target);
|
||||
+ /* Resolve addrs in the virtual address space. */
|
||||
+ SUFFIX (relocate_addrs) (e, &smd, out_img, layout->tramp_off,
|
||||
+ layout->got_off, image_target);
|
||||
|
||||
- make_reloc_section (e, layout,
|
||||
- section_vaddresses, sections,
|
||||
- section_entsize, num_sections,
|
||||
- strtab,
|
||||
- image_target);
|
||||
+ make_reloc_section (e, layout, &smd, image_target);
|
||||
if (image_target->id != IMAGE_EFI)
|
||||
{
|
||||
out_img = xrealloc (out_img, layout->kernel_size + total_module_size
|
||||
@@ -2093,9 +2060,9 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
}
|
||||
}
|
||||
|
||||
- for (i = 0, s = sections;
|
||||
- i < num_sections;
|
||||
- i++, s = (Elf_Shdr *) ((char *) s + section_entsize))
|
||||
+ for (i = 0, s = smd.sections;
|
||||
+ i < smd.num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd.section_entsize))
|
||||
if (SUFFIX (is_data_section) (s, image_target)
|
||||
/* Explicitly initialize BSS
|
||||
when producing PE32 to avoid a bug in EFI implementations.
|
||||
@@ -2106,17 +2073,19 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
|| SUFFIX (is_text_section) (s, image_target))
|
||||
{
|
||||
if (grub_target_to_host32 (s->sh_type) == SHT_NOBITS)
|
||||
- memset (out_img + section_addresses[i], 0,
|
||||
+ memset (out_img + smd.addrs[i], 0,
|
||||
grub_host_to_target_addr (s->sh_size));
|
||||
else
|
||||
- memcpy (out_img + section_addresses[i],
|
||||
+ memcpy (out_img + smd.addrs[i],
|
||||
kernel_img + grub_host_to_target_addr (s->sh_offset),
|
||||
grub_host_to_target_addr (s->sh_size));
|
||||
}
|
||||
free (kernel_img);
|
||||
|
||||
- free (section_vaddresses);
|
||||
- free (section_addresses);
|
||||
+ free (smd.vaddrs);
|
||||
+ smd.vaddrs = NULL;
|
||||
+ free (smd.addrs);
|
||||
+ smd.addrs = NULL;
|
||||
|
||||
return out_img;
|
||||
}
|
160
0118-mkimage-avoid-copying-relocations-for-sections-that-.patch
Normal file
160
0118-mkimage-avoid-copying-relocations-for-sections-that-.patch
Normal file
@ -0,0 +1,160 @@
|
||||
From ebc825b5491185b39ecd24b1674a76f60492dc60 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:28 -0500
|
||||
Subject: [PATCH] mkimage: avoid copying relocations for sections that won't be
|
||||
copied.
|
||||
|
||||
Some versions of gcc include a plugin called "annobin", and in some
|
||||
build systems this is enabled by default. This plugin creates special
|
||||
ELF note sections to track which ABI-breaking features are used by a
|
||||
binary, as well as a series of relocations to annotate where.
|
||||
|
||||
If grub is compiled with this feature, then when grub-mkimage translates
|
||||
the binary to another file format which does not strongly associate
|
||||
relocation data with sections (i.e. when platform is *-efi), these
|
||||
relocations appear to be against the .text section rather than the
|
||||
original note section. When the binary is loaded by the PE runtime
|
||||
loader, hilarity ensues.
|
||||
|
||||
This issue is not necessarily limited to the annobin, but could arise
|
||||
any time there are relocations in sections that are not represented in
|
||||
grub-mkimage's output.
|
||||
|
||||
This patch seeks to avoid this issue by only including relocations that
|
||||
refer to sections which will be included in the final binary.
|
||||
|
||||
As an aside, this should also obviate the need to avoid -funwind-tables,
|
||||
-fasynchronous-unwind-tables, and any sections similar to .eh_frame in
|
||||
the future. I've tested it on x86-64-efi with the following gcc command
|
||||
line options (as recorded by -grecord-gcc-flags), but I still need to
|
||||
test the result on some other platforms that have been problematic in
|
||||
the past (especially ARM Aarch64) before I feel comfortable making
|
||||
changes to the configure.ac bits:
|
||||
|
||||
GNU C11 7.2.1 20180116 (Red Hat 7.2.1-7) -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -msoft-float -mno-stack-arg-probe -mcmodel=large -mno-red-zone -m64 -mtune=generic -march=x86-64 -g3 -Os -freg-struct-return -fno-stack-protector -ffreestanding -funwind-tables -fasynchronous-unwind-tables -fno-strict-aliasing -fstack-clash-protection -fno-ident -fplugin=annobin
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 80 +++++++++++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 72 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 5de34d53cb7..11d05d7a8ec 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -725,6 +725,12 @@ arm_get_trampoline_size (Elf_Ehdr *e,
|
||||
}
|
||||
#endif
|
||||
|
||||
+static int
|
||||
+SUFFIX (is_kept_section) (Elf_Shdr *s, const struct grub_install_image_target_desc *image_target);
|
||||
+static int
|
||||
+SUFFIX (is_kept_reloc_section) (Elf_Shdr *s, const struct grub_install_image_target_desc *image_target,
|
||||
+ struct section_metadata *smd);
|
||||
+
|
||||
/* Deal with relocation information. This function relocates addresses
|
||||
within the virtual address space starting from 0. So only relative
|
||||
addresses can be fully resolved. Absolute addresses must be relocated
|
||||
@@ -759,6 +765,14 @@ SUFFIX (relocate_addrs) (Elf_Ehdr *e, struct section_metadata *smd,
|
||||
Elf_Shdr *target_section;
|
||||
Elf_Word j;
|
||||
|
||||
+ if (!SUFFIX (is_kept_section) (s, image_target) &&
|
||||
+ !SUFFIX (is_kept_reloc_section) (s, image_target, smd))
|
||||
+ {
|
||||
+ grub_util_info ("not translating relocations for omitted section %s",
|
||||
+ smd->strtab + grub_le_to_cpu32 (s->sh_name));
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
target_section_index = grub_target_to_host32 (s->sh_info);
|
||||
target_section_addr = smd->addrs[target_section_index];
|
||||
target_section = (Elf_Shdr *) ((char *) smd->sections
|
||||
@@ -1664,6 +1678,13 @@ make_reloc_section (Elf_Ehdr *e, struct grub_mkimage_layout *layout,
|
||||
Elf_Addr section_address;
|
||||
Elf_Word j;
|
||||
|
||||
+ if (!SUFFIX (is_kept_reloc_section) (s, image_target, smd))
|
||||
+ {
|
||||
+ grub_util_info ("not translating the skipped relocation section %s",
|
||||
+ smd->strtab + grub_le_to_cpu32 (s->sh_name));
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
grub_util_info ("translating the relocation section %s",
|
||||
smd->strtab + grub_le_to_cpu32 (s->sh_name));
|
||||
|
||||
@@ -1739,6 +1760,56 @@ SUFFIX (is_bss_section) (Elf_Shdr *s, const struct grub_install_image_target_des
|
||||
== SHF_ALLOC) && (grub_target_to_host32 (s->sh_type) == SHT_NOBITS);
|
||||
}
|
||||
|
||||
+/* Determine if a section is going to be in the final output */
|
||||
+static int
|
||||
+SUFFIX (is_kept_section) (Elf_Shdr *s, const struct grub_install_image_target_desc *image_target)
|
||||
+{
|
||||
+ /* We keep .text and .data */
|
||||
+ if (SUFFIX (is_text_section) (s, image_target)
|
||||
+ || SUFFIX (is_data_section) (s, image_target))
|
||||
+ return 1;
|
||||
+
|
||||
+ /*
|
||||
+ * And we keep .bss if we're producing PE binaries or the target doesn't
|
||||
+ * have a relocating loader. Platforms other than EFI and U-boot shouldn't
|
||||
+ * have .bss in their binaries as we build with -Wl,-Ttext.
|
||||
+ */
|
||||
+ if (SUFFIX (is_bss_section) (s, image_target)
|
||||
+ && (image_target->id == IMAGE_EFI || !is_relocatable (image_target)))
|
||||
+ return 1;
|
||||
+
|
||||
+ /* Otherwise this is not a section we're keeping in the final output. */
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+SUFFIX (is_kept_reloc_section) (Elf_Shdr *s, const struct grub_install_image_target_desc *image_target,
|
||||
+ struct section_metadata *smd)
|
||||
+{
|
||||
+ int i;
|
||||
+ int r = 0;
|
||||
+ const char *name = smd->strtab + grub_host_to_target32 (s->sh_name);
|
||||
+
|
||||
+ if (!strncmp (name, ".rela.", 6))
|
||||
+ name += 5;
|
||||
+ else if (!strncmp (name, ".rel.", 5))
|
||||
+ name += 4;
|
||||
+ else
|
||||
+ return 1;
|
||||
+
|
||||
+ for (i = 0, s = smd->sections; i < smd->num_sections;
|
||||
+ i++, s = (Elf_Shdr *) ((char *) s + smd->section_entsize))
|
||||
+ {
|
||||
+ const char *sname = smd->strtab + grub_host_to_target32 (s->sh_name);
|
||||
+ if (strcmp (sname, name))
|
||||
+ continue;
|
||||
+
|
||||
+ return SUFFIX (is_kept_section) (s, image_target);
|
||||
+ }
|
||||
+
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
/* Return if the ELF header is valid. */
|
||||
static int
|
||||
SUFFIX (check_elf_header) (Elf_Ehdr *e, size_t size, const struct grub_install_image_target_desc *image_target)
|
||||
@@ -2063,14 +2134,7 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
for (i = 0, s = smd.sections;
|
||||
i < smd.num_sections;
|
||||
i++, s = (Elf_Shdr *) ((char *) s + smd.section_entsize))
|
||||
- if (SUFFIX (is_data_section) (s, image_target)
|
||||
- /* Explicitly initialize BSS
|
||||
- when producing PE32 to avoid a bug in EFI implementations.
|
||||
- Platforms other than EFI and U-boot shouldn't have .bss in
|
||||
- their binaries as we build with -Wl,-Ttext.
|
||||
- */
|
||||
- || (SUFFIX (is_bss_section) (s, image_target) && (image_target->id == IMAGE_EFI || !is_relocatable (image_target)))
|
||||
- || SUFFIX (is_text_section) (s, image_target))
|
||||
+ if (SUFFIX (is_kept_section) (s, image_target))
|
||||
{
|
||||
if (grub_target_to_host32 (s->sh_type) == SHT_NOBITS)
|
||||
memset (out_img + smd.addrs[i], 0,
|
@ -0,0 +1,32 @@
|
||||
From 413f1e13e69e1df130e9f39684fb7c0c216e5035 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 21 Feb 2018 15:20:29 -0500
|
||||
Subject: [PATCH] .mod files: Strip annobin annotations and .eh_frame, and
|
||||
their relocations
|
||||
|
||||
This way debuginfo built from the .module will still include this
|
||||
information, but the final result won't have the data we don't actually
|
||||
need in the modules, either on-disk, loaded at runtime, or in prebuilt
|
||||
images.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/genmod.sh.in | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/grub-core/genmod.sh.in b/grub-core/genmod.sh.in
|
||||
index 3de06ee018f..1250589b3f5 100644
|
||||
--- a/grub-core/genmod.sh.in
|
||||
+++ b/grub-core/genmod.sh.in
|
||||
@@ -58,6 +58,10 @@ if test x@TARGET_APPLE_LINKER@ != x1; then
|
||||
-K grub_mod_init -K grub_mod_fini \
|
||||
-K _grub_mod_init -K _grub_mod_fini \
|
||||
-R .note.gnu.gold-version -R .note.GNU-stack \
|
||||
+ -R .gnu.build.attributes \
|
||||
+ -R .rel.gnu.build.attributes \
|
||||
+ -R .rela.gnu.build.attributes \
|
||||
+ -R .eh_frame -R .rela.eh_frame -R .rel.eh_frame \
|
||||
-R .note -R .comment -R .ARM.exidx $tmpfile || exit 1
|
||||
fi
|
||||
if ! test -z "${TARGET_OBJ2ELF}"; then
|
@ -0,0 +1,41 @@
|
||||
From 25b2b22d5457b21ccd764c4e5af6ce37ba25b975 Mon Sep 17 00:00:00 2001
|
||||
From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
||||
Date: Thu, 1 Mar 2018 23:34:53 +0100
|
||||
Subject: [PATCH] ieee1275: Fix crash in of_path_of_nvme when of_path is empty
|
||||
|
||||
The of_path_of_nvme function (commit 2391d57, ieee1275: add nvme
|
||||
support within ofpath) introduced a functional regression:
|
||||
|
||||
On systems which are not based on Open Firmware but have at
|
||||
least one NVME device, find_obppath will return NULL and thus
|
||||
trying to append the disk name to of_path will result in a
|
||||
crash.
|
||||
|
||||
The proper behavior of of_path_of_nvme is, however, to just
|
||||
return NULL in such cases, like other users of find_obppath,
|
||||
such as of_path_of_scsi.
|
||||
|
||||
Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
||||
Reviewed-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/linux/ofpath.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
|
||||
index 1c30e723305..61806212e83 100644
|
||||
--- a/grub-core/osdep/linux/ofpath.c
|
||||
+++ b/grub-core/osdep/linux/ofpath.c
|
||||
@@ -389,8 +389,11 @@ of_path_of_nvme(const char *sys_devname __attribute__((unused)),
|
||||
}
|
||||
|
||||
of_path = find_obppath (sysfs_path);
|
||||
+
|
||||
+ if (of_path)
|
||||
+ strcat (of_path, disk);
|
||||
+
|
||||
free (sysfs_path);
|
||||
- strcat (of_path, disk);
|
||||
return of_path;
|
||||
}
|
||||
|
47
0121-sparc64-Limit-nvme-of_path_of_nvme-to-just-SPARC.patch
Normal file
47
0121-sparc64-Limit-nvme-of_path_of_nvme-to-just-SPARC.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From f35826423ed9e7618696c382e062de60bb655569 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Thu, 1 Mar 2018 19:25:09 -0800
|
||||
Subject: [PATCH] sparc64: Limit nvme of_path_of_nvme to just SPARC
|
||||
|
||||
Limit NVMe of_path_of_nvme to just SPARC hardware for now. It has been
|
||||
found that non-Open Firmware hardware platforms can some how access
|
||||
this function.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/linux/ofpath.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c
|
||||
index 61806212e83..a6153d35954 100644
|
||||
--- a/grub-core/osdep/linux/ofpath.c
|
||||
+++ b/grub-core/osdep/linux/ofpath.c
|
||||
@@ -350,6 +350,7 @@ of_path_of_ide(const char *sys_devname __attribute__((unused)), const char *devi
|
||||
return ret;
|
||||
}
|
||||
|
||||
+#ifdef __sparc__
|
||||
static char *
|
||||
of_path_of_nvme(const char *sys_devname __attribute__((unused)),
|
||||
const char *device,
|
||||
@@ -396,6 +397,7 @@ of_path_of_nvme(const char *sys_devname __attribute__((unused)),
|
||||
free (sysfs_path);
|
||||
return of_path;
|
||||
}
|
||||
+#endif
|
||||
|
||||
static int
|
||||
vendor_is_ATA(const char *path)
|
||||
@@ -728,9 +730,11 @@ grub_util_devname_to_ofpath (const char *sys_devname)
|
||||
/* All the models I've seen have a devalias "floppy".
|
||||
New models have no floppy at all. */
|
||||
ofpath = xstrdup ("floppy");
|
||||
+#ifdef __sparc__
|
||||
else if (device[0] == 'n' && device[1] == 'v' && device[2] == 'm'
|
||||
&& device[3] == 'e')
|
||||
ofpath = of_path_of_nvme (name_buf, device, devnode, devicenode);
|
||||
+#endif
|
||||
else
|
||||
{
|
||||
grub_util_warn (_("unknown device type %s"), device);
|
94
0122-ieee1275-decode-unit-command-for-4-addr-cell-devs.patch
Normal file
94
0122-ieee1275-decode-unit-command-for-4-addr-cell-devs.patch
Normal file
@ -0,0 +1,94 @@
|
||||
From 6003eb2feabdae1a79b496c3d010b6d1363f1fac Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:14 -0800
|
||||
Subject: [PATCH] ieee1275: decode-unit command for 4 addr cell devs
|
||||
|
||||
decode-unit ( addr len -- phys.lo ... phys.hi )
|
||||
|
||||
Convert text unit-string to physical address.
|
||||
|
||||
Convert unit-string, the text string representation, to phys.lo ... phys.hi,
|
||||
the numerical representation of a physical address within the address space
|
||||
defined by this device node. The number of cells in the list
|
||||
phys.lo ... phys.hi is determined by the value of the #address-cells
|
||||
property of this node.
|
||||
|
||||
This function is for devices with #address-cells == 4
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/ieee1275.c | 41 ++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 7 ++++++-
|
||||
2 files changed, 47 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c
|
||||
index 98217029f45..b0ac6f9f9a8 100644
|
||||
--- a/grub-core/kern/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/ieee1275/ieee1275.c
|
||||
@@ -482,6 +482,47 @@ grub_ieee1275_close (grub_ieee1275_ihandle_t ihandle)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+int
|
||||
+grub_ieee1275_decode_unit4 (grub_ieee1275_ihandle_t ihandle,
|
||||
+ void *addr, grub_size_t size,
|
||||
+ grub_uint32_t *phy_lo, grub_uint32_t *phy_hi,
|
||||
+ grub_uint32_t *lun_lo, grub_uint32_t *lun_hi)
|
||||
+{
|
||||
+ struct decode_args
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t size;
|
||||
+ grub_ieee1275_cell_t addr;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ grub_ieee1275_cell_t tgt_h;
|
||||
+ grub_ieee1275_cell_t tgt_l;
|
||||
+ grub_ieee1275_cell_t lun_h;
|
||||
+ grub_ieee1275_cell_t lun_l;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 4, 5);
|
||||
+ args.method = (grub_ieee1275_cell_t) "decode-unit";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.size = size;
|
||||
+ args.addr = (grub_ieee1275_cell_t) addr;
|
||||
+ args.catch_result = 1;
|
||||
+
|
||||
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.catch_result))
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_OUT_OF_RANGE, "decode-unit failed\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ *phy_lo = args.tgt_l;
|
||||
+ *phy_hi = args.tgt_h;
|
||||
+ *lun_lo = args.lun_l;
|
||||
+ *lun_hi = args.lun_h;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int
|
||||
grub_ieee1275_claim (grub_addr_t addr, grub_size_t size, unsigned int align,
|
||||
grub_addr_t *result)
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 8e425130327..534406458b2 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -210,7 +210,12 @@ int EXPORT_FUNC(grub_ieee1275_set_property) (grub_ieee1275_phandle_t phandle,
|
||||
int EXPORT_FUNC(grub_ieee1275_set_color) (grub_ieee1275_ihandle_t ihandle,
|
||||
int index, int r, int g, int b);
|
||||
int EXPORT_FUNC(grub_ieee1275_milliseconds) (grub_uint32_t *msecs);
|
||||
-
|
||||
+int EXPORT_FUNC(grub_ieee1275_decode_unit4) (grub_ieee1275_ihandle_t ihandle,
|
||||
+ void *addr, grub_size_t size,
|
||||
+ grub_uint32_t *phy_lo,
|
||||
+ grub_uint32_t *phy_hi,
|
||||
+ grub_uint32_t *lun_lo,
|
||||
+ grub_uint32_t *lun_hi);
|
||||
|
||||
grub_err_t EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
|
||||
|
102
0123-ieee1275-encode-unit-command-for-4-addr-cell-devs.patch
Normal file
102
0123-ieee1275-encode-unit-command-for-4-addr-cell-devs.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From 820c64e4c002090bcd9df10ab79d5851b28ac503 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:15 -0800
|
||||
Subject: [PATCH] ieee1275: encode-unit command for 4 addr cell devs
|
||||
|
||||
Convert physical address to text unit-string.
|
||||
|
||||
Convert phys.lo ... phys-high, the numerical representation, to unit-string,
|
||||
the text string representation of a physical address within the address
|
||||
space defined by this device node. The number of cells in the list
|
||||
phys.lo ... phys.hi is determined by the value of the #address-cells property
|
||||
of this node.
|
||||
|
||||
This function is for devices with #address-cells == 4
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/ieee1275.c | 45 ++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 6 +++++
|
||||
2 files changed, 51 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c
|
||||
index b0ac6f9f9a8..41503ead090 100644
|
||||
--- a/grub-core/kern/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/ieee1275/ieee1275.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <grub/ieee1275/ieee1275.h>
|
||||
#include <grub/types.h>
|
||||
+#include <grub/misc.h>
|
||||
|
||||
#define IEEE1275_PHANDLE_INVALID ((grub_ieee1275_cell_t) -1)
|
||||
#define IEEE1275_IHANDLE_INVALID ((grub_ieee1275_cell_t) 0)
|
||||
@@ -523,6 +524,50 @@ grub_ieee1275_decode_unit4 (grub_ieee1275_ihandle_t ihandle,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+char *
|
||||
+grub_ieee1275_encode_uint4 (grub_ieee1275_ihandle_t ihandle,
|
||||
+ grub_uint32_t phy_lo, grub_uint32_t phy_hi,
|
||||
+ grub_uint32_t lun_lo, grub_uint32_t lun_hi,
|
||||
+ grub_size_t *size)
|
||||
+{
|
||||
+ char *addr;
|
||||
+ struct encode_args
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t tgt_h;
|
||||
+ grub_ieee1275_cell_t tgt_l;
|
||||
+ grub_ieee1275_cell_t lun_h;
|
||||
+ grub_ieee1275_cell_t lun_l;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ grub_ieee1275_cell_t size;
|
||||
+ grub_ieee1275_cell_t addr;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 6, 3);
|
||||
+ args.method = (grub_ieee1275_cell_t) "encode-unit";
|
||||
+ args.ihandle = ihandle;
|
||||
+
|
||||
+ args.tgt_l = phy_lo;
|
||||
+ args.tgt_h = phy_hi;
|
||||
+ args.lun_l = lun_lo;
|
||||
+ args.lun_h = lun_hi;
|
||||
+ args.catch_result = 1;
|
||||
+
|
||||
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.catch_result))
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_OUT_OF_RANGE, "encode-unit failed\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ addr = (void *)args.addr;
|
||||
+ *size = args.size;
|
||||
+ addr = grub_strdup ((char *)args.addr);
|
||||
+ return addr;
|
||||
+}
|
||||
+
|
||||
int
|
||||
grub_ieee1275_claim (grub_addr_t addr, grub_size_t size, unsigned int align,
|
||||
grub_addr_t *result)
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 534406458b2..c93a97e695e 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -216,6 +216,12 @@ int EXPORT_FUNC(grub_ieee1275_decode_unit4) (grub_ieee1275_ihandle_t ihandle,
|
||||
grub_uint32_t *phy_hi,
|
||||
grub_uint32_t *lun_lo,
|
||||
grub_uint32_t *lun_hi);
|
||||
+char *EXPORT_FUNC(grub_ieee1275_encode_uint4) (grub_ieee1275_ihandle_t ihandle,
|
||||
+ grub_uint32_t phy_lo,
|
||||
+ grub_uint32_t phy_hi,
|
||||
+ grub_uint32_t lun_lo,
|
||||
+ grub_uint32_t lun_hi,
|
||||
+ grub_size_t *size);
|
||||
|
||||
grub_err_t EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
|
||||
|
87
0124-ieee1275-set-address-bus-specific-method.patch
Normal file
87
0124-ieee1275-set-address-bus-specific-method.patch
Normal file
@ -0,0 +1,87 @@
|
||||
From f02037afe363f31218b4e0c63ef3a1176f51c232 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:16 -0800
|
||||
Subject: [PATCH] ieee1275: set-address bus specific method
|
||||
|
||||
IEEE 1275-1994 Standard for Boot (Initialization Configuration)
|
||||
Firmware: Core Requirements and Practices
|
||||
E.3.2.2 Bus-specific methods for bus nodes
|
||||
|
||||
A package implementing the scsi-2 device type shall implement the
|
||||
following bus-specific method:
|
||||
|
||||
set-address ( unit# target# -- )
|
||||
Sets the SCSI target number (0x0..0xf) and unit number (0..7) to which
|
||||
subsequent commands apply.
|
||||
|
||||
This function is for devices with #address-cells == 2
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/ieee1275.c | 40 ++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 3 +++
|
||||
2 files changed, 43 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c
|
||||
index 41503ead090..497f170fb6b 100644
|
||||
--- a/grub-core/kern/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/ieee1275/ieee1275.c
|
||||
@@ -693,3 +693,43 @@ grub_ieee1275_milliseconds (grub_uint32_t *msecs)
|
||||
*msecs = args.msecs;
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+int
|
||||
+grub_ieee1275_set_address (grub_ieee1275_ihandle_t ihandle,
|
||||
+ grub_uint32_t target, grub_uint32_t lun)
|
||||
+{
|
||||
+ struct set_address
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t tgt;
|
||||
+ grub_ieee1275_cell_t lun;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 4, 1);
|
||||
+
|
||||
+ /*
|
||||
+ * IEEE 1275-1994 Standard for Boot (Initialization Configuration)
|
||||
+ * Firmware: Core Requirements and Practices
|
||||
+ * E.3.2.2 Bus-specific methods for bus nodes
|
||||
+ *
|
||||
+ * A package implementing the scsi-2 device type shall implement the
|
||||
+ * following bus-specific method:
|
||||
+ *
|
||||
+ * set-address ( unit# target# -- )
|
||||
+ * Sets the SCSI target number (0x0..0xf) and unit number (0..7) to which
|
||||
+ * subsequent commands apply.
|
||||
+ */
|
||||
+ args.method = (grub_ieee1275_cell_t) "set-address";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.tgt = target;
|
||||
+ args.lun = lun;
|
||||
+
|
||||
+ if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
|
||||
+ return -1;
|
||||
+
|
||||
+ return args.catch_result;
|
||||
+}
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index c93a97e695e..55e920e816f 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -210,6 +210,9 @@ int EXPORT_FUNC(grub_ieee1275_set_property) (grub_ieee1275_phandle_t phandle,
|
||||
int EXPORT_FUNC(grub_ieee1275_set_color) (grub_ieee1275_ihandle_t ihandle,
|
||||
int index, int r, int g, int b);
|
||||
int EXPORT_FUNC(grub_ieee1275_milliseconds) (grub_uint32_t *msecs);
|
||||
+int EXPORT_FUNC(grub_ieee1275_set_address) (grub_ieee1275_ihandle_t ihandle,
|
||||
+ grub_uint32_t target,
|
||||
+ grub_uint32_t lun);
|
||||
int EXPORT_FUNC(grub_ieee1275_decode_unit4) (grub_ieee1275_ihandle_t ihandle,
|
||||
void *addr, grub_size_t size,
|
||||
grub_uint32_t *phy_lo,
|
105
0125-ieee1275-no-data-command-bus-specific-method.patch
Normal file
105
0125-ieee1275-no-data-command-bus-specific-method.patch
Normal file
@ -0,0 +1,105 @@
|
||||
From c422bb60193512663c4854ee1ac6c1217f5e3178 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Date: Mon, 5 Mar 2018 15:11:18 +0100
|
||||
Subject: [PATCH] ieee1275: no-data-command bus specific method
|
||||
|
||||
IEEE 1275-1994 Standard for Boot (Initialization Configuration)
|
||||
Firmware: Core Requirements and Practices
|
||||
|
||||
E.3.2.2 Bus-specific methods for bus nodes
|
||||
|
||||
A package implementing the scsi-2 device type shall implement the
|
||||
following bus-specific method:
|
||||
|
||||
no-data-command ( cmd-addr -- error? )
|
||||
Executes a simple SCSI command, automatically retrying under
|
||||
certain conditions. cmd-addr is the address of a 6-byte command buffer
|
||||
containing an SCSI command that does not have a data transfer phase.
|
||||
Executes the command, retrying indefinitely with the same retry criteria
|
||||
as retry-command.
|
||||
|
||||
error? is nonzero if an error occurred, zero otherwise.
|
||||
NOTE no-data-command is a convenience function. It provides
|
||||
no capabilities that are not present in retry-command, but for
|
||||
those commands that meet its restrictions, it is easier to use.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/ieee1275.c | 51 ++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 3 +++
|
||||
2 files changed, 54 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c
|
||||
index 497f170fb6b..cd2dead832d 100644
|
||||
--- a/grub-core/kern/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/ieee1275/ieee1275.c
|
||||
@@ -733,3 +733,54 @@ grub_ieee1275_set_address (grub_ieee1275_ihandle_t ihandle,
|
||||
|
||||
return args.catch_result;
|
||||
}
|
||||
+
|
||||
+int
|
||||
+grub_ieee1275_no_data_command (grub_ieee1275_ihandle_t ihandle,
|
||||
+ const void *cmd_addr, grub_ssize_t *result)
|
||||
+{
|
||||
+ struct set_address
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t cmd_addr;
|
||||
+ grub_ieee1275_cell_t error;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 3, 2);
|
||||
+
|
||||
+ /*
|
||||
+ * IEEE 1275-1994 Standard for Boot (Initialization Configuration)
|
||||
+ * Firmware: Core Requirements and Practices
|
||||
+ *
|
||||
+ * E.3.2.2 Bus-specific methods for bus nodes
|
||||
+ *
|
||||
+ * A package implementing the scsi-2 device type shall implement the
|
||||
+ * following bus-specific method:
|
||||
+ *
|
||||
+ * no-data-command ( cmd-addr -- error? )
|
||||
+ * Executes a simple SCSI command, automatically retrying under
|
||||
+ * certain conditions. cmd-addr is the address of a 6-byte command buffer
|
||||
+ * containing an SCSI command that does not have a data transfer phase.
|
||||
+ * Executes the command, retrying indefinitely with the same retry criteria
|
||||
+ * as retry-command.
|
||||
+ *
|
||||
+ * error? is nonzero if an error occurred, zero otherwise.
|
||||
+ * NOTE no-data-command is a convenience function. It provides
|
||||
+ * no capabilities that are not present in retry-command, but for
|
||||
+ * those commands that meet its restrictions, it is easier to use.
|
||||
+ */
|
||||
+ args.method = (grub_ieee1275_cell_t) "no-data-command";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.cmd_addr = (grub_ieee1275_cell_t) cmd_addr;
|
||||
+
|
||||
+ if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (result)
|
||||
+ *result = args.error;
|
||||
+
|
||||
+ return args.catch_result;
|
||||
+}
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 55e920e816f..6dfb57b8bf8 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -213,6 +213,9 @@ int EXPORT_FUNC(grub_ieee1275_milliseconds) (grub_uint32_t *msecs);
|
||||
int EXPORT_FUNC(grub_ieee1275_set_address) (grub_ieee1275_ihandle_t ihandle,
|
||||
grub_uint32_t target,
|
||||
grub_uint32_t lun);
|
||||
+int EXPORT_FUNC(grub_ieee1275_no_data_command) (grub_ieee1275_ihandle_t ihandle,
|
||||
+ const void *cmd_addr,
|
||||
+ grub_ssize_t *result);
|
||||
int EXPORT_FUNC(grub_ieee1275_decode_unit4) (grub_ieee1275_ihandle_t ihandle,
|
||||
void *addr, grub_size_t size,
|
||||
grub_uint32_t *phy_lo,
|
67
0126-ieee1275-block-size-deblocker-support-method.patch
Normal file
67
0126-ieee1275-block-size-deblocker-support-method.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From ad6d8f5063a272e2f1e4857751db70058b977239 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:18 -0800
|
||||
Subject: [PATCH] ieee1275: block-size deblocker support method
|
||||
|
||||
IEEE Std 1275-1994 Standard for Boot (Initialization Configuration)
|
||||
Firmware: Core Requirements and Practices
|
||||
|
||||
3.8.3 deblocker support package
|
||||
|
||||
Any package that uses the "deblocker" support package must define
|
||||
the following method, which the deblocker uses as a low-level
|
||||
interface to the device
|
||||
|
||||
block-size ( -- block-len ) Return "granularity" for accesses to this
|
||||
device.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/ieee1275.c | 23 +++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 1 +
|
||||
2 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c
|
||||
index cd2dead832d..86f81a3c467 100644
|
||||
--- a/grub-core/kern/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/ieee1275/ieee1275.c
|
||||
@@ -784,3 +784,26 @@ grub_ieee1275_no_data_command (grub_ieee1275_ihandle_t ihandle,
|
||||
|
||||
return args.catch_result;
|
||||
}
|
||||
+
|
||||
+int
|
||||
+grub_ieee1275_get_block_size (grub_ieee1275_ihandle_t ihandle)
|
||||
+{
|
||||
+ struct size_args_ieee1275
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t result;
|
||||
+ grub_ieee1275_cell_t size;
|
||||
+ } args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 2, 2);
|
||||
+ args.method = (grub_ieee1275_cell_t) "block-size";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.result = 1;
|
||||
+
|
||||
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.result))
|
||||
+ return 0;
|
||||
+
|
||||
+ return args.size;
|
||||
+}
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 6dfb57b8bf8..d0dc2746ead 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -228,6 +228,7 @@ char *EXPORT_FUNC(grub_ieee1275_encode_uint4) (grub_ieee1275_ihandle_t ihandle,
|
||||
grub_uint32_t lun_lo,
|
||||
grub_uint32_t lun_hi,
|
||||
grub_size_t *size);
|
||||
+int EXPORT_FUNC(grub_ieee1275_get_block_size) (grub_ieee1275_ihandle_t ihandle);
|
||||
|
||||
grub_err_t EXPORT_FUNC(grub_claimmap) (grub_addr_t addr, grub_size_t size);
|
||||
|
72
0127-sparc64-blocks-disk-node-method.patch
Normal file
72
0127-sparc64-blocks-disk-node-method.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From ab4c93cb4bb443620e141cc70f274b89a51a1d05 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:19 -0800
|
||||
Subject: [PATCH] sparc64: #blocks disk node method
|
||||
|
||||
Return the number of blocks of storage associated with the device or
|
||||
instance. Where a "block" is a unit of storage consisting of the number
|
||||
of bytes returned by the package's "block-size" method. If the size cannot
|
||||
be determined, the #blocks method returns the maximum unsigned integer
|
||||
(which, because of Open Firmware's assumption of two's complement arithmetic,
|
||||
is equivalent to the signed number -1). If the number of blocks exceeds
|
||||
the range of an unsigned number, return 0 to alert the caller to try
|
||||
the #blocks64 command.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/sparc64/ieee1275/ieee1275.c | 31 ++++++++++++++++++++++++++++++
|
||||
include/grub/sparc64/ieee1275/ieee1275.h | 1 +
|
||||
2 files changed, 32 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/sparc64/ieee1275/ieee1275.c b/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
index 53be692c3d8..67933a45b35 100644
|
||||
--- a/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
@@ -89,3 +89,34 @@ grub_ieee1275_alloc_physmem (grub_addr_t *paddr, grub_size_t size,
|
||||
|
||||
return args.catch_result;
|
||||
}
|
||||
+
|
||||
+grub_uint64_t
|
||||
+grub_ieee1275_num_blocks (grub_ieee1275_ihandle_t ihandle)
|
||||
+{
|
||||
+ struct nblocks_args_ieee1275
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ grub_ieee1275_cell_t blocks;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 2, 2);
|
||||
+ args.method = (grub_ieee1275_cell_t) "#blocks";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.catch_result = 1;
|
||||
+
|
||||
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.catch_result != 0))
|
||||
+ return -1;
|
||||
+
|
||||
+ /*
|
||||
+ * If the number of blocks exceeds the range of an unsigned number,
|
||||
+ * return 0 to alert the caller to try the #blocks64 command.
|
||||
+ */
|
||||
+ if (args.blocks >= 0xffffffffULL)
|
||||
+ return 0;
|
||||
+
|
||||
+ return args.blocks;
|
||||
+}
|
||||
diff --git a/include/grub/sparc64/ieee1275/ieee1275.h b/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
index 32c77f80f1a..2ddf44d41df 100644
|
||||
--- a/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
@@ -42,6 +42,7 @@ extern int EXPORT_FUNC(grub_ieee1275_claim_vaddr) (grub_addr_t vaddr,
|
||||
extern int EXPORT_FUNC(grub_ieee1275_alloc_physmem) (grub_addr_t *paddr,
|
||||
grub_size_t size,
|
||||
grub_uint32_t align);
|
||||
+extern grub_uint64_t EXPORT_FUNC(grub_ieee1275_num_blocks) (grub_uint32_t ihandle);
|
||||
|
||||
extern grub_addr_t EXPORT_VAR (grub_ieee1275_original_stack);
|
||||
|
62
0128-sparc64-blocks64-disk-node-method.patch
Normal file
62
0128-sparc64-blocks64-disk-node-method.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From 599efeb6220d01e0b9788ba796849f945ec0d4c1 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Mon, 26 Feb 2018 17:34:20 -0800
|
||||
Subject: [PATCH] sparc64: #blocks64 disk node method
|
||||
|
||||
Return the 64bit number of blocks of storage associated with the device or
|
||||
instance. Where a "block" is a unit of storage consisting of the number of
|
||||
bytes returned by the package's "block-size" method. If the size cannot be
|
||||
determined, or if the number of blocks exceeds the range return -1.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/sparc64/ieee1275/ieee1275.c | 25 +++++++++++++++++++++++++
|
||||
include/grub/sparc64/ieee1275/ieee1275.h | 1 +
|
||||
2 files changed, 26 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/sparc64/ieee1275/ieee1275.c b/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
index 67933a45b35..5a59aaf0619 100644
|
||||
--- a/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
+++ b/grub-core/kern/sparc64/ieee1275/ieee1275.c
|
||||
@@ -120,3 +120,28 @@ grub_ieee1275_num_blocks (grub_ieee1275_ihandle_t ihandle)
|
||||
|
||||
return args.blocks;
|
||||
}
|
||||
+
|
||||
+grub_uint64_t
|
||||
+grub_ieee1275_num_blocks64 (grub_ieee1275_ihandle_t ihandle)
|
||||
+{
|
||||
+ struct nblocks_args_ieee1275
|
||||
+ {
|
||||
+ struct grub_ieee1275_common_hdr common;
|
||||
+ grub_ieee1275_cell_t method;
|
||||
+ grub_ieee1275_cell_t ihandle;
|
||||
+ grub_ieee1275_cell_t catch_result;
|
||||
+ grub_ieee1275_cell_t hi_blocks;
|
||||
+ grub_ieee1275_cell_t lo_blocks;
|
||||
+ }
|
||||
+ args;
|
||||
+
|
||||
+ INIT_IEEE1275_COMMON (&args.common, "call-method", 2, 3);
|
||||
+ args.method = (grub_ieee1275_cell_t) "#blocks64";
|
||||
+ args.ihandle = ihandle;
|
||||
+ args.catch_result = 1;
|
||||
+
|
||||
+ if ((IEEE1275_CALL_ENTRY_FN (&args) == -1) || (args.catch_result != 0))
|
||||
+ return -1;
|
||||
+
|
||||
+ return ((args.hi_blocks << 32) | (args.lo_blocks));
|
||||
+}
|
||||
diff --git a/include/grub/sparc64/ieee1275/ieee1275.h b/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
index 2ddf44d41df..4b18468d8d6 100644
|
||||
--- a/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/sparc64/ieee1275/ieee1275.h
|
||||
@@ -43,6 +43,7 @@ extern int EXPORT_FUNC(grub_ieee1275_alloc_physmem) (grub_addr_t *paddr,
|
||||
grub_size_t size,
|
||||
grub_uint32_t align);
|
||||
extern grub_uint64_t EXPORT_FUNC(grub_ieee1275_num_blocks) (grub_uint32_t ihandle);
|
||||
+extern grub_uint64_t EXPORT_FUNC(grub_ieee1275_num_blocks64) (grub_uint32_t ihandle);
|
||||
|
||||
extern grub_addr_t EXPORT_VAR (grub_ieee1275_original_stack);
|
||||
|
@ -0,0 +1,33 @@
|
||||
From d73badfd0aa6683212136e8d6ef439070176722b Mon Sep 17 00:00:00 2001
|
||||
From: dann frazier <dann.frazier@canonical.com>
|
||||
Date: Fri, 2 Mar 2018 10:02:19 -0700
|
||||
Subject: [PATCH] Revert "Keep the native terminal active when enabling
|
||||
gfxterm"
|
||||
|
||||
This can cause an issue where GRUB is trying to display both a text and
|
||||
graphical menu on the display at the same time, resulting in a flickering
|
||||
effect when e.g. scrolling quickly through a menu (LP: #1752767).
|
||||
|
||||
Revert for now while we look for a better solution for the original issue.
|
||||
|
||||
This reverts commit 52ef7b23f528ce844716661d586497a177e80d5b.
|
||||
|
||||
Signed-off-by: dann frazier <dann.frazier@canonical.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub.d/00_header.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
|
||||
index 8d46fc973c1..93a90233ead 100644
|
||||
--- a/util/grub.d/00_header.in
|
||||
+++ b/util/grub.d/00_header.in
|
||||
@@ -221,7 +221,7 @@ case x${GRUB_TERMINAL_OUTPUT} in
|
||||
;;
|
||||
x*)
|
||||
cat << EOF
|
||||
-terminal_output --append ${GRUB_TERMINAL_OUTPUT}
|
||||
+terminal_output ${GRUB_TERMINAL_OUTPUT}
|
||||
EOF
|
||||
;;
|
||||
esac
|
@ -0,0 +1,36 @@
|
||||
From 28b0d19061d66e3633148ac8e44decda914bf266 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Tue, 6 Mar 2018 13:38:58 -0800
|
||||
Subject: [PATCH] mkimage: fix build regression in grub_mkimage_load_image
|
||||
|
||||
The grub_mkimage_load_image function (commit 7542af6, mkimage: refactor a bunch
|
||||
of section data into a struct.) introduces a build regression on SPARC:
|
||||
|
||||
cc1: warnings being treated as errors
|
||||
In file included from util/grub-mkimage32.c:23:
|
||||
util/grub-mkimagexx.c: In function 'grub_mkimage_load_image32':
|
||||
util/grub-mkimagexx.c:1968: error: missing initializer
|
||||
util/grub-mkimagexx.c:1968: error: (near initialization for 'smd.sections')
|
||||
make[2]: *** [util/grub_mkimage-grub-mkimage32.o] Error 1
|
||||
|
||||
Initialize the entire section_metadata structure.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-mkimagexx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
|
||||
index 11d05d7a8ec..a483c674c49 100644
|
||||
--- a/util/grub-mkimagexx.c
|
||||
+++ b/util/grub-mkimagexx.c
|
||||
@@ -1965,7 +1965,7 @@ SUFFIX (grub_mkimage_load_image) (const char *kernel_path,
|
||||
const struct grub_install_image_target_desc *image_target)
|
||||
{
|
||||
char *kernel_img, *out_img;
|
||||
- struct section_metadata smd = { 0, };
|
||||
+ struct section_metadata smd = { 0, 0, 0, 0, 0, 0, 0 };
|
||||
Elf_Ehdr *e;
|
||||
int i;
|
||||
Elf_Shdr *s;
|
174
0131-grub-mkconfig-10_linux-Support-multiple-early-initrd.patch
Normal file
174
0131-grub-mkconfig-10_linux-Support-multiple-early-initrd.patch
Normal file
@ -0,0 +1,174 @@
|
||||
From a698240df0c43278b2d1d7259c8e7a6926c63112 Mon Sep 17 00:00:00 2001
|
||||
From: "Matthew S. Turnbull" <sparky@bluefang-logic.com>
|
||||
Date: Sat, 24 Feb 2018 17:44:58 -0500
|
||||
Subject: [PATCH] grub-mkconfig/10_linux: Support multiple early initrd images
|
||||
|
||||
Add support for multiple, shared, early initrd images. These early
|
||||
images will be loaded in the order declared, and all will be loaded
|
||||
before the initrd image.
|
||||
|
||||
While many classes of data can be provided by early images, the
|
||||
immediate use case would be for distributions to provide CPU
|
||||
microcode to mitigate the Meltdown and Spectre vulnerabilities.
|
||||
|
||||
There are two environment variables provided for declaring the early
|
||||
images.
|
||||
|
||||
* GRUB_EARLY_INITRD_LINUX_STOCK is for the distribution declare
|
||||
images that are provided by the distribution or installed packages.
|
||||
If undeclared, this will default to a set of common microcode image
|
||||
names.
|
||||
|
||||
* GRUB_EARLY_INITRD_LINUX_CUSTOM is for user created images. User
|
||||
images will be loaded after the stock images.
|
||||
|
||||
These separate configurations allow the distribution and user to
|
||||
declare different image sets without clobbering each other.
|
||||
|
||||
This also makes a minor update to ensure that UUID partition labels
|
||||
stay disabled when no initrd image is found, even if early images are
|
||||
present.
|
||||
|
||||
This is a continuation of a previous patch published by Christian
|
||||
Hesse in 2016:
|
||||
http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00025.html
|
||||
|
||||
Down stream Gentoo bug:
|
||||
https://bugs.gentoo.org/645088
|
||||
|
||||
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
|
||||
Signed-off-by: Matthew S. Turnbull <sparky@bluefang-logic.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
docs/grub.texi | 19 +++++++++++++++++++
|
||||
util/grub-mkconfig.in | 8 ++++++++
|
||||
util/grub.d/10_linux.in | 33 +++++++++++++++++++++++++++------
|
||||
3 files changed, 54 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 137b894fa09..65b4bbeda18 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -1398,6 +1398,25 @@ for all respectively normal entries.
|
||||
The values of these options replace the values of @samp{GRUB_CMDLINE_LINUX}
|
||||
and @samp{GRUB_CMDLINE_LINUX_DEFAULT} for Linux and Xen menu entries.
|
||||
|
||||
+@item GRUB_EARLY_INITRD_LINUX_CUSTOM
|
||||
+@itemx GRUB_EARLY_INITRD_LINUX_STOCK
|
||||
+List of space-separated early initrd images to be loaded from @samp{/boot}.
|
||||
+This is for loading things like CPU microcode, firmware, ACPI tables, crypto
|
||||
+keys, and so on. These early images will be loaded in the order declared,
|
||||
+and all will be loaded before the actual functional initrd image.
|
||||
+
|
||||
+@samp{GRUB_EARLY_INITRD_LINUX_STOCK} is for your distribution to declare
|
||||
+images that are provided by the distribution. It should not be modified
|
||||
+without understanding the consequences. They will be loaded first.
|
||||
+
|
||||
+@samp{GRUB_EARLY_INITRD_LINUX_CUSTOM} is for your custom created images.
|
||||
+
|
||||
+The default stock images are as follows, though they may be overridden by
|
||||
+your distribution:
|
||||
+@example
|
||||
+intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio
|
||||
+@end example
|
||||
+
|
||||
@item GRUB_DISABLE_LINUX_UUID
|
||||
Normally, @command{grub-mkconfig} will generate menu entries that use
|
||||
universally-unique identifiers (UUIDs) to identify the root filesystem to
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index f8496d28bdf..35ef583b05f 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -147,6 +147,12 @@ if [ x"$GRUB_FS" = xunknown ]; then
|
||||
GRUB_FS="$(stat -f --printf=%T / || echo unknown)"
|
||||
fi
|
||||
|
||||
+# Provide a default set of stock linux early initrd images.
|
||||
+# Define here so the list can be modified in the sourced config file.
|
||||
+if [ "x${GRUB_EARLY_INITRD_LINUX_STOCK}" = "x" ]; then
|
||||
+ GRUB_EARLY_INITRD_LINUX_STOCK="intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio"
|
||||
+fi
|
||||
+
|
||||
if test -f ${sysconfdir}/default/grub ; then
|
||||
. ${sysconfdir}/default/grub
|
||||
fi
|
||||
@@ -211,6 +217,8 @@ export GRUB_DEFAULT \
|
||||
GRUB_CMDLINE_NETBSD \
|
||||
GRUB_CMDLINE_NETBSD_DEFAULT \
|
||||
GRUB_CMDLINE_GNUMACH \
|
||||
+ GRUB_EARLY_INITRD_LINUX_CUSTOM \
|
||||
+ GRUB_EARLY_INITRD_LINUX_STOCK \
|
||||
GRUB_TERMINAL_INPUT \
|
||||
GRUB_TERMINAL_OUTPUT \
|
||||
GRUB_SERIAL_COMMAND \
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index de9044c7f28..faedf74e14e 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -136,9 +136,13 @@ EOF
|
||||
if test -n "${initrd}" ; then
|
||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||
message="$(gettext_printf "Loading initial ramdisk ...")"
|
||||
+ initrd_path=
|
||||
+ for i in ${initrd}; do
|
||||
+ initrd_path="${initrd_path} ${rel_dirname}/${i}"
|
||||
+ done
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
echo '$(echo "$message" | grub_quote)'
|
||||
- initrd ${rel_dirname}/${initrd}
|
||||
+ initrd $(echo $initrd_path)
|
||||
EOF
|
||||
fi
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
@@ -188,7 +192,15 @@ while [ "x$list" != "x" ] ; do
|
||||
alt_version=`echo $version | sed -e "s,\.old$,,g"`
|
||||
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
|
||||
|
||||
- initrd=
|
||||
+ initrd_early=
|
||||
+ for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
|
||||
+ ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
|
||||
+ if test -e "${dirname}/${i}" ; then
|
||||
+ initrd_early="${initrd_early} ${i}"
|
||||
+ fi
|
||||
+ done
|
||||
+
|
||||
+ initrd_real=
|
||||
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
|
||||
"initrd-${version}" "initramfs-${version}.img" \
|
||||
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
|
||||
@@ -198,11 +210,22 @@ while [ "x$list" != "x" ] ; do
|
||||
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
|
||||
"initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
|
||||
if test -e "${dirname}/${i}" ; then
|
||||
- initrd="$i"
|
||||
+ initrd_real="${i}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
+ initrd=
|
||||
+ if test -n "${initrd_early}" || test -n "${initrd_real}"; then
|
||||
+ initrd="${initrd_early} ${initrd_real}"
|
||||
+
|
||||
+ initrd_display=
|
||||
+ for i in ${initrd}; do
|
||||
+ initrd_display="${initrd_display} ${dirname}/${i}"
|
||||
+ done
|
||||
+ gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
|
||||
+ fi
|
||||
+
|
||||
config=
|
||||
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
|
||||
if test -e "${i}" ; then
|
||||
@@ -216,9 +239,7 @@ while [ "x$list" != "x" ] ; do
|
||||
initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
|
||||
fi
|
||||
|
||||
- if test -n "${initrd}" ; then
|
||||
- gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
|
||||
- elif test -z "${initramfs}" ; then
|
||||
+ if test -z "${initramfs}" && test -z "${initrd_real}" ; then
|
||||
# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
|
||||
# no initrd or builtin initramfs, it can't work here.
|
||||
linux_root_device_thisversion=${GRUB_DEVICE}
|
@ -0,0 +1,74 @@
|
||||
From c225298038f0e7e7ec2d783776fba880d9965f16 Mon Sep 17 00:00:00 2001
|
||||
From: "C. Masloch" <pushbx@38.de>
|
||||
Date: Thu, 1 Feb 2018 15:51:55 +0100
|
||||
Subject: [PATCH] chainloader: patch in BPB's sectors_per_track and num_heads
|
||||
|
||||
These fields must reflect the ROM-BIOS's geometry for CHS-based
|
||||
loaders to correctly load their next stage. Most loaders do not
|
||||
query the ROM-BIOS (Int13.08), relying on the BPB fields to hold
|
||||
the correct values already.
|
||||
|
||||
Tested with lDebug booted in qemu via grub2's
|
||||
FreeDOS direct loading support, refer to
|
||||
https://bitbucket.org/ecm/ldosboot + https://bitbucket.org/ecm/ldebug
|
||||
(For this test, lDebug's iniload.asm must be assembled with
|
||||
-D_QUERY_GEOMETRY=0 to leave the BPB values provided by grub.)
|
||||
|
||||
Signed-off-by: C. Masloch <pushbx@38.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/i386/pc/chainloader.c | 20 ++++++++++++++++++--
|
||||
1 file changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/i386/pc/chainloader.c b/grub-core/loader/i386/pc/chainloader.c
|
||||
index 18220b7aaab..ef3a322b78c 100644
|
||||
--- a/grub-core/loader/i386/pc/chainloader.c
|
||||
+++ b/grub-core/loader/i386/pc/chainloader.c
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include <grub/loader.h>
|
||||
#include <grub/machine/chainloader.h>
|
||||
+#include <grub/machine/biosdisk.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/file.h>
|
||||
#include <grub/err.h>
|
||||
@@ -86,9 +87,16 @@ grub_chainloader_unload (void)
|
||||
void
|
||||
grub_chainloader_patch_bpb (void *bs, grub_device_t dev, grub_uint8_t dl)
|
||||
{
|
||||
- grub_uint32_t part_start = 0;
|
||||
+ grub_uint32_t part_start = 0, heads = 0, sectors = 0;
|
||||
if (dev && dev->disk)
|
||||
- part_start = grub_partition_get_start (dev->disk->partition);
|
||||
+ {
|
||||
+ part_start = grub_partition_get_start (dev->disk->partition);
|
||||
+ if (dev->disk->data)
|
||||
+ {
|
||||
+ heads = ((struct grub_biosdisk_data *)(dev->disk->data))->heads;
|
||||
+ sectors = ((struct grub_biosdisk_data *)(dev->disk->data))->sectors;
|
||||
+ }
|
||||
+ }
|
||||
if (grub_memcmp ((char *) &((struct grub_ntfs_bpb *) bs)->oem_name,
|
||||
"NTFS", 4) == 0)
|
||||
{
|
||||
@@ -127,12 +135,20 @@ grub_chainloader_patch_bpb (void *bs, grub_device_t dev, grub_uint8_t dl)
|
||||
{
|
||||
bpb->num_hidden_sectors = grub_cpu_to_le32 (part_start);
|
||||
bpb->version_specific.fat12_or_fat16.num_ph_drive = dl;
|
||||
+ if (sectors)
|
||||
+ bpb->sectors_per_track = grub_cpu_to_le16 (sectors);
|
||||
+ if (heads)
|
||||
+ bpb->num_heads = grub_cpu_to_le16 (heads);
|
||||
return;
|
||||
}
|
||||
if (bpb->version_specific.fat32.sectors_per_fat_32)
|
||||
{
|
||||
bpb->num_hidden_sectors = grub_cpu_to_le32 (part_start);
|
||||
bpb->version_specific.fat32.num_ph_drive = dl;
|
||||
+ if (sectors)
|
||||
+ bpb->sectors_per_track = grub_cpu_to_le16 (sectors);
|
||||
+ if (heads)
|
||||
+ bpb->num_heads = grub_cpu_to_le16 (heads);
|
||||
return;
|
||||
}
|
||||
break;
|
100
0133-ieee1275-split-up-grub_machine_get_bootlocation.patch
Normal file
100
0133-ieee1275-split-up-grub_machine_get_bootlocation.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From e2faabacff9eccb80a75d7e00d810cdc26b5e866 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Thu, 8 Mar 2018 20:42:22 -0800
|
||||
Subject: [PATCH] ieee1275: split up grub_machine_get_bootlocation
|
||||
|
||||
Split up some of the functionality in grub_machine_get_bootlocation into
|
||||
grub_ieee1275_get_boot_dev. This will allow for code reuse in a follow on
|
||||
patch.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/init.c | 20 ++------------------
|
||||
grub-core/kern/ieee1275/openfw.c | 27 +++++++++++++++++++++++++++
|
||||
include/grub/ieee1275/ieee1275.h | 2 ++
|
||||
3 files changed, 31 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||
index 12590225eca..62dfb8a3bad 100644
|
||||
--- a/grub-core/kern/ieee1275/init.c
|
||||
+++ b/grub-core/kern/ieee1275/init.c
|
||||
@@ -94,28 +94,12 @@ void
|
||||
grub_machine_get_bootlocation (char **device, char **path)
|
||||
{
|
||||
char *bootpath;
|
||||
- grub_ssize_t bootpath_size;
|
||||
char *filename;
|
||||
char *type;
|
||||
|
||||
- if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath",
|
||||
- &bootpath_size)
|
||||
- || bootpath_size <= 0)
|
||||
- {
|
||||
- /* Should never happen. */
|
||||
- grub_printf ("/chosen/bootpath property missing!\n");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64);
|
||||
+ bootpath = grub_ieee1275_get_boot_dev ();
|
||||
if (! bootpath)
|
||||
- {
|
||||
- grub_print_error ();
|
||||
- return;
|
||||
- }
|
||||
- grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath,
|
||||
- (grub_size_t) bootpath_size + 1, 0);
|
||||
- bootpath[bootpath_size] = '\0';
|
||||
+ return;
|
||||
|
||||
/* Transform an OF device path to a GRUB path. */
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c
|
||||
index ddb778340e4..62929d983bf 100644
|
||||
--- a/grub-core/kern/ieee1275/openfw.c
|
||||
+++ b/grub-core/kern/ieee1275/openfw.c
|
||||
@@ -561,3 +561,30 @@ grub_ieee1275_canonicalise_devname (const char *path)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+char *
|
||||
+grub_ieee1275_get_boot_dev (void)
|
||||
+{
|
||||
+ char *bootpath;
|
||||
+ grub_ssize_t bootpath_size;
|
||||
+
|
||||
+ if (grub_ieee1275_get_property_length (grub_ieee1275_chosen, "bootpath",
|
||||
+ &bootpath_size)
|
||||
+ || bootpath_size <= 0)
|
||||
+ {
|
||||
+ /* Should never happen. */
|
||||
+ grub_printf ("/chosen/bootpath property missing!\n");
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ bootpath = (char *) grub_malloc ((grub_size_t) bootpath_size + 64);
|
||||
+ if (! bootpath)
|
||||
+ {
|
||||
+ grub_print_error ();
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", bootpath,
|
||||
+ (grub_size_t) bootpath_size + 1, 0);
|
||||
+ bootpath[bootpath_size] = '\0';
|
||||
+
|
||||
+ return bootpath;
|
||||
+}
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index d0dc2746ead..8868f3a756f 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -253,6 +253,8 @@ void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *al
|
||||
void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
|
||||
struct grub_ieee1275_devalias *alias);
|
||||
|
||||
+char *EXPORT_FUNC(grub_ieee1275_get_boot_dev) (void);
|
||||
+
|
||||
#define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));)
|
||||
|
||||
#define FOR_IEEE1275_DEVCHILDREN(devpath, alias) for (grub_ieee1275_children_first ((devpath), &(alias)); \
|
@ -0,0 +1,28 @@
|
||||
From 5ceb55b7a079cdaa61437f652e90bf2d1011ad0e Mon Sep 17 00:00:00 2001
|
||||
From: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Date: Wed, 14 Mar 2018 08:51:17 -0700
|
||||
Subject: [PATCH] ieee1275: NULL pointer dereference in
|
||||
grub_machine_get_bootlocation()
|
||||
|
||||
Read from NULL pointer canon in function grub_machine_get_bootlocation().
|
||||
Function grub_ieee1275_canonicalise_devname() may return NULL.
|
||||
|
||||
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/kern/ieee1275/init.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||
index 62dfb8a3bad..0d8ebf58b95 100644
|
||||
--- a/grub-core/kern/ieee1275/init.c
|
||||
+++ b/grub-core/kern/ieee1275/init.c
|
||||
@@ -110,6 +110,8 @@ grub_machine_get_bootlocation (char **device, char **path)
|
||||
char *ptr;
|
||||
dev = grub_ieee1275_get_aliasdevname (bootpath);
|
||||
canon = grub_ieee1275_canonicalise_devname (dev);
|
||||
+ if (! canon)
|
||||
+ return;
|
||||
ptr = canon + grub_strlen (canon) - 1;
|
||||
while (ptr > canon && (*ptr == ',' || *ptr == ':'))
|
||||
ptr--;
|
@ -0,0 +1,47 @@
|
||||
From a537d6501871c17a7e09289ab86aeda122138a91 Mon Sep 17 00:00:00 2001
|
||||
From: "mike.travis@hpe.com" <mike.travis@hpe.com>
|
||||
Date: Wed, 28 Mar 2018 11:42:18 -0500
|
||||
Subject: [PATCH] efi/uga: Fix PCIe LER when GRUB2 accesses non-enabled MMIO
|
||||
data from VGA
|
||||
|
||||
A GPU inserted into a PCIe I/O slot disappears during system startup.
|
||||
The problem centers around GRUB and a specific VGA init function in
|
||||
efi_uga.c. This causes an LER (Link Error Recorvery) because the MMIO
|
||||
memory has not been enabled before attempting access.
|
||||
|
||||
The fix is to add the same coding used in other VGA drivers, specifically
|
||||
to add a check to insure that it is indeed a VGA controller. And then
|
||||
enable the MMIO address space with the specific bits.
|
||||
|
||||
Signed-off-by: Mike Travis <mike.travis@hpe.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/video/efi_uga.c | 13 +++++++++++--
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/video/efi_uga.c b/grub-core/video/efi_uga.c
|
||||
index 464ede874da..044af1d20d3 100644
|
||||
--- a/grub-core/video/efi_uga.c
|
||||
+++ b/grub-core/video/efi_uga.c
|
||||
@@ -94,10 +94,19 @@ static int
|
||||
find_card (grub_pci_device_t dev, grub_pci_id_t pciid, void *data)
|
||||
{
|
||||
struct find_framebuf_ctx *ctx = data;
|
||||
- grub_pci_address_t addr;
|
||||
+ grub_pci_address_t addr, rcaddr;
|
||||
+ grub_uint32_t subclass;
|
||||
|
||||
addr = grub_pci_make_address (dev, GRUB_PCI_REG_CLASS);
|
||||
- if (grub_pci_read (addr) >> 24 == 0x3)
|
||||
+ subclass = (grub_pci_read (addr) >> 16) & 0xffff;
|
||||
+
|
||||
+ if (subclass != GRUB_PCI_CLASS_SUBCLASS_VGA)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Enable MEM address spaces */
|
||||
+ rcaddr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
||||
+ grub_pci_write_word (rcaddr, grub_pci_read_word (rcaddr) | GRUB_PCI_COMMAND_MEM_ENABLED);
|
||||
+
|
||||
{
|
||||
int i;
|
||||
|
69
0136-Fix-packed-not-aligned-error-on-GCC-8.patch
Normal file
69
0136-Fix-packed-not-aligned-error-on-GCC-8.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From 563b1da6e6ae7af46cc8354cadb5dab416989f0a Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Mon, 26 Mar 2018 16:52:34 +0800
|
||||
Subject: [PATCH] Fix packed-not-aligned error on GCC 8
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When building with GCC 8, there are several errors regarding packed-not-aligned.
|
||||
|
||||
./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned]
|
||||
|
||||
This patch fixes the build error by cleaning up the ambiguity of placing
|
||||
aligned structure in a packed one. In "struct grub_btrfs_time" and "struct
|
||||
grub_gpt_part_type", the aligned attribute seems to be superfluous, and also
|
||||
has to be packed, to ensure the structure is bit-to-bit mapped to the format
|
||||
laid on disk. I think we could blame to copy and paste error here for the
|
||||
mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as
|
||||
the name suggests. :)
|
||||
|
||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
Tested-by: Michael Chang <mchang@suse.com>
|
||||
Tested-by: Paul Menzel <paulepanter@users.sourceforge.net>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/fs/btrfs.c | 2 +-
|
||||
include/grub/efiemu/runtime.h | 2 +-
|
||||
include/grub/gpt_partition.h | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
|
||||
index 4849c1ceb65..be195448dbe 100644
|
||||
--- a/grub-core/fs/btrfs.c
|
||||
+++ b/grub-core/fs/btrfs.c
|
||||
@@ -175,7 +175,7 @@ struct grub_btrfs_time
|
||||
{
|
||||
grub_int64_t sec;
|
||||
grub_uint32_t nanosec;
|
||||
-} __attribute__ ((aligned (4)));
|
||||
+} GRUB_PACKED;
|
||||
|
||||
struct grub_btrfs_inode
|
||||
{
|
||||
diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
|
||||
index 9b6b729f4cc..36d2dedf47e 100644
|
||||
--- a/include/grub/efiemu/runtime.h
|
||||
+++ b/include/grub/efiemu/runtime.h
|
||||
@@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel
|
||||
|
||||
struct efi_variable
|
||||
{
|
||||
- grub_efi_guid_t guid;
|
||||
+ grub_efi_packed_guid_t guid;
|
||||
grub_uint32_t namelen;
|
||||
grub_uint32_t size;
|
||||
grub_efi_uint32_t attributes;
|
||||
diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
|
||||
index 1b32f6725a4..9668a68c30a 100644
|
||||
--- a/include/grub/gpt_partition.h
|
||||
+++ b/include/grub/gpt_partition.h
|
||||
@@ -28,7 +28,7 @@ struct grub_gpt_part_type
|
||||
grub_uint16_t data2;
|
||||
grub_uint16_t data3;
|
||||
grub_uint8_t data4[8];
|
||||
-} __attribute__ ((aligned(8)));
|
||||
+} GRUB_PACKED;
|
||||
typedef struct grub_gpt_part_type grub_gpt_part_type_t;
|
||||
|
||||
#define GRUB_GPT_PARTITION_TYPE_EMPTY \
|
1508
0137-fs-Add-F2FS-support.patch
Normal file
1508
0137-fs-Add-F2FS-support.patch
Normal file
File diff suppressed because it is too large
Load Diff
28
0138-diskboot-Trivial-correction-on-stale-comments.patch
Normal file
28
0138-diskboot-Trivial-correction-on-stale-comments.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 9dcac673ed08e874d883c6dc5af2017fb28eb3d5 Mon Sep 17 00:00:00 2001
|
||||
From: Cao jin <caoj.fnst@cn.fujitsu.com>
|
||||
Date: Wed, 11 Apr 2018 11:23:10 +0800
|
||||
Subject: [PATCH] diskboot: Trivial correction on stale comments
|
||||
|
||||
diskboot.img now is loaded at 0x8000 and is jumped to with 0:0x8000.
|
||||
|
||||
Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/boot/i386/pc/diskboot.S | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/boot/i386/pc/diskboot.S b/grub-core/boot/i386/pc/diskboot.S
|
||||
index 1ee4cf5b2e0..c1addc0df29 100644
|
||||
--- a/grub-core/boot/i386/pc/diskboot.S
|
||||
+++ b/grub-core/boot/i386/pc/diskboot.S
|
||||
@@ -37,8 +37,8 @@
|
||||
start:
|
||||
_start:
|
||||
/*
|
||||
- * _start is loaded at 0x2000 and is jumped to with
|
||||
- * CS:IP 0:0x2000 in kernel.
|
||||
+ * _start is loaded at 0x8000 and is jumped to with
|
||||
+ * CS:IP 0:0x8000 in kernel.
|
||||
*/
|
||||
|
||||
/*
|
177
0139-grub-install-Locale-depends-on-nls.patch
Normal file
177
0139-grub-install-Locale-depends-on-nls.patch
Normal file
@ -0,0 +1,177 @@
|
||||
From 3d8439da8c9a4acf9bc1c41b364ec6e1680ef052 Mon Sep 17 00:00:00 2001
|
||||
From: Olaf Hering <olaf@aepfle.de>
|
||||
Date: Fri, 13 Apr 2018 23:36:49 +0200
|
||||
Subject: [PATCH] grub-install: Locale depends on nls
|
||||
|
||||
With --disable-nls no locales exist.
|
||||
|
||||
Avoid runtime error by moving code that copies locales into its own
|
||||
function. Return early in case nls was disabled. That way the compiler
|
||||
will throw away unreachable code, no need to put preprocessor
|
||||
conditionals everywhere to avoid warnings about unused code.
|
||||
|
||||
Fix memleak by freeing srcf and dstf.
|
||||
Convert tabs to spaces in moved code.
|
||||
|
||||
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-install-common.c | 106 ++++++++++++++++++++++++---------------------
|
||||
1 file changed, 57 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
|
||||
index 9e3e358c96a..0a2e24a79f1 100644
|
||||
--- a/util/grub-install-common.c
|
||||
+++ b/util/grub-install-common.c
|
||||
@@ -592,6 +592,7 @@ copy_all (const char *srcd,
|
||||
grub_util_fd_closedir (d);
|
||||
}
|
||||
|
||||
+#if !(defined (GRUB_UTIL) && defined(ENABLE_NLS) && ENABLE_NLS)
|
||||
static const char *
|
||||
get_localedir (void)
|
||||
{
|
||||
@@ -646,6 +647,59 @@ copy_locales (const char *dstd)
|
||||
}
|
||||
grub_util_fd_closedir (d);
|
||||
}
|
||||
+#endif
|
||||
+
|
||||
+static void
|
||||
+grub_install_copy_nls(const char *src __attribute__ ((unused)),
|
||||
+ const char *dst __attribute__ ((unused)))
|
||||
+{
|
||||
+#if !(defined (GRUB_UTIL) && defined(ENABLE_NLS) && ENABLE_NLS)
|
||||
+ char *dst_locale;
|
||||
+
|
||||
+ dst_locale = grub_util_path_concat (2, dst, "locale");
|
||||
+ grub_install_mkdir_p (dst_locale);
|
||||
+ clean_grub_dir (dst_locale);
|
||||
+
|
||||
+ if (install_locales.is_default)
|
||||
+ {
|
||||
+ char *srcd = grub_util_path_concat (2, src, "po");
|
||||
+ copy_by_ext (srcd, dst_locale, ".mo", 0);
|
||||
+ copy_locales (dst_locale);
|
||||
+ free (srcd);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ size_t i;
|
||||
+ const char *locale_dir = get_localedir ();
|
||||
+
|
||||
+ for (i = 0; i < install_locales.n_entries; i++)
|
||||
+ {
|
||||
+ char *srcf = grub_util_path_concat_ext (3, src, "po",
|
||||
+ install_locales.entries[i],
|
||||
+ ".mo");
|
||||
+ char *dstf = grub_util_path_concat_ext (2, dst_locale,
|
||||
+ install_locales.entries[i],
|
||||
+ ".mo");
|
||||
+ if (grub_install_compress_file (srcf, dstf, 0))
|
||||
+ {
|
||||
+ free (srcf);
|
||||
+ free (dstf);
|
||||
+ continue;
|
||||
+ }
|
||||
+ free (srcf);
|
||||
+ srcf = grub_util_path_concat_ext (4, locale_dir,
|
||||
+ install_locales.entries[i],
|
||||
+ "LC_MESSAGES", PACKAGE, ".mo");
|
||||
+ if (grub_install_compress_file (srcf, dstf, 0) == 0)
|
||||
+ grub_util_error (_("cannot find locale `%s'"),
|
||||
+ install_locales.entries[i]);
|
||||
+ free (srcf);
|
||||
+ free (dstf);
|
||||
+ }
|
||||
+ }
|
||||
+ free (dst_locale);
|
||||
+#endif
|
||||
+}
|
||||
|
||||
static struct
|
||||
{
|
||||
@@ -731,7 +785,7 @@ grub_install_copy_files (const char *src,
|
||||
const char *dst,
|
||||
enum grub_install_plat platid)
|
||||
{
|
||||
- char *dst_platform, *dst_locale, *dst_fonts;
|
||||
+ char *dst_platform, *dst_fonts;
|
||||
const char *pkgdatadir = grub_util_get_pkgdatadir ();
|
||||
char *themes_dir;
|
||||
|
||||
@@ -742,13 +796,12 @@ grub_install_copy_files (const char *src,
|
||||
dst_platform = grub_util_path_concat (2, dst, platform);
|
||||
free (platform);
|
||||
}
|
||||
- dst_locale = grub_util_path_concat (2, dst, "locale");
|
||||
dst_fonts = grub_util_path_concat (2, dst, "fonts");
|
||||
grub_install_mkdir_p (dst_platform);
|
||||
- grub_install_mkdir_p (dst_locale);
|
||||
clean_grub_dir (dst);
|
||||
clean_grub_dir (dst_platform);
|
||||
- clean_grub_dir (dst_locale);
|
||||
+
|
||||
+ grub_install_copy_nls(src, dst);
|
||||
|
||||
if (install_modules.is_default)
|
||||
copy_by_ext (src, dst_platform, ".mod", 1);
|
||||
@@ -797,50 +850,6 @@ grub_install_copy_files (const char *src,
|
||||
free (dstf);
|
||||
}
|
||||
|
||||
- if (install_locales.is_default)
|
||||
- {
|
||||
- char *srcd = grub_util_path_concat (2, src, "po");
|
||||
- copy_by_ext (srcd, dst_locale, ".mo", 0);
|
||||
- copy_locales (dst_locale);
|
||||
- free (srcd);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- const char *locale_dir = get_localedir ();
|
||||
-
|
||||
- for (i = 0; i < install_locales.n_entries; i++)
|
||||
- {
|
||||
- char *srcf = grub_util_path_concat_ext (3, src,
|
||||
- "po",
|
||||
- install_locales.entries[i],
|
||||
- ".mo");
|
||||
- char *dstf = grub_util_path_concat_ext (2, dst_locale,
|
||||
- install_locales.entries[i],
|
||||
- ".mo");
|
||||
- if (grub_install_compress_file (srcf, dstf, 0))
|
||||
- {
|
||||
- free (srcf);
|
||||
- free (dstf);
|
||||
- continue;
|
||||
- }
|
||||
- free (srcf);
|
||||
- srcf = grub_util_path_concat_ext (4,
|
||||
- locale_dir,
|
||||
- install_locales.entries[i],
|
||||
- "LC_MESSAGES",
|
||||
- PACKAGE,
|
||||
- ".mo");
|
||||
- if (grub_install_compress_file (srcf, dstf, 0))
|
||||
- {
|
||||
- free (srcf);
|
||||
- free (dstf);
|
||||
- continue;
|
||||
- }
|
||||
- grub_util_error (_("cannot find locale `%s'"),
|
||||
- install_locales.entries[i]);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
if (install_themes.is_default)
|
||||
{
|
||||
install_themes.is_default = 0;
|
||||
@@ -903,7 +912,6 @@ grub_install_copy_files (const char *src,
|
||||
}
|
||||
|
||||
free (dst_platform);
|
||||
- free (dst_locale);
|
||||
free (dst_fonts);
|
||||
}
|
||||
|
63
0140-grub-probe-Centralize-GUID-prints.patch
Normal file
63
0140-grub-probe-Centralize-GUID-prints.patch
Normal file
@ -0,0 +1,63 @@
|
||||
From c2b86ae1fcd22d6d5d275306795c0645ca6cad3d Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Date: Mon, 16 Apr 2018 22:36:23 -0700
|
||||
Subject: [PATCH] grub-probe: Centralize GUID prints
|
||||
|
||||
Define print_gpt_guid(), so there is a central function for printing
|
||||
GUID strings. This change is a precursor for later patches which rely
|
||||
on this logic.
|
||||
|
||||
Signed-off-by: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-probe.c | 30 +++++++++++++++---------------
|
||||
1 file changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/util/grub-probe.c b/util/grub-probe.c
|
||||
index 8ac527d2f2a..21cb80fbe15 100644
|
||||
--- a/util/grub-probe.c
|
||||
+++ b/util/grub-probe.c
|
||||
@@ -129,6 +129,20 @@ get_targets_string (void)
|
||||
return str;
|
||||
}
|
||||
|
||||
+static int
|
||||
+print_gpt_guid (grub_gpt_part_guid_t guid)
|
||||
+{
|
||||
+ guid.data1 = grub_le_to_cpu32 (guid.data1);
|
||||
+ guid.data2 = grub_le_to_cpu16 (guid.data2);
|
||||
+ guid.data3 = grub_le_to_cpu16 (guid.data3);
|
||||
+
|
||||
+ return grub_printf ("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
||||
+ guid.data1, guid.data2, guid.data3, guid.data4[0],
|
||||
+ guid.data4[1], guid.data4[2], guid.data4[3],
|
||||
+ guid.data4[4], guid.data4[5], guid.data4[6],
|
||||
+ guid.data4[7]);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
do_print (const char *x, void *data)
|
||||
{
|
||||
@@ -641,21 +655,7 @@ probe (const char *path, char **device_names, char delim)
|
||||
|
||||
if (grub_disk_read (dev->disk, p->offset, p->index,
|
||||
sizeof (gptdata), &gptdata) == 0)
|
||||
- {
|
||||
- grub_gpt_part_type_t gpttype;
|
||||
- gpttype.data1 = grub_le_to_cpu32 (gptdata.type.data1);
|
||||
- gpttype.data2 = grub_le_to_cpu16 (gptdata.type.data2);
|
||||
- gpttype.data3 = grub_le_to_cpu16 (gptdata.type.data3);
|
||||
- grub_memcpy (gpttype.data4, gptdata.type.data4, 8);
|
||||
-
|
||||
- grub_printf ("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
||||
- gpttype.data1, gpttype.data2,
|
||||
- gpttype.data3, gpttype.data4[0],
|
||||
- gpttype.data4[1], gpttype.data4[2],
|
||||
- gpttype.data4[3], gpttype.data4[4],
|
||||
- gpttype.data4[5], gpttype.data4[6],
|
||||
- gpttype.data4[7]);
|
||||
- }
|
||||
+ print_gpt_guid(gptdata.type);
|
||||
dev->disk->partition = p;
|
||||
}
|
||||
putchar (delim);
|
95
0141-disk-Update-grub_gpt_partentry.patch
Normal file
95
0141-disk-Update-grub_gpt_partentry.patch
Normal file
@ -0,0 +1,95 @@
|
||||
From a16f4a822fb528944b5dd008f97e37e0ed19a515 Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Date: Mon, 16 Apr 2018 22:36:24 -0700
|
||||
Subject: [PATCH] disk: Update grub_gpt_partentry
|
||||
|
||||
Rename grub_gpt_part_type to grub_gpt_part_guid and update grub_gpt_partentry
|
||||
to use this type for both the partition type GUID string and the partition GUID
|
||||
string entries. This change ensures that the two GUID fields are handled more
|
||||
consistently and helps to simplify the changes needed to add Linux partition
|
||||
GUID support.
|
||||
|
||||
Signed-off-by: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/disk/ldm.c | 2 +-
|
||||
grub-core/partmap/gpt.c | 4 ++--
|
||||
util/grub-install.c | 2 +-
|
||||
include/grub/gpt_partition.h | 8 ++++----
|
||||
4 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/grub-core/disk/ldm.c b/grub-core/disk/ldm.c
|
||||
index 0f978ad0507..2a22d2d6c1c 100644
|
||||
--- a/grub-core/disk/ldm.c
|
||||
+++ b/grub-core/disk/ldm.c
|
||||
@@ -135,7 +135,7 @@ msdos_has_ldm_partition (grub_disk_t dsk)
|
||||
return has_ldm;
|
||||
}
|
||||
|
||||
-static const grub_gpt_part_type_t ldm_type = GRUB_GPT_PARTITION_TYPE_LDM;
|
||||
+static const grub_gpt_part_guid_t ldm_type = GRUB_GPT_PARTITION_TYPE_LDM;
|
||||
|
||||
/* Helper for gpt_ldm_sector. */
|
||||
static int
|
||||
diff --git a/grub-core/partmap/gpt.c b/grub-core/partmap/gpt.c
|
||||
index 83bcba77914..103f6796f39 100644
|
||||
--- a/grub-core/partmap/gpt.c
|
||||
+++ b/grub-core/partmap/gpt.c
|
||||
@@ -33,10 +33,10 @@ static grub_uint8_t grub_gpt_magic[8] =
|
||||
0x45, 0x46, 0x49, 0x20, 0x50, 0x41, 0x52, 0x54
|
||||
};
|
||||
|
||||
-static const grub_gpt_part_type_t grub_gpt_partition_type_empty = GRUB_GPT_PARTITION_TYPE_EMPTY;
|
||||
+static const grub_gpt_part_guid_t grub_gpt_partition_type_empty = GRUB_GPT_PARTITION_TYPE_EMPTY;
|
||||
|
||||
#ifdef GRUB_UTIL
|
||||
-static const grub_gpt_part_type_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT;
|
||||
+static const grub_gpt_part_guid_t grub_gpt_partition_type_bios_boot = GRUB_GPT_PARTITION_TYPE_BIOS_BOOT;
|
||||
#endif
|
||||
|
||||
/* 512 << 7 = 65536 byte sectors. */
|
||||
diff --git a/util/grub-install.c b/util/grub-install.c
|
||||
index 690f180c5f6..78d0138cb0a 100644
|
||||
--- a/util/grub-install.c
|
||||
+++ b/util/grub-install.c
|
||||
@@ -714,7 +714,7 @@ is_prep_partition (grub_device_t dev)
|
||||
if (grub_disk_read (dev->disk, p->offset, p->index,
|
||||
sizeof (gptdata), &gptdata) == 0)
|
||||
{
|
||||
- const grub_gpt_part_type_t template = {
|
||||
+ const grub_gpt_part_guid_t template = {
|
||||
grub_cpu_to_le32_compile_time (0x9e1a2d38),
|
||||
grub_cpu_to_le16_compile_time (0xc612),
|
||||
grub_cpu_to_le16_compile_time (0x4316),
|
||||
diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h
|
||||
index 9668a68c30a..7a93f43291c 100644
|
||||
--- a/include/grub/gpt_partition.h
|
||||
+++ b/include/grub/gpt_partition.h
|
||||
@@ -22,14 +22,14 @@
|
||||
#include <grub/types.h>
|
||||
#include <grub/partition.h>
|
||||
|
||||
-struct grub_gpt_part_type
|
||||
+struct grub_gpt_part_guid
|
||||
{
|
||||
grub_uint32_t data1;
|
||||
grub_uint16_t data2;
|
||||
grub_uint16_t data3;
|
||||
grub_uint8_t data4[8];
|
||||
} GRUB_PACKED;
|
||||
-typedef struct grub_gpt_part_type grub_gpt_part_type_t;
|
||||
+typedef struct grub_gpt_part_guid grub_gpt_part_guid_t;
|
||||
|
||||
#define GRUB_GPT_PARTITION_TYPE_EMPTY \
|
||||
{ 0x0, 0x0, 0x0, \
|
||||
@@ -70,8 +70,8 @@ struct grub_gpt_header
|
||||
|
||||
struct grub_gpt_partentry
|
||||
{
|
||||
- grub_gpt_part_type_t type;
|
||||
- grub_uint8_t guid[16];
|
||||
+ grub_gpt_part_guid_t type;
|
||||
+ grub_gpt_part_guid_t guid;
|
||||
grub_uint64_t start;
|
||||
grub_uint64_t end;
|
||||
grub_uint64_t attrib;
|
100
0142-grub-probe-Add-PARTUUID-detection-support.patch
Normal file
100
0142-grub-probe-Add-PARTUUID-detection-support.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From 0c0bcffc2378f7427f14f7f878b08ba8f1a1f508 Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Date: Mon, 16 Apr 2018 22:36:25 -0700
|
||||
Subject: [PATCH] grub-probe: Add PARTUUID detection support
|
||||
|
||||
Add PARTUUID detection support grub-probe for MBR and GPT partition schemes.
|
||||
|
||||
Signed-off-by: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub-probe.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 48 insertions(+)
|
||||
|
||||
diff --git a/util/grub-probe.c b/util/grub-probe.c
|
||||
index 21cb80fbe15..e45dbf9e049 100644
|
||||
--- a/util/grub-probe.c
|
||||
+++ b/util/grub-probe.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <grub/partition.h>
|
||||
#include <grub/msdos_partition.h>
|
||||
#include <grub/gpt_partition.h>
|
||||
+#include <grub/i386/pc/boot.h>
|
||||
#include <grub/emu/hostdisk.h>
|
||||
#include <grub/emu/getroot.h>
|
||||
#include <grub/term.h>
|
||||
@@ -62,6 +63,7 @@ enum {
|
||||
PRINT_DRIVE,
|
||||
PRINT_DEVICE,
|
||||
PRINT_PARTMAP,
|
||||
+ PRINT_PARTUUID,
|
||||
PRINT_ABSTRACTION,
|
||||
PRINT_CRYPTODISK_UUID,
|
||||
PRINT_HINT_STR,
|
||||
@@ -85,6 +87,7 @@ static const char *targets[] =
|
||||
[PRINT_DRIVE] = "drive",
|
||||
[PRINT_DEVICE] = "device",
|
||||
[PRINT_PARTMAP] = "partmap",
|
||||
+ [PRINT_PARTUUID] = "partuuid",
|
||||
[PRINT_ABSTRACTION] = "abstraction",
|
||||
[PRINT_CRYPTODISK_UUID] = "cryptodisk_uuid",
|
||||
[PRINT_HINT_STR] = "hints_string",
|
||||
@@ -181,6 +184,45 @@ probe_partmap (grub_disk_t disk, char delim)
|
||||
}
|
||||
}
|
||||
|
||||
+static void
|
||||
+probe_partuuid (grub_disk_t disk, char delim)
|
||||
+{
|
||||
+ grub_partition_t p = disk->partition;
|
||||
+
|
||||
+ /*
|
||||
+ * Nested partitions not supported for now.
|
||||
+ * Non-nested partitions must have disk->partition->parent == NULL
|
||||
+ */
|
||||
+ if (p && p->parent == NULL)
|
||||
+ {
|
||||
+ disk->partition = p->parent;
|
||||
+
|
||||
+ if (strcmp(p->partmap->name, "msdos") == 0)
|
||||
+ {
|
||||
+ /*
|
||||
+ * The partition GUID for MSDOS is the partition number (starting
|
||||
+ * with 1) prepended with the NT disk signature.
|
||||
+ */
|
||||
+ grub_uint32_t nt_disk_sig;
|
||||
+
|
||||
+ if (grub_disk_read (disk, 0, GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC,
|
||||
+ sizeof(nt_disk_sig), &nt_disk_sig) == 0)
|
||||
+ grub_printf ("%08x-%02x",
|
||||
+ grub_le_to_cpu32(nt_disk_sig), 1 + p->number);
|
||||
+ }
|
||||
+ else if (strcmp(p->partmap->name, "gpt") == 0)
|
||||
+ {
|
||||
+ struct grub_gpt_partentry gptdata;
|
||||
+
|
||||
+ if (grub_disk_read (disk, p->offset, p->index,
|
||||
+ sizeof(gptdata), &gptdata) == 0)
|
||||
+ print_gpt_guid(gptdata.guid);
|
||||
+ }
|
||||
+
|
||||
+ disk->partition = p;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void
|
||||
probe_cryptodisk_uuid (grub_disk_t disk, char delim)
|
||||
{
|
||||
@@ -635,6 +677,12 @@ probe (const char *path, char **device_names, char delim)
|
||||
/* Check if dev->disk itself is contained in a partmap. */
|
||||
probe_partmap (dev->disk, delim);
|
||||
|
||||
+ else if (print == PRINT_PARTUUID)
|
||||
+ {
|
||||
+ probe_partuuid (dev->disk, delim);
|
||||
+ putchar (delim);
|
||||
+ }
|
||||
+
|
||||
else if (print == PRINT_MSDOS_PARTTYPE)
|
||||
{
|
||||
if (dev->disk->partition
|
243
0143-templates-Update-grub-script-template-files.patch
Normal file
243
0143-templates-Update-grub-script-template-files.patch
Normal file
@ -0,0 +1,243 @@
|
||||
From 51be3372ec8ba07ef68a409956ea0eefa89fe7c5 Mon Sep 17 00:00:00 2001
|
||||
From: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Date: Mon, 16 Apr 2018 22:36:26 -0700
|
||||
Subject: [PATCH] templates: Update grub script template files
|
||||
|
||||
Update grub-mkconfig.in and 10_linux.in to support grub-probe's new
|
||||
partuuid target. Update grub.texi documentation. The following table
|
||||
shows how GRUB_DISABLE_LINUX_UUID, GRUB_DISABLE_LINUX_PARTUUID, and
|
||||
initramfs detection interact:
|
||||
|
||||
Initramfs GRUB_DISABLE_LINUX_PARTUUID GRUB_DISABLE_LINUX_UUID Linux Root
|
||||
detected Set Set ID Method
|
||||
|
||||
false false false part UUID
|
||||
false false true part UUID
|
||||
false true false dev name
|
||||
false true true dev name
|
||||
true false false fs UUID
|
||||
true false true part UUID
|
||||
true true false fs UUID
|
||||
true true true dev name
|
||||
|
||||
Note: GRUB_DISABLE_LINUX_PARTUUID and GRUB_DISABLE_LINUX_UUID equate to
|
||||
'false' when unset or set to any value other than 'true'.
|
||||
GRUB_DISABLE_LINUX_PARTUUID defaults to 'true'.
|
||||
|
||||
Signed-off-by: Nicholas Vinson <nvinson234@gmail.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
docs/grub.texi | 67 ++++++++++++++++++++++++++++++++++++++++++---
|
||||
util/grub-mkconfig.in | 3 ++
|
||||
util/grub.d/10_linux.in | 22 +++++++++++++--
|
||||
util/grub.d/20_linux_xen.in | 22 +++++++++++++--
|
||||
4 files changed, 104 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 0f2ab91fc69..2adfa97bee8 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -1214,10 +1214,11 @@ GRUB is configured using @file{grub.cfg}, usually located under
|
||||
need to write the whole thing by hand.
|
||||
|
||||
@menu
|
||||
-* Simple configuration:: Recommended for most users
|
||||
-* Shell-like scripting:: For power users and developers
|
||||
-* Multi-boot manual config:: For non-standard multi-OS scenarios
|
||||
-* Embedded configuration:: Embedding a configuration file into GRUB
|
||||
+* Simple configuration:: Recommended for most users
|
||||
+* Root Identifcation Heuristics:: Summary on how the root file system is identified.
|
||||
+* Shell-like scripting:: For power users and developers
|
||||
+* Multi-boot manual config:: For non-standard multi-OS scenarios
|
||||
+* Embedded configuration:: Embedding a configuration file into GRUB
|
||||
@end menu
|
||||
|
||||
|
||||
@@ -1425,6 +1426,17 @@ 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
|
||||
disable the use of UUIDs, set this option to @samp{true}.
|
||||
|
||||
+@item GRUB_DISABLE_LINUX_PARTUUID
|
||||
+If @command{grub-mkconfig} cannot identify the root filesystem via its
|
||||
+universally-unique indentifier (UUID), @command{grub-mkconfig} can use the UUID
|
||||
+of the partition containing the filesystem to identify the root filesystem to
|
||||
+the Linux kernel via a @samp{root=PARTUUID=...} kernel parameter. This is not
|
||||
+as reliable as using the filesystem UUID, but is more reliable than using the
|
||||
+Linux device names. When @samp{GRUB_DISABLE_LINUX_PARTUUID} is set to
|
||||
+@samp{false}, the Linux kernel version must be 2.6.37 (3.10 for systems using
|
||||
+the MSDOS partition scheme) or newer. This option defaults to @samp{true}. To
|
||||
+enable the use of partition UUIDs, set this option to @samp{false}.
|
||||
+
|
||||
@item GRUB_DISABLE_RECOVERY
|
||||
If this option is set to @samp{true}, disable the generation of recovery
|
||||
mode menu entries.
|
||||
@@ -1556,6 +1568,53 @@ edit the scripts in @file{/etc/grub.d} directly.
|
||||
menu entries; simply type the menu entries you want to add at the end of
|
||||
that file, making sure to leave at least the first two lines intact.
|
||||
|
||||
+@node Root Identifcation Heuristics
|
||||
+@section Root Identifcation Heuristics
|
||||
+If the target operating system uses the Linux kernel, @command{grub-mkconfig}
|
||||
+attempts to identify the root file system via a heuristic algoirthm. This
|
||||
+algorithm selects the identification method of the root file system by
|
||||
+considering three factors. The first is if an initrd for the target operating
|
||||
+system is also present. The second is @samp{GRUB_DISABLE_LINUX_UUID} and if set
|
||||
+to @samp{true}, prevents @command{grub-mkconfig} from identifying the root file
|
||||
+system by its UUID. The third is @samp{GRUB_DISABLE_LINUX_PARTUUID} and if set
|
||||
+to @samp{true}, prevents @command{grub-mkconfig} from identifying the root file
|
||||
+system via the UUID of its enclosing partition. If the variables are assigned
|
||||
+any other value, that value is considered equivalent to @samp{false}. The
|
||||
+variables are also considered to be set to @samp{false} if they are not set.
|
||||
+
|
||||
+When booting, the Linux kernel will delegate the task of mounting the root
|
||||
+filesystem to the initrd. Most initrd images determine the root file system by
|
||||
+checking the Linux kernel's command-line for the @samp{root} key and use its
|
||||
+value as the identification method of the root file system. To improve the
|
||||
+reliability of booting, most initrd images also allow the root file system to be
|
||||
+identified by its UUID. Because of this behavior, the @command{grub-mkconfig}
|
||||
+command will set @samp{root} to @samp{root=UUID=...} to provide the initrd with
|
||||
+the filesystem UUID of the root file system.
|
||||
+
|
||||
+If no initrd is detected or @samp{GRUB_DISABLE_LINUX_UUID} is set to @samp{true}
|
||||
+then @command{grub-command} will identify the root filesystem by setting the
|
||||
+kernel command-line variable @samp{root} to @samp{root=PARTUUID=...} unless
|
||||
+@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true}. If
|
||||
+@samp{GRUB_DISABLE_LINUX_PARTUUID} is also set to @samp{true},
|
||||
+@command{grub-command} will identify by its Linux device name.
|
||||
+
|
||||
+The following table summarizes the behavior of the @command{grub-mkconfig}
|
||||
+command.
|
||||
+
|
||||
+@multitable {detected} {GRUB_DISABLE_LINUX_PARTUUID} {GRUB_DISABLE_LINUX_UUID} {Linux Root}
|
||||
+@headitem Initrd detected @tab GRUB_DISABLE_LINUX_PARTUUID Set To @tab GRUB_DISABLE_LINUX_UUID Set To @tab Linux Root ID Method
|
||||
+@item false @tab false @tab false @tab part UUID
|
||||
+@item false @tab false @tab true @tab part UUID
|
||||
+@item false @tab true @tab false @tab dev name
|
||||
+@item false @tab true @tab true @tab dev name
|
||||
+@item true @tab false @tab false @tab fs UUID
|
||||
+@item true @tab false @tab true @tab part UUID
|
||||
+@item true @tab true @tab false @tab fs UUID
|
||||
+@item true @tab true @tab true @tab dev name
|
||||
+@end multitable
|
||||
+
|
||||
+Remember, @samp{GRUB_DISABLE_LINUX_PARTUUID} and @samp{GRUB_DISABLE_LINUX_UUID}
|
||||
+are also considered to be set to @samp{false} when they are unset.
|
||||
|
||||
@node Shell-like scripting
|
||||
@section Writing full configuration files directly
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 35ef583b05f..33332360eec 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -134,6 +134,7 @@ 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
|
||||
|
||||
# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
|
||||
GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
|
||||
@@ -188,6 +189,7 @@ if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub
|
||||
# override them.
|
||||
export GRUB_DEVICE \
|
||||
GRUB_DEVICE_UUID \
|
||||
+ GRUB_DEVICE_PARTUUID \
|
||||
GRUB_DEVICE_BOOT \
|
||||
GRUB_DEVICE_BOOT_UUID \
|
||||
GRUB_FS \
|
||||
@@ -223,6 +225,7 @@ export GRUB_DEFAULT \
|
||||
GRUB_TERMINAL_OUTPUT \
|
||||
GRUB_SERIAL_COMMAND \
|
||||
GRUB_DISABLE_LINUX_UUID \
|
||||
+ GRUB_DISABLE_LINUX_PARTUUID \
|
||||
GRUB_DISABLE_RECOVERY \
|
||||
GRUB_VIDEO_BACKEND \
|
||||
GRUB_GFXMODE \
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index faedf74e14e..146499f22fd 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -43,12 +43,22 @@ case ${GRUB_DEVICE} in
|
||||
;;
|
||||
esac
|
||||
|
||||
+# Default to disabling partition uuid support to maintian compatibility with
|
||||
+# older kernels.
|
||||
+GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
|
||||
+
|
||||
# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
|
||||
# and mounting btrfs requires user space scanning, so force UUID in this case.
|
||||
-if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|
||||
- || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|
||||
+if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ) \
|
||||
+ || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|
||||
+ && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
|
||||
+ || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|
||||
+ && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
|
||||
|| ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
|
||||
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
|
||||
+elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
|
||||
+ || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
|
||||
+ LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
|
||||
else
|
||||
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
|
||||
fi
|
||||
@@ -242,7 +252,13 @@ while [ "x$list" != "x" ] ; do
|
||||
if test -z "${initramfs}" && test -z "${initrd_real}" ; then
|
||||
# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
|
||||
# no initrd or builtin initramfs, it can't work here.
|
||||
- linux_root_device_thisversion=${GRUB_DEVICE}
|
||||
+ if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
|
||||
+ || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
|
||||
+
|
||||
+ linux_root_device_thisversion=${GRUB_DEVICE}
|
||||
+ else
|
||||
+ linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
|
||||
+ fi
|
||||
fi
|
||||
|
||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 0cb0f4e49b9..e8143b079dc 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -43,12 +43,22 @@ case ${GRUB_DEVICE} in
|
||||
;;
|
||||
esac
|
||||
|
||||
+# Default to disabling partition uuid support to maintian compatibility with
|
||||
+# older kernels.
|
||||
+GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
|
||||
+
|
||||
# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
|
||||
# and mounting btrfs requires user space scanning, so force UUID in this case.
|
||||
-if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|
||||
- || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|
||||
+if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
|
||||
+ || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|
||||
+ && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
|
||||
+ || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|
||||
+ && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
|
||||
|| ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
|
||||
LINUX_ROOT_DEVICE=${GRUB_DEVICE}
|
||||
+elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
|
||||
+ || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
|
||||
+ LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
|
||||
else
|
||||
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
|
||||
fi
|
||||
@@ -246,7 +256,13 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
|
||||
else
|
||||
# "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here.
|
||||
- linux_root_device_thisversion=${GRUB_DEVICE}
|
||||
+ if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
|
||||
+ || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
|
||||
+
|
||||
+ linux_root_device_thisversion=${GRUB_DEVICE}
|
||||
+ else
|
||||
+ linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
|
||||
+ fi
|
||||
fi
|
||||
|
||||
if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
|
32
0144-bufio-Round-up-block-size-to-power-of-2.patch
Normal file
32
0144-bufio-Round-up-block-size-to-power-of-2.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From b66e364f131228f4215ff8f0b8173f14931d9b6c Mon Sep 17 00:00:00 2001
|
||||
From: Michael Chang <mchang@suse.com>
|
||||
Date: Tue, 24 Apr 2018 14:13:04 +0800
|
||||
Subject: [PATCH] bufio: Round up block size to power of 2
|
||||
|
||||
Rounding up the bufio->block_size to meet power of 2 to facilitate next_buf
|
||||
calculation in grub_bufio_read().
|
||||
|
||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/io/bufio.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/grub-core/io/bufio.c b/grub-core/io/bufio.c
|
||||
index 22438277d74..dbed6474431 100644
|
||||
--- a/grub-core/io/bufio.c
|
||||
+++ b/grub-core/io/bufio.c
|
||||
@@ -61,6 +61,13 @@ grub_bufio_open (grub_file_t io, int size)
|
||||
size = ((io->size > GRUB_BUFIO_MAX_SIZE) ? GRUB_BUFIO_MAX_SIZE :
|
||||
io->size);
|
||||
|
||||
+ /*
|
||||
+ * Round up size to power of 2 which the binary math to
|
||||
+ * calculate next_buf in grub_bufio_read() requires.
|
||||
+ */
|
||||
+ while (size & (size - 1))
|
||||
+ size = (size | (size - 1)) + 1;
|
||||
+
|
||||
bufio = grub_zalloc (sizeof (struct grub_bufio) + size);
|
||||
if (! bufio)
|
||||
{
|
33
0145-grub-probe-Don-t-skip-dev-mapper-dm-devices.patch
Normal file
33
0145-grub-probe-Don-t-skip-dev-mapper-dm-devices.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 6d28b3bd266e1d935de5916860645ea8cabf2335 Mon Sep 17 00:00:00 2001
|
||||
From: Oleg Solovyov <mcpain@altlinux.org>
|
||||
Date: Fri, 11 May 2018 13:55:46 +0300
|
||||
Subject: [PATCH] grub-probe: Don't skip /dev/mapper/dm-* devices
|
||||
|
||||
This patch ensures that grub-probe will find the root device placed in
|
||||
/dev/mapper/dm-[0-9]+-.* e.g. device named /dev/mapper/dm-0-luks will be
|
||||
found and grub.cfg will be updated properly, enabling the system to boot.
|
||||
|
||||
Signed-off-by: Oleg Solovyov <mcpain@altlinux.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/osdep/unix/getroot.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/osdep/unix/getroot.c b/grub-core/osdep/unix/getroot.c
|
||||
index 4bf37b027be..3046e22cc01 100644
|
||||
--- a/grub-core/osdep/unix/getroot.c
|
||||
+++ b/grub-core/osdep/unix/getroot.c
|
||||
@@ -428,8 +428,11 @@ grub_find_device (const char *dir, dev_t dev)
|
||||
{
|
||||
#ifdef __linux__
|
||||
/* Skip device names like /dev/dm-0, which are short-hand aliases
|
||||
- to more descriptive device names, e.g. those under /dev/mapper */
|
||||
- if (ent->d_name[0] == 'd' &&
|
||||
+ to more descriptive device names, e.g. those under /dev/mapper.
|
||||
+ Also, don't skip devices which names start with dm-[0-9] in
|
||||
+ directories below /dev, e.g. /dev/mapper/dm-0-luks. */
|
||||
+ if (strcmp (dir, "/dev") == 0 &&
|
||||
+ ent->d_name[0] == 'd' &&
|
||||
ent->d_name[1] == 'm' &&
|
||||
ent->d_name[2] == '-' &&
|
||||
ent->d_name[3] >= '0' &&
|
@ -1,7 +1,7 @@
|
||||
From d0a896275ec2969f507e6b60c75a4b24c7fd5bd5 Mon Sep 17 00:00:00 2001
|
||||
From: Eric Sandeen <sandeen@sandeen.net>
|
||||
Date: Tue, 15 May 2018 14:55:55 -0500
|
||||
Subject: [PATCH] xfs: accept filesystem with sparse inodes
|
||||
From cda0a857dd7a27cd5d621747464bfe71e8727fff Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Date: Tue, 29 May 2018 16:16:02 +0200
|
||||
Subject: [PATCH] xfs: Accept filesystem with sparse inodes
|
||||
|
||||
The sparse inode metadata format became a mkfs.xfs default in
|
||||
xfsprogs-4.16.0, and such filesystems are now rejected by grub as
|
||||
@ -25,12 +25,14 @@ traverse would be in such a fragmented inode allocation. Tests passed,
|
||||
but I'm not sure how to cleanly integrate that into the test harness.
|
||||
|
||||
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Tested-by: Chris Murphy <lists@colorremedies.com>
|
||||
---
|
||||
grub-core/fs/xfs.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
|
||||
index 9f66dd6e4c6..d7222b529f5 100644
|
||||
index c6031bd3f71..3b00c744e23 100644
|
||||
--- a/grub-core/fs/xfs.c
|
||||
+++ b/grub-core/fs/xfs.c
|
||||
@@ -79,9 +79,18 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
@ -39,13 +41,13 @@ index 9f66dd6e4c6..d7222b529f5 100644
|
||||
|
||||
-/* We do not currently verify metadata UUID so it is safe to read such filesystem */
|
||||
+/*
|
||||
+ * Directory entries with ftype are explicitly handled by grub code.
|
||||
+ *
|
||||
+ * We do not currently verify metadata UUID, so it is safe to read filesystems
|
||||
+ * with the XFS_SB_FEAT_INCOMPAT_META_UUID feature.
|
||||
+ * Directory entries with ftype are explicitly handled by GRUB code.
|
||||
+ *
|
||||
+ * We do not currently read the inode btrees, so it is safe to read filesystems
|
||||
+ * with the XFS_SB_FEAT_INCOMPAT_SPINODES feature.
|
||||
+ *
|
||||
+ * We do not currently verify metadata UUID, so it is safe to read filesystems
|
||||
+ * with the XFS_SB_FEAT_INCOMPAT_META_UUID feature.
|
||||
+ */
|
||||
#define XFS_SB_FEAT_INCOMPAT_SUPPORTED \
|
||||
(XFS_SB_FEAT_INCOMPAT_FTYPE | \
|
27
0147-templates-Add-missing.patch
Normal file
27
0147-templates-Add-missing.patch
Normal file
@ -0,0 +1,27 @@
|
||||
From ba474d531a63850bf2e8e8c225ccd6f5e2a594e9 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
Date: Tue, 5 Jun 2018 13:04:04 +0200
|
||||
Subject: [PATCH] templates: Add missing "]"
|
||||
|
||||
Commit 51be337 (templates: Update grub script template files)
|
||||
lacked one "]", so, add it.
|
||||
|
||||
Reported-by: Philip <philm@manjaro.org>
|
||||
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
util/grub.d/10_linux.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 146499f22fd..61ebd7dc714 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -49,7 +49,7 @@ GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
|
||||
|
||||
# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
|
||||
# and mounting btrfs requires user space scanning, so force UUID in this case.
|
||||
-if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ) \
|
||||
+if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
|
||||
|| ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|
||||
&& [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
|
||||
|| ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
|
122
0148-mbi-Use-per-segment-a-separate-relocator-chunk.patch
Normal file
122
0148-mbi-Use-per-segment-a-separate-relocator-chunk.patch
Normal file
@ -0,0 +1,122 @@
|
||||
From 14ec665c3f36d0614cacaa757907551c5c2e6adb Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Date: Tue, 12 Jun 2018 20:04:09 +0200
|
||||
Subject: [PATCH] mbi: Use per segment a separate relocator chunk
|
||||
|
||||
Instead of setting up a all comprising relocator chunk for all segments,
|
||||
use per segment a separate relocator chunk.
|
||||
|
||||
Currently, if the ELF is non-relocatable, a single relocator chunk will
|
||||
comprise memory (between the segments) which gets overridden by the relst()
|
||||
invocation of the movers code in grub_relocator16/32/64_boot().
|
||||
|
||||
The overridden memory may contain reserved ranges like VGA memory or ACPI
|
||||
tables, which may lead to crashes or at least to strange boot behaviour.
|
||||
|
||||
Signed-off-by: Alexander Boettcher <alexander.boettcher@genode-labs.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/multiboot_elfxx.c | 63 ++++++++++++++++++++++++--------------
|
||||
1 file changed, 40 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
|
||||
index 67daf5944b0..ae36d9d49da 100644
|
||||
--- a/grub-core/loader/multiboot_elfxx.c
|
||||
+++ b/grub-core/loader/multiboot_elfxx.c
|
||||
@@ -57,9 +57,9 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
char *phdr_base;
|
||||
grub_err_t err;
|
||||
grub_relocator_chunk_t ch;
|
||||
- grub_uint32_t load_offset, load_size;
|
||||
+ grub_uint32_t load_offset = 0, load_size;
|
||||
int i;
|
||||
- void *source;
|
||||
+ void *source = NULL;
|
||||
|
||||
if (ehdr->e_ident[EI_MAG0] != ELFMAG0
|
||||
|| ehdr->e_ident[EI_MAG1] != ELFMAG1
|
||||
@@ -97,10 +97,15 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "segment crosses 4 GiB border");
|
||||
#endif
|
||||
|
||||
- load_size = highest_load - mld->link_base_addr;
|
||||
-
|
||||
if (mld->relocatable)
|
||||
{
|
||||
+ load_size = highest_load - mld->link_base_addr;
|
||||
+
|
||||
+ grub_dprintf ("multiboot_loader", "align=0x%lx, preference=0x%x, "
|
||||
+ "load_size=0x%x, avoid_efi_boot_services=%d\n",
|
||||
+ (long) mld->align, mld->preference, load_size,
|
||||
+ mld->avoid_efi_boot_services);
|
||||
+
|
||||
if (load_size > mld->max_addr || mld->min_addr > mld->max_addr - load_size)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid min/max address and/or load size");
|
||||
|
||||
@@ -108,27 +113,22 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
mld->min_addr, mld->max_addr - load_size,
|
||||
load_size, mld->align ? mld->align : 1,
|
||||
mld->preference, mld->avoid_efi_boot_services);
|
||||
+
|
||||
+ if (err)
|
||||
+ {
|
||||
+ grub_dprintf ("multiboot_loader", "Cannot allocate memory for OS image\n");
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ mld->load_base_addr = get_physical_target_address (ch);
|
||||
+ source = get_virtual_current_address (ch);
|
||||
}
|
||||
else
|
||||
- err = grub_relocator_alloc_chunk_addr (GRUB_MULTIBOOT (relocator), &ch,
|
||||
- mld->link_base_addr, load_size);
|
||||
+ mld->load_base_addr = mld->link_base_addr;
|
||||
|
||||
- if (err)
|
||||
- {
|
||||
- grub_dprintf ("multiboot_loader", "Cannot allocate memory for OS image\n");
|
||||
- return err;
|
||||
- }
|
||||
-
|
||||
- mld->load_base_addr = get_physical_target_address (ch);
|
||||
- source = get_virtual_current_address (ch);
|
||||
-
|
||||
- grub_dprintf ("multiboot_loader", "link_base_addr=0x%x, load_base_addr=0x%x, "
|
||||
- "load_size=0x%x, relocatable=%d\n", mld->link_base_addr,
|
||||
- mld->load_base_addr, load_size, mld->relocatable);
|
||||
-
|
||||
- if (mld->relocatable)
|
||||
- grub_dprintf ("multiboot_loader", "align=0x%lx, preference=0x%x, avoid_efi_boot_services=%d\n",
|
||||
- (long) mld->align, mld->preference, mld->avoid_efi_boot_services);
|
||||
+ grub_dprintf ("multiboot_loader", "relocatable=%d, link_base_addr=0x%x, "
|
||||
+ "load_base_addr=0x%x\n", relocatable,
|
||||
+ mld->link_base_addr, mld->load_base_addr);
|
||||
|
||||
/* Load every loadable segment in memory. */
|
||||
for (i = 0; i < ehdr->e_phnum; i++)
|
||||
@@ -139,7 +139,24 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
grub_dprintf ("multiboot_loader", "segment %d: paddr=0x%lx, memsz=0x%lx, vaddr=0x%lx\n",
|
||||
i, (long) phdr(i)->p_paddr, (long) phdr(i)->p_memsz, (long) phdr(i)->p_vaddr);
|
||||
|
||||
- load_offset = phdr(i)->p_paddr - mld->link_base_addr;
|
||||
+ if (mld->relocatable)
|
||||
+ {
|
||||
+ load_offset = phdr(i)->p_paddr - mld->link_base_addr;
|
||||
+ grub_dprintf ("multiboot_loader", "segment %d: load_offset=0x%x\n", i, load_offset);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ err = grub_relocator_alloc_chunk_addr (GRUB_MULTIBOOT (relocator), &ch,
|
||||
+ phdr(i)->p_paddr, phdr(i)->p_memsz);
|
||||
+
|
||||
+ if (err)
|
||||
+ {
|
||||
+ grub_dprintf ("multiboot_loader", "Cannot allocate memory for OS image\n");
|
||||
+ return err;
|
||||
+ }
|
||||
+
|
||||
+ source = get_virtual_current_address (ch);
|
||||
+ }
|
||||
|
||||
if (phdr(i)->p_filesz != 0)
|
||||
{
|
31
0149-grub-fs-tester-Fix-losetup-race.patch
Normal file
31
0149-grub-fs-tester-Fix-losetup-race.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 0083541593e05704961db229aefea0542446c07c Mon Sep 17 00:00:00 2001
|
||||
From: Will Thompson <wjt@endlessm.com>
|
||||
Date: Fri, 15 Jun 2018 18:34:04 +0100
|
||||
Subject: [PATCH] grub-fs-tester: Fix losetup race
|
||||
|
||||
If something else on the system is using loopback devices, then the
|
||||
device that's free at the call to `losetup -f` may not be free in the
|
||||
following call to try to use it. Instead, find and use the first free
|
||||
loopback device in a single call to losetup.
|
||||
|
||||
Signed-off-by: Will Thompson <wjt@endlessm.com>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
tests/util/grub-fs-tester.in | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tests/util/grub-fs-tester.in b/tests/util/grub-fs-tester.in
|
||||
index 26bd57a8027..ef65fbc9341 100644
|
||||
--- a/tests/util/grub-fs-tester.in
|
||||
+++ b/tests/util/grub-fs-tester.in
|
||||
@@ -616,9 +616,8 @@ for LOGSECSIZE in $(range "$MINLOGSECSIZE" "$MAXLOGSECSIZE" 1); do
|
||||
mkdir -p "$MNTPOINTRO"
|
||||
for i in $(range 0 $((NDEVICES-1)) 1); do
|
||||
dd if=/dev/zero of="$FSIMAGEP${i}.img" count=1 bs=1 seek=$((DISKSIZE-1)) &> /dev/null
|
||||
- LODEVICE="$(losetup -f)"
|
||||
+ LODEVICE=$(losetup --find --show "$FSIMAGEP${i}.img")
|
||||
LODEVICES="$LODEVICES $LODEVICE"
|
||||
- losetup "$LODEVICE" "$FSIMAGEP${i}.img"
|
||||
if test "$i" = 0; then
|
||||
MOUNTDEVICE="$LODEVICE"
|
||||
fi
|
126
0150-fdt-Move-prop_entry_size-to-fdt.h.patch
Normal file
126
0150-fdt-Move-prop_entry_size-to-fdt.h.patch
Normal file
@ -0,0 +1,126 @@
|
||||
From e93fd6b776a7e6cef36c445d00436e5a23cfeba5 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Mon, 11 Jun 2018 17:24:58 +0100
|
||||
Subject: [PATCH] fdt: Move prop_entry_size to fdt.h
|
||||
|
||||
To be able to resuse the prop_entry_size macro, move it to
|
||||
<grub/fdt.h> and rename it grub_fdt_prop_entry_size.
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/lib/fdt.c | 25 ++++++++++---------------
|
||||
include/grub/fdt.h | 5 +++++
|
||||
2 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/grub-core/lib/fdt.c b/grub-core/lib/fdt.c
|
||||
index 2705f2629b9..0d371c5633e 100644
|
||||
--- a/grub-core/lib/fdt.c
|
||||
+++ b/grub-core/lib/fdt.c
|
||||
@@ -41,11 +41,6 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
(2 * sizeof(grub_uint32_t) \
|
||||
+ ALIGN_UP (grub_strlen (name) + 1, sizeof(grub_uint32_t)))
|
||||
|
||||
-/* Size needed by a property entry: 1 token (FDT_PROPERTY), plus len and nameoff
|
||||
- fields, plus the property value, plus padding if needed. */
|
||||
-#define prop_entry_size(prop_len) \
|
||||
- (3 * sizeof(grub_uint32_t) + ALIGN_UP(prop_len, sizeof(grub_uint32_t)))
|
||||
-
|
||||
#define SKIP_NODE_NAME(name, token, end) \
|
||||
name = (char *) ((token) + 1); \
|
||||
while (name < (char *) end) \
|
||||
@@ -86,7 +81,7 @@ static grub_uint32_t *get_next_node (const void *fdt, char *node_name)
|
||||
case FDT_PROP:
|
||||
/* Skip property token and following data (len, nameoff and property
|
||||
value). */
|
||||
- token += prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
+ token += grub_fdt_prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
/ sizeof(*token);
|
||||
break;
|
||||
case FDT_NOP:
|
||||
@@ -150,7 +145,7 @@ static int add_subnode (void *fdt, int parentoffset, const char *name)
|
||||
{
|
||||
case FDT_PROP:
|
||||
/* Skip len, nameoff and property value. */
|
||||
- token += prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
+ token += grub_fdt_prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
/ sizeof(*token);
|
||||
break;
|
||||
case FDT_BEGIN_NODE:
|
||||
@@ -249,12 +244,12 @@ static grub_uint32_t *find_prop (const void *fdt, unsigned int nodeoffset,
|
||||
&& !grub_strcmp (name, (char *) fdt +
|
||||
grub_fdt_get_off_dt_strings (fdt) + nameoff))
|
||||
{
|
||||
- if (prop + prop_entry_size(grub_be_to_cpu32(*(prop + 1)))
|
||||
+ if (prop + grub_fdt_prop_entry_size(grub_be_to_cpu32(*(prop + 1)))
|
||||
/ sizeof (*prop) >= end)
|
||||
return NULL;
|
||||
return prop;
|
||||
}
|
||||
- prop += prop_entry_size(grub_be_to_cpu32(*(prop + 1))) / sizeof (*prop);
|
||||
+ prop += grub_fdt_prop_entry_size(grub_be_to_cpu32(*(prop + 1))) / sizeof (*prop);
|
||||
}
|
||||
else if (grub_be_to_cpu32(*prop) == FDT_NOP)
|
||||
prop++;
|
||||
@@ -319,7 +314,7 @@ advance_token (const void *fdt, const grub_uint32_t *token, const grub_uint32_t
|
||||
value). */
|
||||
if (token >= end - 1)
|
||||
return 0;
|
||||
- token += prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
+ token += grub_fdt_prop_entry_size(grub_be_to_cpu32(*(token + 1)))
|
||||
/ sizeof(*token);
|
||||
break;
|
||||
case FDT_NOP:
|
||||
@@ -467,12 +462,12 @@ int grub_fdt_set_prop (void *fdt, unsigned int nodeoffset, const char *name,
|
||||
unsigned int needed_space = 0;
|
||||
|
||||
if (!prop)
|
||||
- needed_space = prop_entry_size(len);
|
||||
+ needed_space = grub_fdt_prop_entry_size(len);
|
||||
if (!prop_name_present)
|
||||
needed_space += grub_strlen (name) + 1;
|
||||
if (needed_space > get_free_space (fdt))
|
||||
return -1;
|
||||
- if (rearrange_blocks (fdt, !prop ? prop_entry_size(len) : 0) < 0)
|
||||
+ if (rearrange_blocks (fdt, !prop ? grub_fdt_prop_entry_size(len) : 0) < 0)
|
||||
return -1;
|
||||
}
|
||||
if (!prop_name_present) {
|
||||
@@ -489,10 +484,10 @@ int grub_fdt_set_prop (void *fdt, unsigned int nodeoffset, const char *name,
|
||||
+ sizeof(grub_uint32_t));
|
||||
|
||||
prop = (void *) (node_name + ALIGN_UP(grub_strlen(node_name) + 1, 4));
|
||||
- grub_memmove (prop + prop_entry_size(len) / sizeof(*prop), prop,
|
||||
+ grub_memmove (prop + grub_fdt_prop_entry_size(len) / sizeof(*prop), prop,
|
||||
struct_end(fdt) - (grub_addr_t) prop);
|
||||
grub_fdt_set_size_dt_struct (fdt, grub_fdt_get_size_dt_struct (fdt)
|
||||
- + prop_entry_size(len));
|
||||
+ + grub_fdt_prop_entry_size(len));
|
||||
*prop = grub_cpu_to_be32_compile_time (FDT_PROP);
|
||||
*(prop + 2) = grub_cpu_to_be32 (nameoff);
|
||||
}
|
||||
@@ -500,7 +495,7 @@ int grub_fdt_set_prop (void *fdt, unsigned int nodeoffset, const char *name,
|
||||
|
||||
/* Insert padding bytes at the end of the value; if they are not needed, they
|
||||
will be overwritten by the following memcpy. */
|
||||
- *(prop + prop_entry_size(len) / sizeof(grub_uint32_t) - 1) = 0;
|
||||
+ *(prop + grub_fdt_prop_entry_size(len) / sizeof(grub_uint32_t) - 1) = 0;
|
||||
|
||||
grub_memcpy (prop + 3, val, len);
|
||||
return 0;
|
||||
diff --git a/include/grub/fdt.h b/include/grub/fdt.h
|
||||
index 75525fa317c..158b1bc4b3a 100644
|
||||
--- a/include/grub/fdt.h
|
||||
+++ b/include/grub/fdt.h
|
||||
@@ -50,6 +50,11 @@ struct grub_fdt_empty_tree {
|
||||
|
||||
#define GRUB_FDT_EMPTY_TREE_SZ sizeof (struct grub_fdt_empty_tree)
|
||||
|
||||
+/* Size needed by a property entry: 1 token (FDT_PROPERTY), plus len and nameoff
|
||||
+ fields, plus the property value, plus padding if needed. */
|
||||
+#define grub_fdt_prop_entry_size(prop_len) \
|
||||
+ (3 * sizeof(grub_uint32_t) + ALIGN_UP(prop_len, sizeof(grub_uint32_t)))
|
||||
+
|
||||
#define grub_fdt_get_header(fdt, field) \
|
||||
grub_be_to_cpu32(((const grub_fdt_header_t *)(fdt))->field)
|
||||
#define grub_fdt_set_header(fdt, field, value) \
|
@ -0,0 +1,65 @@
|
||||
From 347210a5d5ce655b95315f320faa515afb723c11 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Date: Mon, 11 Jun 2018 17:24:59 +0100
|
||||
Subject: [PATCH] efi/fdt: Set address/size cells to 2 for empty tree
|
||||
|
||||
When booting an arm* system on UEFI with an empty device tree (currently
|
||||
only when hardware description comes from ACPI), we don't currently set
|
||||
default to 1 cell (32 bits).
|
||||
|
||||
Set both of these properties, to 2 cells (64 bits), to resolve issues
|
||||
with kexec on some platforms.
|
||||
|
||||
This change corresponds with linux kernel commit ae8a442dfdc4
|
||||
("efi/libstub/arm*: Set default address and size cells values for an empty dtb")
|
||||
and ensures booting through grub does not behave differently from booting
|
||||
the stub loader directly.
|
||||
|
||||
See also https://patchwork.kernel.org/patch/9561201/
|
||||
|
||||
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
|
||||
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/efi/fdt.c | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/loader/efi/fdt.c b/grub-core/loader/efi/fdt.c
|
||||
index c0c6800f79e..a4c6e803645 100644
|
||||
--- a/grub-core/loader/efi/fdt.c
|
||||
+++ b/grub-core/loader/efi/fdt.c
|
||||
@@ -29,6 +29,12 @@
|
||||
static void *loaded_fdt;
|
||||
static void *fdt;
|
||||
|
||||
+#define FDT_ADDR_CELLS_STRING "#address-cells"
|
||||
+#define FDT_SIZE_CELLS_STRING "#size-cells"
|
||||
+#define FDT_ADDR_SIZE_EXTRA ((2 * grub_fdt_prop_entry_size (sizeof(grub_uint32_t))) + \
|
||||
+ sizeof (FDT_ADDR_CELLS_STRING) + \
|
||||
+ sizeof (FDT_SIZE_CELLS_STRING))
|
||||
+
|
||||
void *
|
||||
grub_fdt_load (grub_size_t additional_size)
|
||||
{
|
||||
@@ -46,8 +52,11 @@ grub_fdt_load (grub_size_t additional_size)
|
||||
else
|
||||
raw_fdt = grub_efi_get_firmware_fdt();
|
||||
|
||||
- size =
|
||||
- raw_fdt ? grub_fdt_get_totalsize (raw_fdt) : GRUB_FDT_EMPTY_TREE_SZ;
|
||||
+ if (raw_fdt)
|
||||
+ size = grub_fdt_get_totalsize (raw_fdt);
|
||||
+ else
|
||||
+ size = GRUB_FDT_EMPTY_TREE_SZ + FDT_ADDR_SIZE_EXTRA;
|
||||
+
|
||||
size += additional_size;
|
||||
|
||||
grub_dprintf ("linux", "allocating %d bytes for fdt\n", size);
|
||||
@@ -63,6 +72,8 @@ grub_fdt_load (grub_size_t additional_size)
|
||||
else
|
||||
{
|
||||
grub_fdt_create_empty_tree (fdt, size);
|
||||
+ grub_fdt_set_prop32 (fdt, 0, FDT_ADDR_CELLS_STRING, 2);
|
||||
+ grub_fdt_set_prop32 (fdt, 0, FDT_SIZE_CELLS_STRING, 2);
|
||||
}
|
||||
return fdt;
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
From ec2de93f8d96b914af5834137bffdc9759c362b8 Mon Sep 17 00:00:00 2001
|
||||
From: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
|
||||
Date: Fri, 29 Jun 2018 14:15:11 +0200
|
||||
Subject: [PATCH] multiboot_elfxx.c: Fix compilation by fixing undeclared
|
||||
variable
|
||||
|
||||
Without that fix we have:
|
||||
In file included from ../../include/grub/command.h:25:0,
|
||||
from ../../grub-core/loader/multiboot.c:30:
|
||||
../../grub-core/loader/multiboot_elfxx.c: In function 'grub_multiboot_load_elf64':
|
||||
../../grub-core/loader/multiboot_elfxx.c:130:28: error: 'relocatable' undeclared (first use in this function)
|
||||
"load_base_addr=0x%x\n", relocatable,
|
||||
|
||||
This happens due to mistake in the commit 14ec665
|
||||
(mbi: Use per segment a separate relocator chunk).
|
||||
|
||||
So, let's fix it.
|
||||
|
||||
Signed-off-by: Ignat Korchagin <ignat@cloudflare.com>
|
||||
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
|
||||
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||
---
|
||||
grub-core/loader/multiboot_elfxx.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/loader/multiboot_elfxx.c b/grub-core/loader/multiboot_elfxx.c
|
||||
index ae36d9d49da..70cd1db513e 100644
|
||||
--- a/grub-core/loader/multiboot_elfxx.c
|
||||
+++ b/grub-core/loader/multiboot_elfxx.c
|
||||
@@ -127,7 +127,7 @@ CONCAT(grub_multiboot_load_elf, XX) (mbi_load_data_t *mld)
|
||||
mld->load_base_addr = mld->link_base_addr;
|
||||
|
||||
grub_dprintf ("multiboot_loader", "relocatable=%d, link_base_addr=0x%x, "
|
||||
- "load_base_addr=0x%x\n", relocatable,
|
||||
+ "load_base_addr=0x%x\n", mld->relocatable,
|
||||
mld->link_base_addr, mld->load_base_addr);
|
||||
|
||||
/* Load every loadable segment in memory. */
|
@ -1,4 +1,4 @@
|
||||
From 38bfcd3054c28aa40234840c12d900f1d18a217d Mon Sep 17 00:00:00 2001
|
||||
From 9bb01748b4e2eb13dee87c4595f378afbfaadb3f Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 8 Aug 2017 12:48:04 -0400
|
||||
Subject: [PATCH] re-write .gitignore
|
@ -1,4 +1,4 @@
|
||||
From bf1fd830091fff49e26f39027e0db8fd4b688624 Mon Sep 17 00:00:00 2001
|
||||
From 2b4fd2084bd3a3b75ee06cd4e670c0675078f6ab Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Thu, 20 Sep 2012 18:07:39 -0300
|
||||
Subject: [PATCH] IBM client architecture (CAS) reboot support
|
||||
@ -18,20 +18,21 @@ Instead of return to the GRUB menu, it will check if the flag for CAS reboot is
|
||||
set. If so, grub will automatically boot the last booted kernel using the same
|
||||
parameters
|
||||
---
|
||||
grub-core/kern/ieee1275/openfw.c | 62 ++++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/kern/ieee1275/openfw.c | 63 ++++++++++++++++++++++++++++++++++++++++
|
||||
grub-core/normal/main.c | 19 ++++++++++++
|
||||
grub-core/script/execute.c | 7 +++++
|
||||
include/grub/ieee1275/ieee1275.h | 2 ++
|
||||
4 files changed, 90 insertions(+)
|
||||
4 files changed, 91 insertions(+)
|
||||
|
||||
diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c
|
||||
index ddb778340e4..6db8b986551 100644
|
||||
index 62929d983bf..2d53c0e8608 100644
|
||||
--- a/grub-core/kern/ieee1275/openfw.c
|
||||
+++ b/grub-core/kern/ieee1275/openfw.c
|
||||
@@ -561,3 +561,65 @@ grub_ieee1275_canonicalise_devname (const char *path)
|
||||
return NULL;
|
||||
}
|
||||
@@ -588,3 +588,66 @@ grub_ieee1275_get_boot_dev (void)
|
||||
|
||||
return bootpath;
|
||||
}
|
||||
+
|
||||
+/* Check if it's a CAS reboot. If so, set the script to be executed. */
|
||||
+int
|
||||
+grub_ieee1275_cas_reboot (char *script)
|
||||
@ -157,15 +158,15 @@ index a8502d90711..ab78ca87f90 100644
|
||||
{
|
||||
char *line;
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 8e425130327..9f26c69a2df 100644
|
||||
index 8868f3a756f..2310f33dbc2 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -234,6 +234,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali
|
||||
@@ -252,6 +252,8 @@ int EXPORT_FUNC(grub_ieee1275_devalias_next) (struct grub_ieee1275_devalias *ali
|
||||
void EXPORT_FUNC(grub_ieee1275_children_peer) (struct grub_ieee1275_devalias *alias);
|
||||
void EXPORT_FUNC(grub_ieee1275_children_first) (const char *devpath,
|
||||
struct grub_ieee1275_devalias *alias);
|
||||
+int EXPORT_FUNC(grub_ieee1275_cas_reboot) (char *script);
|
||||
+int EXPORT_FUNC(grub_ieee1275_set_boot_last_label) (const char *text);
|
||||
|
||||
#define FOR_IEEE1275_DEVALIASES(alias) for (grub_ieee1275_devalias_init_iterator (&(alias)); grub_ieee1275_devalias_next (&(alias));)
|
||||
char *EXPORT_FUNC(grub_ieee1275_get_boot_dev) (void);
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 8b30fab3c07a9fc8549e404c411b747b960c57b2 Mon Sep 17 00:00:00 2001
|
||||
From e2458170bea7bf0a98364111b023eab6cdc39aae Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Wed, 24 Apr 2013 10:51:48 -0300
|
||||
Subject: [PATCH] for ppc, reset console display attr when clear screen
|
@ -1,4 +1,4 @@
|
||||
From 45322cbc9402639a431fc0f33bd76e387e6f02bf Mon Sep 17 00:00:00 2001
|
||||
From afae8b229bd1b7e2dd8b92bdcee4dc89224bf32d Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Tue, 11 Jun 2013 15:14:05 -0300
|
||||
Subject: [PATCH] Disable GRUB video support for IBM power machines
|
||||
@ -48,7 +48,7 @@ index 17a3dbbb575..b8e4b3feb32 100644
|
||||
|
||||
GRUB_MOD_FINI(ieee1275_fb)
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 9f26c69a2df..ab4f284c341 100644
|
||||
index 2310f33dbc2..ca08bd96681 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -146,6 +146,8 @@ enum grub_ieee1275_flag
|
@ -1,4 +1,4 @@
|
||||
From c29e260c9f41f4f802fa852b6c46fb2e5d912cb6 Mon Sep 17 00:00:00 2001
|
||||
From 95da0629418b268bce357954f63e3d11564ec8d9 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
|
||||
@ -11,10 +11,10 @@ the -o option follows it rather than overwriting it with a regular file.
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index f8496d28bdf..3b070fd7632 100644
|
||||
index 33332360eec..bc5a3f17541 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -276,7 +276,8 @@ and /etc/grub.d/* files or please file a bug report with
|
||||
@@ -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
|
@ -1,4 +1,4 @@
|
||||
From 8eaf2f497a6bcffc5554509533940ac2b764b981 Mon Sep 17 00:00:00 2001
|
||||
From a5376ff36a34dae179f3d47e1af8937b2738e29e Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 3 Apr 2013 14:35:34 -0400
|
||||
Subject: [PATCH] Move bash completion script (#922997)
|
||||
@ -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 571f7a0b5aa..9ae97f026ab 100644
|
||||
index c7888e40f66..783118ccdcd 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -288,6 +288,14 @@ AC_SUBST(grubdirname)
|
||||
@@ -289,6 +289,14 @@ AC_SUBST(grubdirname)
|
||||
AC_DEFINE_UNQUOTED(GRUB_DIR_NAME, "$grubdirname",
|
||||
[Default grub directory name])
|
||||
|
||||
@ -28,7 +28,7 @@ index 571f7a0b5aa..9ae97f026ab 100644
|
||||
#
|
||||
# Checks for build programs.
|
||||
#
|
||||
@@ -497,6 +505,9 @@ HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
|
||||
@@ -498,6 +506,9 @@ HOST_CFLAGS="$HOST_CFLAGS $grub_cv_cc_w_extra_flags"
|
||||
# Check for target programs.
|
||||
#
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9a1e99c5628bafa9e3970a5317b721da704bec6a Mon Sep 17 00:00:00 2001
|
||||
From 7c86181c3906def2e7f2eff9dd9b6e08cfbe72b3 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 4 Dec 2014 15:36:09 -0500
|
||||
Subject: [PATCH] Update to minilzo-2.08
|
@ -1,8 +1,8 @@
|
||||
From 27845fb323de35e9dcaad8c738eb1a2a2bc316f8 Mon Sep 17 00:00:00 2001
|
||||
From 8b0e6304860a8d0684e8887028f62add7e7620d3 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Fri, 5 Sep 2014 10:07:04 -0400
|
||||
Subject: [PATCH] Allow "fallback" to include entries by title, not
|
||||
just number.
|
||||
Subject: [PATCH] Allow "fallback" to include entries by title, not just
|
||||
number.
|
||||
|
||||
Resolves: rhbz#1026084
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 7f7429e93fa791ac2c002beaafab9b9d9bd86b89 Mon Sep 17 00:00:00 2001
|
||||
From e944dc0c0a5b414873c3149e008130f14bdb9af4 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.
|
||||
@ -10,15 +10,15 @@ as it understands it.
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
docs/grub.texi | 7 +++++++
|
||||
util/grub-mkconfig.in | 12 ++++++++++--
|
||||
util/grub-mkconfig.in | 22 +++++++++++++++++++---
|
||||
util/grub-mkconfig_lib.in | 4 ++--
|
||||
3 files changed, 19 insertions(+), 4 deletions(-)
|
||||
3 files changed, 28 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index a0c4b9e4e8e..6fdd2a041f7 100644
|
||||
index 2adfa97bee8..2fd32608c01 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -1409,6 +1409,13 @@ disable the use of UUIDs, set this option to @samp{true}.
|
||||
@@ -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.
|
||||
|
||||
@ -33,15 +33,17 @@ index a0c4b9e4e8e..6fdd2a041f7 100644
|
||||
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 3b070fd7632..c088b705442 100644
|
||||
index bc5a3f17541..b0a8626dd1c 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -133,11 +133,11 @@ fi
|
||||
@@ -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`"
|
||||
@ -50,30 +52,38 @@ index 3b070fd7632..c088b705442 100644
|
||||
|
||||
# Filesystem for the device containing our userland. Used for stuff like
|
||||
# choosing Hurd filesystem module.
|
||||
@@ -151,6 +151,13 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||
@@ -158,6 +158,21 @@ if test -f ${sysconfdir}/default/grub ; then
|
||||
. ${sysconfdir}/default/grub
|
||||
fi
|
||||
|
||||
+if [ "x$GRUB_DISABLE_UUID" != "xtrue" -a -z "$GRUB_DEVICE_UUID" ]; then
|
||||
+ GRUB_DEVICE_UUID="$GRUB_DEVICE_UUID_GENERATED"
|
||||
+fi
|
||||
+if [ "x$GRUB_DISABLE_UUID" != "xtrue" -a -z "$GRUB_DEVICE_BOOT_UUID" ]; then
|
||||
+ GRUB_DEVICE_BOOT_UUID="$GRUB_DEVICE_BOOT_UUID_GENERATED"
|
||||
+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}"
|
||||
@@ -216,6 +223,7 @@ export GRUB_DEFAULT \
|
||||
GRUB_SERIAL_COMMAND \
|
||||
@@ -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 60b31caddeb..cf35e417470 100644
|
||||
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 ()
|
@ -1,4 +1,4 @@
|
||||
From 384ccb1b44fc23514a59529f58f984dcc4a75cc9 Mon Sep 17 00:00:00 2001
|
||||
From 567b25844138fe8179ed99a42adf46d4e3130c22 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Wed, 26 Feb 2014 21:49:12 -0500
|
||||
Subject: [PATCH] Make "exit" take a return code.
|
||||
@ -60,10 +60,10 @@ index a3a11824172..b25ca4b9f17 100644
|
||||
}
|
||||
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index d467785fc6c..684ca93f8f4 100644
|
||||
index 708581fcbde..e339f264b3a 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -155,11 +155,16 @@ grub_efi_get_loaded_image (grub_efi_handle_t image_handle)
|
||||
@@ -164,11 +164,16 @@ grub_reboot (void)
|
||||
}
|
||||
|
||||
void
|
||||
@ -139,7 +139,7 @@ index 271b6fbfabd..9fafe98f015 100644
|
||||
/* We can't use grub_fatal() in this function. This would create an infinite
|
||||
loop, since grub_fatal() calls grub_abort() which in turn calls grub_exit(). */
|
||||
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||
index 12590225eca..e69c0133e69 100644
|
||||
index 0d8ebf58b95..f5423ce27d9 100644
|
||||
--- a/grub-core/kern/ieee1275/init.c
|
||||
+++ b/grub-core/kern/ieee1275/init.c
|
||||
@@ -68,7 +68,7 @@ grub_addr_t grub_ieee1275_original_stack;
|
||||
@ -242,7 +242,7 @@ index 0559c033c3d..fce526d417b 100644
|
||||
struct sched_shutdown arg;
|
||||
|
||||
diff --git a/include/grub/misc.h b/include/grub/misc.h
|
||||
index 2a9f87cc255..06208143779 100644
|
||||
index 372f009e84f..83fd69f4ada 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,
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user