Rebase to newer upstream (git snapshot)
This commit is contained in:
parent
a05f9de1dc
commit
a5bd9f682f
612
0001-Add-monochrome-text-support-mda_text-aka-hercules-in.patch
Normal file
612
0001-Add-monochrome-text-support-mda_text-aka-hercules-in.patch
Normal file
@ -0,0 +1,612 @@
|
||||
From 8c5886df17cdfb148d4e17bddf38143ed65fe674 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 28 Jun 2012 15:27:54 +0200
|
||||
Subject: [PATCH 001/364] Add monochrome text support (mda_text, aka
|
||||
`hercules' in grub-legacy).
|
||||
|
||||
* grub-core/Makefile.core.def (mda_text): New module.
|
||||
* grub-core/lib/legacy_parse.c (grub_legacy_parse): Support `hercules'.
|
||||
* grub-core/term/i386/vga_common.c (grub_console_cur_color): Moved to ..
|
||||
* grub-core/term/i386/pc/vga_text.c (cur_color): ... here
|
||||
* grub-core/term/i386/pc/console.c (grub_console_cur_color): ... and
|
||||
here.
|
||||
* grub-core/term/i386/vga_common.c (grub_console_getwh): Moved to ..
|
||||
* grub-core/term/i386/pc/vga_text.c (grub_console_getwh): ... here
|
||||
* grub-core/term/i386/pc/console.c (grub_console_getwh): ... and
|
||||
here.
|
||||
* grub-core/term/i386/vga_common.c (grub_console_setcolorstate): Moved
|
||||
to ..
|
||||
* grub-core/term/i386/pc/vga_text.c (grub_console_setcolorstate):
|
||||
... here
|
||||
* grub-core/term/i386/pc/console.c (grub_console_setcolorstate): ... and
|
||||
here.
|
||||
* grub-core/term/i386/vga_common.c: Removed.
|
||||
* include/grub/i386/vga_common.h: Likewise.
|
||||
* include/grub/vga.h (grub_vga_cr_bw_write): New function.
|
||||
(grub_vga_cr_bw_read): Likewise.
|
||||
* include/grub/vgaregs.h (GRUB_VGA_IO_CR_BW_INDEX): New enum value.
|
||||
(GRUB_VGA_IO_CR_BW_DATA): Likewise.
|
||||
* grub-core/term/i386/pc/vga_text.c [MODE_MDA]: Call
|
||||
grub_vga_cr_bw_read/grub_vga_cr_bw_write instead of
|
||||
grub_vga_cr_read/grub_vga_cr_write.
|
||||
(grub_vga_text_setcolorstate) [MODE_MDA]: Ignore color.
|
||||
---
|
||||
ChangeLog | 31 +++++++++
|
||||
grub-core/Makefile.core.def | 12 ++--
|
||||
grub-core/lib/legacy_parse.c | 15 ++--
|
||||
grub-core/term/i386/pc/console.c | 27 ++++++++
|
||||
grub-core/term/i386/pc/vga_text.c | 141 +++++++++++++++++++++++++++++++++-----
|
||||
grub-core/term/i386/vga_common.c | 48 -------------
|
||||
include/grub/i386/pc/console.h | 1 -
|
||||
include/grub/i386/vga_common.h | 32 ---------
|
||||
include/grub/vga.h | 14 ++++
|
||||
include/grub/vgaregs.h | 2 +
|
||||
10 files changed, 213 insertions(+), 110 deletions(-)
|
||||
delete mode 100644 grub-core/term/i386/vga_common.c
|
||||
delete mode 100644 include/grub/i386/vga_common.h
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 81bdae9..f6e864a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,34 @@
|
||||
+2012-06-28 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ Add monochrome text support (mda_text, aka `hercules' in grub-legacy).
|
||||
+
|
||||
+ * grub-core/Makefile.core.def (mda_text): New module.
|
||||
+ * grub-core/lib/legacy_parse.c (grub_legacy_parse): Support `hercules'.
|
||||
+ * grub-core/term/i386/vga_common.c (grub_console_cur_color): Moved to ..
|
||||
+ * grub-core/term/i386/pc/vga_text.c (cur_color): ... here
|
||||
+ * grub-core/term/i386/pc/console.c (grub_console_cur_color): ... and
|
||||
+ here.
|
||||
+ * grub-core/term/i386/vga_common.c (grub_console_getwh): Moved to ..
|
||||
+ * grub-core/term/i386/pc/vga_text.c (grub_console_getwh): ... here
|
||||
+ * grub-core/term/i386/pc/console.c (grub_console_getwh): ... and
|
||||
+ here.
|
||||
+ * grub-core/term/i386/vga_common.c (grub_console_setcolorstate): Moved
|
||||
+ to ..
|
||||
+ * grub-core/term/i386/pc/vga_text.c (grub_console_setcolorstate):
|
||||
+ ... here
|
||||
+ * grub-core/term/i386/pc/console.c (grub_console_setcolorstate): ... and
|
||||
+ here.
|
||||
+ * grub-core/term/i386/vga_common.c: Removed.
|
||||
+ * include/grub/i386/vga_common.h: Likewise.
|
||||
+ * include/grub/vga.h (grub_vga_cr_bw_write): New function.
|
||||
+ (grub_vga_cr_bw_read): Likewise.
|
||||
+ * include/grub/vgaregs.h (GRUB_VGA_IO_CR_BW_INDEX): New enum value.
|
||||
+ (GRUB_VGA_IO_CR_BW_DATA): Likewise.
|
||||
+ * grub-core/term/i386/pc/vga_text.c [MODE_MDA]: Call
|
||||
+ grub_vga_cr_bw_read/grub_vga_cr_bw_write instead of
|
||||
+ grub_vga_cr_read/grub_vga_cr_write.
|
||||
+ (grub_vga_text_setcolorstate) [MODE_MDA]: Ignore color.
|
||||
+
|
||||
2012-06-27 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* configure.ac: Bump version to 2.00.
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 39e77a4..5c2fcc2 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -123,9 +123,6 @@ kernel = {
|
||||
i386_coreboot_multiboot_qemu = kern/i386/coreboot/init.c;
|
||||
i386_coreboot_multiboot_qemu = term/i386/pc/vga_text.c;
|
||||
|
||||
- i386_coreboot_multiboot_qemu = term/i386/vga_common.c;
|
||||
- i386_pc = term/i386/vga_common.c;
|
||||
-
|
||||
x86 = kern/i386/pit.c;
|
||||
|
||||
efi = disk/efi/efidisk.c;
|
||||
@@ -175,7 +172,6 @@ kernel = {
|
||||
mips_qemu_mips = term/at_keyboard.c;
|
||||
mips_qemu_mips = commands/keylayouts.c;
|
||||
mips_qemu_mips = term/i386/pc/vga_text.c;
|
||||
- mips_qemu_mips = term/i386/vga_common.c;
|
||||
mips_qemu_mips = kern/vga_init.c;
|
||||
|
||||
mips_arc = kern/mips/arc/init.c;
|
||||
@@ -1591,11 +1587,17 @@ module = {
|
||||
module = {
|
||||
name = vga_text;
|
||||
common = term/i386/pc/vga_text.c;
|
||||
- common = term/i386/vga_common.c;
|
||||
enable = i386_pc;
|
||||
};
|
||||
|
||||
module = {
|
||||
+ name = mda_text;
|
||||
+ common = term/i386/pc/mda_text.c;
|
||||
+ enable = i386_pc;
|
||||
+ enable = i386_coreboot_multiboot_qemu;
|
||||
+};
|
||||
+
|
||||
+module = {
|
||||
name = video_cirrus;
|
||||
x86 = video/cirrus.c;
|
||||
enable = x86;
|
||||
diff --git a/grub-core/lib/legacy_parse.c b/grub-core/lib/legacy_parse.c
|
||||
index 775eaad..14768b8 100644
|
||||
--- a/grub-core/lib/legacy_parse.c
|
||||
+++ b/grub-core/lib/legacy_parse.c
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* GRUB -- GRand Unified Bootloader
|
||||
- * Copyright (C) 1999,2000,2001,2002,2003,2004,2010 Free Software Foundation, Inc.
|
||||
+ * Copyright (C) 1999,2000,2001,2002,2003,2004,2010,2012 Free Software Foundation, Inc.
|
||||
*
|
||||
* GRUB is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -290,7 +290,7 @@ static struct legacy_command legacy_commands[] =
|
||||
" default values are COM1, 9600, 8N1."},
|
||||
/* FIXME: setkey unsupported. */ /* NUL_TERMINATE */
|
||||
/* NOTE: setup unsupported. */
|
||||
- /* FIXME: --no-echo, --no-edit, hercules unsupported. */
|
||||
+ /* FIXME: --no-echo, --no-edit unsupported. */
|
||||
/* NOTE: both terminals are activated so --silent and --timeout
|
||||
are useless. */
|
||||
{"terminal", NULL, NULL, 0, 0, {}, FLAG_TERMINAL | FLAG_IGNORE_REST,
|
||||
@@ -507,8 +507,8 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||
int dumb = 0, lines = 24;
|
||||
#ifdef TODO
|
||||
int no_echo = 0, no_edit = 0;
|
||||
- int hercules = 0;
|
||||
#endif
|
||||
+ int hercules = 0;
|
||||
int console = 0, serial = 0;
|
||||
/* Big enough for any possible resulting command. */
|
||||
char outbuf[256] = "";
|
||||
@@ -541,10 +541,8 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||
|
||||
if (grub_memcmp (ptr, "serial", sizeof ("serial") - 1) == 0)
|
||||
serial = 1;
|
||||
-#ifdef TODO
|
||||
if (grub_memcmp (ptr, "hercules", sizeof ("hercules") - 1) == 0)
|
||||
hercules = 1;
|
||||
-#endif
|
||||
while (*ptr && !grub_isspace (*ptr))
|
||||
ptr++;
|
||||
while (*ptr && grub_isspace (*ptr))
|
||||
@@ -561,7 +559,7 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||
grub_strcpy (outptr, "serial ");
|
||||
outptr += grub_strlen (outptr);
|
||||
}
|
||||
- if (console)
|
||||
+ if (console || hercules)
|
||||
{
|
||||
grub_strcpy (outptr, "console ");
|
||||
outptr += grub_strlen (outptr);
|
||||
@@ -578,6 +576,11 @@ grub_legacy_parse (const char *buf, char **entryname, char **suffix)
|
||||
grub_strcpy (outptr, "console ");
|
||||
outptr += grub_strlen (outptr);
|
||||
}
|
||||
+ if (hercules)
|
||||
+ {
|
||||
+ grub_strcpy (outptr, "mda_text ");
|
||||
+ outptr += grub_strlen (outptr);
|
||||
+ }
|
||||
grub_strcpy (outptr, "; ");
|
||||
outptr += grub_strlen (outptr);
|
||||
if (serial)
|
||||
diff --git a/grub-core/term/i386/pc/console.c b/grub-core/term/i386/pc/console.c
|
||||
index 7cf5ffc..a681435 100644
|
||||
--- a/grub-core/term/i386/pc/console.c
|
||||
+++ b/grub-core/term/i386/pc/console.c
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <grub/types.h>
|
||||
#include <grub/machine/int.h>
|
||||
|
||||
+static grub_uint8_t grub_console_cur_color = 0x7;
|
||||
+
|
||||
static void
|
||||
int10_9 (grub_uint8_t ch, grub_uint16_t n)
|
||||
{
|
||||
@@ -250,6 +252,31 @@ grub_console_getkeystatus (struct grub_term_input *term __attribute__ ((unused))
|
||||
return bios_data_area->keyboard_flag_lower & ~0x80;
|
||||
}
|
||||
|
||||
+static grub_uint16_t
|
||||
+grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
+{
|
||||
+ return (80 << 8) | 25;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+grub_console_setcolorstate (struct grub_term_output *term,
|
||||
+ grub_term_color_state state)
|
||||
+{
|
||||
+ switch (state) {
|
||||
+ case GRUB_TERM_COLOR_STANDARD:
|
||||
+ grub_console_cur_color = GRUB_TERM_DEFAULT_STANDARD_COLOR & 0x7f;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_NORMAL:
|
||||
+ grub_console_cur_color = term->normal_color & 0x7f;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_HIGHLIGHT:
|
||||
+ grub_console_cur_color = term->highlight_color & 0x7f;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static struct grub_term_input grub_console_term_input =
|
||||
{
|
||||
.name = "console",
|
||||
diff --git a/grub-core/term/i386/pc/vga_text.c b/grub-core/term/i386/pc/vga_text.c
|
||||
index c934c68..d1e4ef9 100644
|
||||
--- a/grub-core/term/i386/pc/vga_text.c
|
||||
+++ b/grub-core/term/i386/pc/vga_text.c
|
||||
@@ -17,10 +17,17 @@
|
||||
*/
|
||||
|
||||
#include <grub/dl.h>
|
||||
-#include <grub/i386/vga_common.h>
|
||||
#include <grub/cpu/io.h>
|
||||
#include <grub/types.h>
|
||||
#include <grub/vga.h>
|
||||
+#include <grub/term.h>
|
||||
+
|
||||
+/* MODESET is used for testing to force monochrome or colour mode.
|
||||
+ You shouldn't use mda_text on vga.
|
||||
+ */
|
||||
+#ifdef MODESET
|
||||
+#include <grub/machine/int.h>
|
||||
+#endif
|
||||
|
||||
#if defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
#include <grub/machine/console.h>
|
||||
@@ -35,10 +42,21 @@ static int grub_curr_x, grub_curr_y;
|
||||
|
||||
#ifdef __mips__
|
||||
#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb00b8000)
|
||||
+#define cr_read grub_vga_cr_read
|
||||
+#define cr_write grub_vga_cr_write
|
||||
+#elif defined (MODE_MDA)
|
||||
+#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb0000)
|
||||
+#define cr_read grub_vga_cr_bw_read
|
||||
+#define cr_write grub_vga_cr_bw_write
|
||||
+static grub_uint8_t cur_color;
|
||||
#else
|
||||
#define VGA_TEXT_SCREEN ((grub_uint16_t *) 0xb8000)
|
||||
+#define cr_read grub_vga_cr_read
|
||||
+#define cr_write grub_vga_cr_write
|
||||
#endif
|
||||
|
||||
+static grub_uint8_t cur_color = 0x7;
|
||||
+
|
||||
static void
|
||||
screen_write_char (int x, int y, short c)
|
||||
{
|
||||
@@ -55,8 +73,8 @@ static void
|
||||
update_cursor (void)
|
||||
{
|
||||
unsigned int pos = grub_curr_y * COLS + grub_curr_x;
|
||||
- grub_vga_cr_write (pos >> 8, GRUB_VGA_CR_CURSOR_ADDR_HIGH);
|
||||
- grub_vga_cr_write (pos & 0xFF, GRUB_VGA_CR_CURSOR_ADDR_LOW);
|
||||
+ cr_write (pos >> 8, GRUB_VGA_CR_CURSOR_ADDR_HIGH);
|
||||
+ cr_write (pos & 0xFF, GRUB_VGA_CR_CURSOR_ADDR_LOW);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -72,7 +90,7 @@ inc_y (void)
|
||||
for (x = 0; x < COLS; x++)
|
||||
screen_write_char (x, y, screen_read_char (x, y + 1));
|
||||
for (x = 0; x < COLS; x++)
|
||||
- screen_write_char (x, ROWS - 1, ' ' | (grub_console_cur_color << 8));
|
||||
+ screen_write_char (x, ROWS - 1, ' ' | (cur_color << 8));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +121,7 @@ grub_vga_text_putchar (struct grub_term_output *term __attribute__ ((unused)),
|
||||
break;
|
||||
default:
|
||||
screen_write_char (grub_curr_x, grub_curr_y,
|
||||
- c->base | (grub_console_cur_color << 8));
|
||||
+ c->base | (cur_color << 8));
|
||||
inc_x ();
|
||||
}
|
||||
|
||||
@@ -130,7 +148,7 @@ grub_vga_text_cls (struct grub_term_output *term)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < ROWS * COLS; i++)
|
||||
- VGA_TEXT_SCREEN[i] = grub_cpu_to_le16 (' ' | (grub_console_cur_color << 8));
|
||||
+ VGA_TEXT_SCREEN[i] = grub_cpu_to_le16 (' ' | (cur_color << 8));
|
||||
grub_vga_text_gotoxy (term, 0, 0);
|
||||
}
|
||||
|
||||
@@ -139,49 +157,136 @@ grub_vga_text_setcursor (struct grub_term_output *term __attribute__ ((unused)),
|
||||
int on)
|
||||
{
|
||||
grub_uint8_t old;
|
||||
- old = grub_vga_cr_read (GRUB_VGA_CR_CURSOR_START);
|
||||
+ old = cr_read (GRUB_VGA_CR_CURSOR_START);
|
||||
if (on)
|
||||
- grub_vga_cr_write (old & ~GRUB_VGA_CR_CURSOR_START_DISABLE,
|
||||
- GRUB_VGA_CR_CURSOR_START);
|
||||
+ cr_write (old & ~GRUB_VGA_CR_CURSOR_START_DISABLE,
|
||||
+ GRUB_VGA_CR_CURSOR_START);
|
||||
else
|
||||
- grub_vga_cr_write (old | GRUB_VGA_CR_CURSOR_START_DISABLE,
|
||||
- GRUB_VGA_CR_CURSOR_START);
|
||||
+ cr_write (old | GRUB_VGA_CR_CURSOR_START_DISABLE,
|
||||
+ GRUB_VGA_CR_CURSOR_START);
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-grub_vga_text_init_fini (struct grub_term_output *term)
|
||||
+grub_vga_text_init (struct grub_term_output *term)
|
||||
{
|
||||
+#ifdef MODESET
|
||||
+ struct grub_bios_int_registers regs;
|
||||
+ regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
+
|
||||
+#ifdef MODE_MDA
|
||||
+ regs.eax = 7;
|
||||
+#else
|
||||
+ regs.eax = 3;
|
||||
+#endif
|
||||
+ regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
+ grub_bios_interrupt (0x10, ®s);
|
||||
+#endif
|
||||
grub_vga_text_cls (term);
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static grub_err_t
|
||||
+grub_vga_text_fini (struct grub_term_output *term)
|
||||
+{
|
||||
+#ifdef MODESET
|
||||
+ struct grub_bios_int_registers regs;
|
||||
+ regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
+
|
||||
+ regs.eax = 3;
|
||||
+ regs.flags = GRUB_CPU_INT_FLAGS_DEFAULT;
|
||||
+ grub_bios_interrupt (0x10, ®s);
|
||||
+#endif
|
||||
+ grub_vga_text_cls (term);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static grub_uint16_t
|
||||
+grub_vga_text_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
+{
|
||||
+ return (80 << 8) | 25;
|
||||
+}
|
||||
+
|
||||
+#ifndef MODE_MDA
|
||||
+
|
||||
+static void
|
||||
+grub_vga_text_setcolorstate (struct grub_term_output *term,
|
||||
+ grub_term_color_state state)
|
||||
+{
|
||||
+ switch (state) {
|
||||
+ case GRUB_TERM_COLOR_STANDARD:
|
||||
+ cur_color = GRUB_TERM_DEFAULT_STANDARD_COLOR & 0x7f;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_NORMAL:
|
||||
+ cur_color = term->normal_color & 0x7f;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_HIGHLIGHT:
|
||||
+ cur_color = term->highlight_color & 0x7f;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#else
|
||||
+static void
|
||||
+grub_vga_text_setcolorstate (struct grub_term_output *term __attribute__ ((unused)),
|
||||
+ grub_term_color_state state)
|
||||
+{
|
||||
+ switch (state) {
|
||||
+ case GRUB_TERM_COLOR_STANDARD:
|
||||
+ cur_color = 0x07;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_NORMAL:
|
||||
+ cur_color = 0x07;
|
||||
+ break;
|
||||
+ case GRUB_TERM_COLOR_HIGHLIGHT:
|
||||
+ cur_color = 0x70;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static struct grub_term_output grub_vga_text_term =
|
||||
{
|
||||
+#ifdef MODE_MDA
|
||||
+ .name = "mda_text",
|
||||
+#else
|
||||
.name = "vga_text",
|
||||
- .init = grub_vga_text_init_fini,
|
||||
- .fini = grub_vga_text_init_fini,
|
||||
+#endif
|
||||
+ .init = grub_vga_text_init,
|
||||
+ .fini = grub_vga_text_fini,
|
||||
.putchar = grub_vga_text_putchar,
|
||||
- .getwh = grub_console_getwh,
|
||||
+ .getwh = grub_vga_text_getwh,
|
||||
.getxy = grub_vga_text_getxy,
|
||||
.gotoxy = grub_vga_text_gotoxy,
|
||||
.cls = grub_vga_text_cls,
|
||||
- .setcolorstate = grub_console_setcolorstate,
|
||||
+ .setcolorstate = grub_vga_text_setcolorstate,
|
||||
.setcursor = grub_vga_text_setcursor,
|
||||
.flags = GRUB_TERM_CODE_TYPE_CP437,
|
||||
.normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
|
||||
.highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
|
||||
};
|
||||
|
||||
-#if defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
+#ifdef MODE_MDA
|
||||
+GRUB_MOD_INIT(mda_text)
|
||||
+#elif defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
void grub_vga_text_init (void)
|
||||
#else
|
||||
GRUB_MOD_INIT(vga_text)
|
||||
#endif
|
||||
{
|
||||
+#ifdef MODE_MDA
|
||||
+ grub_term_register_output ("mda_text", &grub_vga_text_term);
|
||||
+#else
|
||||
grub_term_register_output ("vga_text", &grub_vga_text_term);
|
||||
+#endif
|
||||
}
|
||||
|
||||
-#if defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
+#ifdef MODE_MDA
|
||||
+GRUB_MOD_FINI(mda_text)
|
||||
+#elif defined (GRUB_MACHINE_COREBOOT) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_MULTIBOOT)
|
||||
void grub_vga_text_fini (void)
|
||||
#else
|
||||
GRUB_MOD_FINI(vga_text)
|
||||
diff --git a/grub-core/term/i386/vga_common.c b/grub-core/term/i386/vga_common.c
|
||||
deleted file mode 100644
|
||||
index 0c21769..0000000
|
||||
--- a/grub-core/term/i386/vga_common.c
|
||||
+++ /dev/null
|
||||
@@ -1,48 +0,0 @@
|
||||
-/*
|
||||
- * GRUB -- GRand Unified Bootloader
|
||||
- * Copyright (C) 2002,2003,2005,2007,2008 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/i386/vga_common.h>
|
||||
-#include <grub/term.h>
|
||||
-#include <grub/types.h>
|
||||
-
|
||||
-grub_uint8_t grub_console_cur_color = 0x7;
|
||||
-
|
||||
-grub_uint16_t
|
||||
-grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
|
||||
-{
|
||||
- return (80 << 8) | 25;
|
||||
-}
|
||||
-
|
||||
-void
|
||||
-grub_console_setcolorstate (struct grub_term_output *term,
|
||||
- grub_term_color_state state)
|
||||
-{
|
||||
- switch (state) {
|
||||
- case GRUB_TERM_COLOR_STANDARD:
|
||||
- grub_console_cur_color = GRUB_TERM_DEFAULT_STANDARD_COLOR & 0x7f;
|
||||
- break;
|
||||
- case GRUB_TERM_COLOR_NORMAL:
|
||||
- grub_console_cur_color = term->normal_color & 0x7f;
|
||||
- break;
|
||||
- case GRUB_TERM_COLOR_HIGHLIGHT:
|
||||
- grub_console_cur_color = term->highlight_color & 0x7f;
|
||||
- break;
|
||||
- default:
|
||||
- break;
|
||||
- }
|
||||
-}
|
||||
diff --git a/include/grub/i386/pc/console.h b/include/grub/i386/pc/console.h
|
||||
index f752b9a..191964f 100644
|
||||
--- a/include/grub/i386/pc/console.h
|
||||
+++ b/include/grub/i386/pc/console.h
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <grub/types.h>
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/term.h>
|
||||
-#include <grub/i386/vga_common.h>
|
||||
|
||||
/* Initialize the console system. */
|
||||
void grub_console_init (void);
|
||||
diff --git a/include/grub/i386/vga_common.h b/include/grub/i386/vga_common.h
|
||||
deleted file mode 100644
|
||||
index 8727903..0000000
|
||||
--- a/include/grub/i386/vga_common.h
|
||||
+++ /dev/null
|
||||
@@ -1,32 +0,0 @@
|
||||
-/*
|
||||
- * GRUB -- GRand Unified Bootloader
|
||||
- * Copyright (C) 2002,2005,2007,2008 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_VGA_COMMON_CPU_HEADER
|
||||
-#define GRUB_VGA_COMMON_CPU_HEADER 1
|
||||
-
|
||||
-#include <grub/types.h>
|
||||
-#include <grub/symbol.h>
|
||||
-#include <grub/term.h>
|
||||
-
|
||||
-extern grub_uint8_t grub_console_cur_color;
|
||||
-
|
||||
-grub_uint16_t grub_console_getwh (struct grub_term_output *term);
|
||||
-void grub_console_setcolorstate (struct grub_term_output *term,
|
||||
- grub_term_color_state state);
|
||||
-
|
||||
-#endif /* ! GRUB_VGA_COMMON_CPU_HEADER */
|
||||
diff --git a/include/grub/vga.h b/include/grub/vga.h
|
||||
index 81d40a1..1d8449c 100644
|
||||
--- a/include/grub/vga.h
|
||||
+++ b/include/grub/vga.h
|
||||
@@ -57,6 +57,20 @@ grub_vga_cr_read (grub_uint8_t addr)
|
||||
}
|
||||
|
||||
static inline void
|
||||
+grub_vga_cr_bw_write (grub_uint8_t val, grub_uint8_t addr)
|
||||
+{
|
||||
+ grub_outb (addr, GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_CR_BW_INDEX);
|
||||
+ grub_outb (val, GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_CR_BW_DATA);
|
||||
+}
|
||||
+
|
||||
+static inline grub_uint8_t
|
||||
+grub_vga_cr_bw_read (grub_uint8_t addr)
|
||||
+{
|
||||
+ grub_outb (addr, GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_CR_BW_INDEX);
|
||||
+ return grub_inb (GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_CR_BW_DATA);
|
||||
+}
|
||||
+
|
||||
+static inline void
|
||||
grub_vga_sr_write (grub_uint8_t val, grub_uint8_t addr)
|
||||
{
|
||||
grub_outb (addr, GRUB_MACHINE_PCI_IO_BASE + GRUB_VGA_IO_SR_INDEX);
|
||||
diff --git a/include/grub/vgaregs.h b/include/grub/vgaregs.h
|
||||
index a7b13ee..1a666a1 100644
|
||||
--- a/include/grub/vgaregs.h
|
||||
+++ b/include/grub/vgaregs.h
|
||||
@@ -26,6 +26,8 @@
|
||||
|
||||
enum
|
||||
{
|
||||
+ GRUB_VGA_IO_CR_BW_INDEX = 0x3b4,
|
||||
+ GRUB_VGA_IO_CR_BW_DATA = 0x3b5,
|
||||
GRUB_VGA_IO_ARX = 0x3c0,
|
||||
GRUB_VGA_IO_ARX_READ = 0x3c1,
|
||||
GRUB_VGA_IO_MISC_WRITE = 0x3c2,
|
||||
--
|
||||
1.8.1.4
|
||||
|
22
0002-missing-file-from-last-commit.patch
Normal file
22
0002-missing-file-from-last-commit.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From d72015266eb5f1cf712db5edec3aa6926447f668 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 28 Jun 2012 15:36:48 +0200
|
||||
Subject: [PATCH 002/364] missing file from last commit
|
||||
|
||||
---
|
||||
grub-core/term/i386/pc/mda_text.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
create mode 100644 grub-core/term/i386/pc/mda_text.c
|
||||
|
||||
diff --git a/grub-core/term/i386/pc/mda_text.c b/grub-core/term/i386/pc/mda_text.c
|
||||
new file mode 100644
|
||||
index 0000000..907a36e
|
||||
--- /dev/null
|
||||
+++ b/grub-core/term/i386/pc/mda_text.c
|
||||
@@ -0,0 +1,3 @@
|
||||
+#define MODE_MDA 1
|
||||
+#include "vga_text.c"
|
||||
+
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,58 @@
|
||||
From ec6a8c449294b215a2c4019f42110a0c1f770ac2 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:14:37 +0200
|
||||
Subject: [PATCH 003/364] * grub-core/loader/i386/linux.c
|
||||
(find_efi_mmap_size): Don't decrease efi_mmap_size. Reported by: Stuart
|
||||
Hayes.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/loader/i386/linux.c | 7 +++++--
|
||||
2 files changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index f6e864a..53ad372 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,9 @@
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/loader/i386/linux.c (find_efi_mmap_size): Don't decrease
|
||||
+ efi_mmap_size.
|
||||
+ Reported by: Stuart Hayes.
|
||||
+
|
||||
2012-06-28 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
Add monochrome text support (mda_text, aka `hercules' in grub-legacy).
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index 62087cf..d34b2f8 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -118,12 +118,13 @@ find_efi_mmap_size (void)
|
||||
int ret;
|
||||
grub_efi_memory_descriptor_t *mmap;
|
||||
grub_efi_uintn_t desc_size;
|
||||
+ grub_efi_uintn_t cur_mmap_size = mmap_size;
|
||||
|
||||
- mmap = grub_malloc (mmap_size);
|
||||
+ mmap = grub_malloc (cur_mmap_size);
|
||||
if (! mmap)
|
||||
return 0;
|
||||
|
||||
- ret = grub_efi_get_memory_map (&mmap_size, mmap, 0, &desc_size, 0);
|
||||
+ ret = grub_efi_get_memory_map (&cur_mmap_size, mmap, 0, &desc_size, 0);
|
||||
grub_free (mmap);
|
||||
|
||||
if (ret < 0)
|
||||
@@ -134,6 +135,8 @@ find_efi_mmap_size (void)
|
||||
else if (ret > 0)
|
||||
break;
|
||||
|
||||
+ if (mmap_size < cur_mmap_size)
|
||||
+ mmap_size = cur_mmap_size;
|
||||
mmap_size += (1 << 12);
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,61 @@
|
||||
From d2ccb3209c62de4292107df4207c02ee59dc11a9 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:19:22 +0200
|
||||
Subject: [PATCH 004/364] * include/grub/list.h
|
||||
(FOR_LIST_ELEMENTS_SAFE): New macro. * include/grub/command.h
|
||||
(FOR_COMMANDS_SAFE): Likewise. * grub-core/commands/help.c
|
||||
(grub_cmd_help): Use FOR_COMMANDS_SAFE.
|
||||
|
||||
---
|
||||
grub-core/commands/help.c | 5 +++--
|
||||
include/grub/command.h | 1 +
|
||||
include/grub/list.h | 1 +
|
||||
3 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/grub-core/commands/help.c b/grub-core/commands/help.c
|
||||
index d64c289..f0be89b 100644
|
||||
--- a/grub-core/commands/help.c
|
||||
+++ b/grub-core/commands/help.c
|
||||
@@ -99,12 +99,13 @@ grub_cmd_help (grub_extcmd_context_t ctxt __attribute__ ((unused)), int argc,
|
||||
else
|
||||
{
|
||||
int i;
|
||||
- grub_command_t cmd_iter, cmd;
|
||||
+ grub_command_t cmd_iter, cmd, cmd_next;
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
currarg = args[i];
|
||||
- FOR_COMMANDS(cmd_iter)
|
||||
+
|
||||
+ FOR_COMMANDS_SAFE (cmd_iter, cmd_next)
|
||||
{
|
||||
if (!(cmd_iter->prio & GRUB_COMMAND_FLAG_ACTIVE))
|
||||
continue;
|
||||
diff --git a/include/grub/command.h b/include/grub/command.h
|
||||
index 6d43499..8705a63 100644
|
||||
--- a/include/grub/command.h
|
||||
+++ b/include/grub/command.h
|
||||
@@ -121,6 +121,7 @@ grub_command_execute (const char *name, int argc, char **argv)
|
||||
}
|
||||
|
||||
#define FOR_COMMANDS(var) FOR_LIST_ELEMENTS((var), grub_command_list)
|
||||
+#define FOR_COMMANDS_SAFE(var, next) FOR_LIST_ELEMENTS_SAFE((var), (next), grub_command_list)
|
||||
|
||||
void grub_register_core_commands (void);
|
||||
|
||||
diff --git a/include/grub/list.h b/include/grub/list.h
|
||||
index cadb2d9..6f6dec0 100644
|
||||
--- a/include/grub/list.h
|
||||
+++ b/include/grub/list.h
|
||||
@@ -35,6 +35,7 @@ void EXPORT_FUNC(grub_list_push) (grub_list_t *head, grub_list_t item);
|
||||
void EXPORT_FUNC(grub_list_remove) (grub_list_t item);
|
||||
|
||||
#define FOR_LIST_ELEMENTS(var, list) for ((var) = (list); (var); (var) = (var)->next)
|
||||
+#define FOR_LIST_ELEMENTS_SAFE(var, nxt, list) for ((var) = (list), (nxt) = ((var) ? (var)->next : 0); (var); (var) = (nxt), (nxt) = (var)->next)
|
||||
|
||||
static inline void *
|
||||
grub_bad_type_cast_real (int line, const char *file)
|
||||
--
|
||||
1.8.1.4
|
||||
|
47
0005-gentpl.py-Make-mans-depend-on-grub-mkconfig_lib.patch
Normal file
47
0005-gentpl.py-Make-mans-depend-on-grub-mkconfig_lib.patch
Normal file
@ -0,0 +1,47 @@
|
||||
From 21c2f856cbdf4a98d015ed05bb6b9b16c021af9c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:20:51 +0200
|
||||
Subject: [PATCH 005/364] * gentpl.py: Make mans depend on
|
||||
grub-mkconfig_lib.
|
||||
|
||||
---
|
||||
ChangeLog | 10 ++++++++++
|
||||
gentpl.py | 2 +-
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 53ad372..aaeeb05 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,15 @@
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * gentpl.py: Make mans depend on grub-mkconfig_lib.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * include/grub/list.h (FOR_LIST_ELEMENTS_SAFE): New macro.
|
||||
+ * include/grub/command.h (FOR_COMMANDS_SAFE): Likewise.
|
||||
+ * grub-core/commands/help.c (grub_cmd_help): Use FOR_COMMANDS_SAFE.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/loader/i386/linux.c (find_efi_mmap_size): Don't decrease
|
||||
efi_mmap_size.
|
||||
Reported by: Stuart Hayes.
|
||||
diff --git a/gentpl.py b/gentpl.py
|
||||
index 13a6081..bab4a8a 100644
|
||||
--- a/gentpl.py
|
||||
+++ b/gentpl.py
|
||||
@@ -487,7 +487,7 @@ def installdir(default="bin"):
|
||||
def manpage():
|
||||
r = "if COND_MAN_PAGES\n"
|
||||
r += gvar_add("man_MANS", "[+ name +].[+ mansection +]\n")
|
||||
- r += rule("[+ name +].[+ mansection +]", "[+ name +]", """
|
||||
+ r += rule("[+ name +].[+ mansection +]", "[+ name +] grub-mkconfig_lib", """
|
||||
chmod a+x [+ name +]
|
||||
PATH=$(builddir):$$PATH pkgdatadir=$(builddir) $(HELP2MAN) --section=[+ mansection +] -i $(top_srcdir)/docs/man/[+ name +].h2m -o $@ [+ name +]
|
||||
""")
|
||||
--
|
||||
1.8.1.4
|
||||
|
53
0006-grub-core-net-tftp.c-ack-Fix-endianness-problem.patch
Normal file
53
0006-grub-core-net-tftp.c-ack-Fix-endianness-problem.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 8ec34c46a3cc4cacce65e3a2a671e08548c6a95e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:22:50 +0200
|
||||
Subject: [PATCH 006/364] * grub-core/net/tftp.c (ack): Fix endianness
|
||||
problem. (tftp_receive): Likewise. Reported by: Michael
|
||||
Davidsaver.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/net/tftp.c | 4 ++--
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index aaeeb05..12de11f 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/net/tftp.c (ack): Fix endianness problem.
|
||||
+ (tftp_receive): Likewise.
|
||||
+ Reported by: Michael Davidsaver.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* gentpl.py: Make mans depend on grub-mkconfig_lib.
|
||||
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
diff --git a/grub-core/net/tftp.c b/grub-core/net/tftp.c
|
||||
index 9c70efb..d0f39ea 100644
|
||||
--- a/grub-core/net/tftp.c
|
||||
+++ b/grub-core/net/tftp.c
|
||||
@@ -143,7 +143,7 @@ ack (tftp_data_t data, grub_uint16_t block)
|
||||
|
||||
tftph_ack = (struct tftphdr *) nb_ack.data;
|
||||
tftph_ack->opcode = grub_cpu_to_be16 (TFTP_ACK);
|
||||
- tftph_ack->u.ack.block = block;
|
||||
+ tftph_ack->u.ack.block = grub_cpu_to_be16 (block);
|
||||
|
||||
err = grub_net_send_udp_packet (data->sock, &nb_ack);
|
||||
if (err)
|
||||
@@ -225,7 +225,7 @@ tftp_receive (grub_net_udp_socket_t sock __attribute__ ((unused)),
|
||||
grub_priority_queue_pop (data->pq);
|
||||
|
||||
if (file->device->net->packs.count < 50)
|
||||
- err = ack (data, tftph->u.data.block);
|
||||
+ err = ack (data, data->block + 1);
|
||||
else
|
||||
{
|
||||
file->device->net->stall = 1;
|
||||
--
|
||||
1.8.1.4
|
||||
|
182
0007-grub-core-fs-ext2.c-Experimental-support-for-64-bit.patch
Normal file
182
0007-grub-core-fs-ext2.c-Experimental-support-for-64-bit.patch
Normal file
@ -0,0 +1,182 @@
|
||||
From c545d0bb2fe87b5a8ea6a903e4e9c113595ccfff Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:28:42 +0200
|
||||
Subject: [PATCH 007/364] * grub-core/fs/ext2.c: Experimental support
|
||||
for 64-bit.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/fs/ext2.c | 56 +++++++++++++++++++++++++++++++++++++++++------------
|
||||
2 files changed, 48 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 12de11f..93ad0ac 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/fs/ext2.c: Experimental support for 64-bit.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/net/tftp.c (ack): Fix endianness problem.
|
||||
(tftp_receive): Likewise.
|
||||
Reported by: Michael Davidsaver.
|
||||
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
||||
index c50e379..bd1ab24 100644
|
||||
--- a/grub-core/fs/ext2.c
|
||||
+++ b/grub-core/fs/ext2.c
|
||||
@@ -65,7 +65,8 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
/* The inode size. */
|
||||
#define EXT2_INODE_SIZE(data) \
|
||||
- (EXT2_REVISION (data) == EXT2_GOOD_OLD_REVISION \
|
||||
+ (data->sblock.revision_level \
|
||||
+ == grub_cpu_to_le32_compile_time (EXT2_GOOD_OLD_REVISION) \
|
||||
? EXT2_GOOD_OLD_INODE_SIZE \
|
||||
: grub_le_to_cpu16 (data->sblock.inode_size))
|
||||
|
||||
@@ -105,7 +106,8 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
* flags here as the related features are implemented into the driver. */
|
||||
#define EXT2_DRIVER_SUPPORTED_INCOMPAT ( EXT2_FEATURE_INCOMPAT_FILETYPE \
|
||||
| EXT4_FEATURE_INCOMPAT_EXTENTS \
|
||||
- | EXT4_FEATURE_INCOMPAT_FLEX_BG )
|
||||
+ | EXT4_FEATURE_INCOMPAT_FLEX_BG \
|
||||
+ | EXT4_FEATURE_INCOMPAT_64BIT)
|
||||
/* List of rationales for the ignored "incompatible" features:
|
||||
* needs_recovery: Not really back-incompatible - was added as such to forbid
|
||||
* ext2 drivers from mounting an ext3 volume with a dirty
|
||||
@@ -179,7 +181,7 @@ struct grub_ext2_sblock
|
||||
grub_uint32_t hash_seed[4];
|
||||
grub_uint8_t def_hash_version;
|
||||
grub_uint8_t jnl_backup_type;
|
||||
- grub_uint16_t reserved_word_pad;
|
||||
+ grub_uint16_t group_desc_size;
|
||||
grub_uint32_t default_mount_opts;
|
||||
grub_uint32_t first_meta_bg;
|
||||
grub_uint32_t mkfs_time;
|
||||
@@ -197,6 +199,14 @@ struct grub_ext2_block_group
|
||||
grub_uint16_t used_dirs;
|
||||
grub_uint16_t pad;
|
||||
grub_uint32_t reserved[3];
|
||||
+ grub_uint32_t block_id_hi;
|
||||
+ grub_uint32_t inode_id_hi;
|
||||
+ grub_uint32_t inode_table_id_hi;
|
||||
+ grub_uint16_t free_blocks_hi;
|
||||
+ grub_uint16_t free_inodes_hi;
|
||||
+ grub_uint16_t used_dirs_hi;
|
||||
+ grub_uint16_t pad2;
|
||||
+ grub_uint32_t reserved2[3];
|
||||
};
|
||||
|
||||
/* The ext2 inode. */
|
||||
@@ -310,6 +320,7 @@ struct grub_fshelp_node
|
||||
struct grub_ext2_data
|
||||
{
|
||||
struct grub_ext2_sblock sblock;
|
||||
+ int log_group_desc_size;
|
||||
grub_disk_t disk;
|
||||
struct grub_ext2_inode *inode;
|
||||
struct grub_fshelp_node diropen;
|
||||
@@ -328,7 +339,7 @@ grub_ext2_blockgroup (struct grub_ext2_data *data, int group,
|
||||
return grub_disk_read (data->disk,
|
||||
((grub_le_to_cpu32 (data->sblock.first_data_block) + 1)
|
||||
<< LOG2_EXT2_BLOCK_SIZE (data)),
|
||||
- group * sizeof (struct grub_ext2_block_group),
|
||||
+ group << data->log_group_desc_size,
|
||||
sizeof (struct grub_ext2_block_group), blkgrp);
|
||||
}
|
||||
|
||||
@@ -362,7 +373,7 @@ grub_ext4_find_leaf (struct grub_ext2_data *data, grub_properly_aligned_t *buf,
|
||||
return 0;
|
||||
|
||||
block = grub_le_to_cpu16 (index[i].leaf_hi);
|
||||
- block = (block << 32) + grub_le_to_cpu32 (index[i].leaf);
|
||||
+ block = (block << 32) | grub_le_to_cpu32 (index[i].leaf);
|
||||
if (grub_disk_read (data->disk,
|
||||
block << LOG2_EXT2_BLOCK_SIZE (data),
|
||||
0, EXT2_BLOCK_SIZE(data), buf))
|
||||
@@ -377,11 +388,11 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
{
|
||||
struct grub_ext2_data *data = node->data;
|
||||
struct grub_ext2_inode *inode = &node->inode;
|
||||
- int blknr = -1;
|
||||
+ grub_disk_addr_t blknr = -1;
|
||||
unsigned int blksz = EXT2_BLOCK_SIZE (data);
|
||||
int log2_blksz = LOG2_EXT2_BLOCK_SIZE (data);
|
||||
|
||||
- if (grub_le_to_cpu32(inode->flags) & EXT4_EXTENTS_FLAG)
|
||||
+ if (inode->flags & grub_cpu_to_le32_compile_time (EXT4_EXTENTS_FLAG))
|
||||
{
|
||||
GRUB_PROPERLY_ALIGNED_ARRAY (buf, EXT2_BLOCK_SIZE(data));
|
||||
struct grub_ext4_extent_header *leaf;
|
||||
@@ -535,6 +546,7 @@ grub_ext2_read_inode (struct grub_ext2_data *data,
|
||||
int inodes_per_block;
|
||||
unsigned int blkno;
|
||||
unsigned int blkoff;
|
||||
+ grub_disk_addr_t base;
|
||||
|
||||
/* It is easier to calculate if the first inode is 0. */
|
||||
ino--;
|
||||
@@ -551,10 +563,14 @@ grub_ext2_read_inode (struct grub_ext2_data *data,
|
||||
blkoff = (ino % grub_le_to_cpu32 (sblock->inodes_per_group))
|
||||
% inodes_per_block;
|
||||
|
||||
+ base = grub_le_to_cpu32 (blkgrp.inode_table_id);
|
||||
+ if (data->log_group_desc_size >= 6)
|
||||
+ base |= (((grub_disk_addr_t) grub_le_to_cpu32 (blkgrp.inode_table_id_hi))
|
||||
+ << 32);
|
||||
+
|
||||
/* Read the inode. */
|
||||
if (grub_disk_read (data->disk,
|
||||
- (((grub_disk_addr_t) grub_le_to_cpu32 (blkgrp.inode_table_id) + blkno)
|
||||
- << LOG2_EXT2_BLOCK_SIZE (data)),
|
||||
+ ((base + blkno) << LOG2_EXT2_BLOCK_SIZE (data)),
|
||||
EXT2_INODE_SIZE (data) * blkoff,
|
||||
sizeof (struct grub_ext2_inode), inode))
|
||||
return grub_errno;
|
||||
@@ -578,7 +594,7 @@ grub_ext2_mount (grub_disk_t disk)
|
||||
goto fail;
|
||||
|
||||
/* Make sure this is an ext2 filesystem. */
|
||||
- if (grub_le_to_cpu16 (data->sblock.magic) != EXT2_MAGIC
|
||||
+ if (data->sblock.magic != grub_cpu_to_le16_compile_time (EXT2_MAGIC)
|
||||
|| grub_le_to_cpu32 (data->sblock.log2_block_size) >= 16)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_FS, "not an ext2 filesystem");
|
||||
@@ -586,13 +602,29 @@ grub_ext2_mount (grub_disk_t disk)
|
||||
}
|
||||
|
||||
/* Check the FS doesn't have feature bits enabled that we don't support. */
|
||||
- if (grub_le_to_cpu32 (data->sblock.feature_incompat)
|
||||
- & ~(EXT2_DRIVER_SUPPORTED_INCOMPAT | EXT2_DRIVER_IGNORED_INCOMPAT))
|
||||
+ if (data->sblock.revision_level != grub_cpu_to_le32_compile_time (EXT2_GOOD_OLD_REVISION)
|
||||
+ && (data->sblock.feature_incompat
|
||||
+ & grub_cpu_to_le32_compile_time (~(EXT2_DRIVER_SUPPORTED_INCOMPAT
|
||||
+ | EXT2_DRIVER_IGNORED_INCOMPAT))))
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_FS, "filesystem has unsupported incompatible features");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
+ if (data->sblock.revision_level != grub_cpu_to_le32_compile_time (EXT2_GOOD_OLD_REVISION)
|
||||
+ && (data->sblock.feature_incompat
|
||||
+ & grub_cpu_to_le32_compile_time (EXT4_FEATURE_INCOMPAT_64BIT))
|
||||
+ && data->sblock.group_desc_size != 0
|
||||
+ && ((data->sblock.group_desc_size & (data->sblock.group_desc_size - 1))
|
||||
+ == 0)
|
||||
+ && (data->sblock.group_desc_size & grub_cpu_to_le16_compile_time (0x1fe0)))
|
||||
+ {
|
||||
+ grub_uint16_t b = grub_le_to_cpu16 (data->sblock.group_desc_size);
|
||||
+ for (data->log_group_desc_size = 0; b != (1 << data->log_group_desc_size);
|
||||
+ data->log_group_desc_size++);
|
||||
+ }
|
||||
+ else
|
||||
+ data->log_group_desc_size = 5;
|
||||
|
||||
data->disk = disk;
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
48
0008-grub-core-term-efi-serial.c-Support-1.5-stop-bits.patch
Normal file
48
0008-grub-core-term-efi-serial.c-Support-1.5-stop-bits.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From 2cce795e46cef6c5f057d46bae9a845621ca4a95 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:30:04 +0200
|
||||
Subject: [PATCH 008/364] * grub-core/term/efi/serial.c: Support 1.5
|
||||
stop bits.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/term/efi/serial.c | 2 ++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 93ad0ac..5f73c88 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/term/efi/serial.c: Support 1.5 stop bits.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/ext2.c: Experimental support for 64-bit.
|
||||
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
diff --git a/grub-core/term/efi/serial.c b/grub-core/term/efi/serial.c
|
||||
index da8c3ce..dc5f33b 100644
|
||||
--- a/grub-core/term/efi/serial.c
|
||||
+++ b/grub-core/term/efi/serial.c
|
||||
@@ -44,6 +44,7 @@ do_real_config (struct grub_serial_port *port)
|
||||
};
|
||||
const grub_efi_stop_bits_t stop_bits[] = {
|
||||
[GRUB_SERIAL_STOP_BITS_1] = GRUB_EFI_SERIAL_1_STOP_BIT,
|
||||
+ [GRUB_SERIAL_STOP_BITS_1_5] = GRUB_EFI_SERIAL_1_5_STOP_BITS,
|
||||
[GRUB_SERIAL_STOP_BITS_2] = GRUB_EFI_SERIAL_2_STOP_BITS,
|
||||
};
|
||||
|
||||
@@ -111,6 +112,7 @@ serial_hw_configure (struct grub_serial_port *port,
|
||||
N_("unsupported serial port parity"));
|
||||
|
||||
if (config->stop_bits != GRUB_SERIAL_STOP_BITS_1
|
||||
+ && config->stop_bits != GRUB_SERIAL_STOP_BITS_1_5
|
||||
&& config->stop_bits != GRUB_SERIAL_STOP_BITS_2)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
N_("unsupported serial port stop bits number"));
|
||||
--
|
||||
1.8.1.4
|
||||
|
107
0009-grub-core-lib-legacy_parse.c-Support-clear-and-testl.patch
Normal file
107
0009-grub-core-lib-legacy_parse.c-Support-clear-and-testl.patch
Normal file
@ -0,0 +1,107 @@
|
||||
From 134e4df1335b0498684d093b55332f87c2e8a301 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 2 Jul 2012 11:31:31 +0200
|
||||
Subject: [PATCH 009/364] * grub-core/lib/legacy_parse.c: Support clear
|
||||
and testload.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/lib/legacy_parse.c | 14 +++++++++++++-
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 5f73c88..e606116 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/lib/legacy_parse.c: Support clear and testload.
|
||||
+
|
||||
+2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/term/efi/serial.c: Support 1.5 stop bits.
|
||||
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
diff --git a/grub-core/lib/legacy_parse.c b/grub-core/lib/legacy_parse.c
|
||||
index 14768b8..ddfaec4 100644
|
||||
--- a/grub-core/lib/legacy_parse.c
|
||||
+++ b/grub-core/lib/legacy_parse.c
|
||||
@@ -65,6 +65,7 @@ struct legacy_command
|
||||
*/
|
||||
static struct legacy_command legacy_commands[] =
|
||||
{
|
||||
+ /* FIXME: background unsupported. */
|
||||
{"blocklist", "blocklist '%s'\n", NULL, 0, 1, {TYPE_FILE}, 0, "FILE",
|
||||
"Print the blocklist notation of the file FILE."},
|
||||
{"boot", "boot\n", NULL, 0, 0, {}, 0, 0,
|
||||
@@ -82,6 +83,8 @@ static struct legacy_command legacy_commands[] =
|
||||
2, {TYPE_FORCE_OPTION, TYPE_FILE}, 0, "[--force] FILE",
|
||||
"Load the chain-loader FILE. If --force is specified, then load it"
|
||||
" forcibly, whether the boot loader signature is present or not."},
|
||||
+ {"clear", "clear\n", NULL, 0, 0, {}, 0, 0,
|
||||
+ "Clear the screen."},
|
||||
{"cmp", "cmp '%s' '%s'\n", NULL, 0,
|
||||
2, {TYPE_FILE, TYPE_FILE}, FLAG_IGNORE_REST, "FILE1 FILE2",
|
||||
"Compare the file FILE1 with the FILE2 and inform the different values"
|
||||
@@ -125,6 +128,7 @@ static struct legacy_command legacy_commands[] =
|
||||
{"displaymem", "lsmmap\n", NULL, 0, 0, {}, 0, 0,
|
||||
"Display what GRUB thinks the system address space map of the"
|
||||
" machine is, including all regions of physical RAM installed."},
|
||||
+ /* FIXME: device and efimap unsupported. */
|
||||
/* NOTE: embed unsupported. */
|
||||
{"fallback", "set fallback='%s'\n", NULL, 0,
|
||||
1, {TYPE_VERBATIM}, 0, "NUM...",
|
||||
@@ -136,6 +140,8 @@ static struct legacy_command legacy_commands[] =
|
||||
{"find", "search -f '%s'\n", NULL, 0, 1, {TYPE_FILE}, 0, "FILENAME",
|
||||
"Search for the filename FILENAME in all of partitions and print the list of"
|
||||
" the devices which contain the file."},
|
||||
+ /* FIXME: findiso unsupported. */
|
||||
+ /* FIXME: foreground unsupported. */
|
||||
/* FIXME: fstest unsupported. */
|
||||
/* NOTE: The obsolete C/H/S geometry isn't shown anymore. */
|
||||
{"geometry", "insmod regexp; ls -l (%s*)\n", NULL, 0, 1, {TYPE_VERBATIM}, 0, "DRIVE",
|
||||
@@ -243,6 +249,7 @@ static struct legacy_command legacy_commands[] =
|
||||
{"pause", "echo %s; if ! sleep -i 60; then return; fi\n", NULL, 0, 1,
|
||||
{TYPE_REST_VERBATIM}, 0,
|
||||
"[MESSAGE ...]", "Print MESSAGE, then wait until a key is pressed."},
|
||||
+ /* FIXME: quit unsupported. */
|
||||
/* FIXME: rarp unsupported. */
|
||||
{"read", "read_dword %s\n", NULL, 0, 1, {TYPE_INT}, 0, "ADDR",
|
||||
"Read a 32-bit value from memory at address ADDR and"
|
||||
@@ -288,11 +295,14 @@ static struct legacy_command legacy_commands[] =
|
||||
" STOP is the length of stop bit(s). The option --device can be used only"
|
||||
" in the grub shell, which specifies the file name of a tty device. The"
|
||||
" default values are COM1, 9600, 8N1."},
|
||||
+ /* FIXME: silent unsupported. */
|
||||
+ /* FIXME: splashimage unsupported. */
|
||||
/* FIXME: setkey unsupported. */ /* NUL_TERMINATE */
|
||||
/* NOTE: setup unsupported. */
|
||||
/* FIXME: --no-echo, --no-edit unsupported. */
|
||||
/* NOTE: both terminals are activated so --silent and --timeout
|
||||
are useless. */
|
||||
+ /* FIXME: graphics unsupported. */
|
||||
{"terminal", NULL, NULL, 0, 0, {}, FLAG_TERMINAL | FLAG_IGNORE_REST,
|
||||
"[--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] "
|
||||
"[--silent] [console] [serial] [hercules]",
|
||||
@@ -307,7 +317,7 @@ static struct legacy_command legacy_commands[] =
|
||||
" seconds. The option --lines specifies the maximum number of lines."
|
||||
" The option --silent is used to suppress messages."},
|
||||
/* FIXME: terminfo unsupported. */ /* NUL_TERMINATE */
|
||||
- {"testload", "cat '%s'\n", NULL, 0, 1, {TYPE_FILE}, 0, "FILE",
|
||||
+ {"testload", "testload '%s'\n", NULL, 0, 1, {TYPE_FILE}, 0, "FILE",
|
||||
"Read the entire contents of FILE in several different ways and"
|
||||
" compares them, to test the filesystem code. "
|
||||
" If this test succeeds, then a good next"
|
||||
@@ -334,6 +344,8 @@ static struct legacy_command legacy_commands[] =
|
||||
" the information about only the mode."},
|
||||
{"vbeprobe", "insmod vbe; videoinfo\n", NULL, 0, 0, {},
|
||||
FLAG_FALLBACK, NULL, NULL}
|
||||
+ /* FIXME: verbose unsupported. */
|
||||
+ /* FIXME: version unsupported. */
|
||||
};
|
||||
|
||||
char *
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,39 @@
|
||||
From f1c2b05162cc583ec64ae0b3cdf5ef128d2ca05c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 7 Jul 2012 14:29:01 +0200
|
||||
Subject: [PATCH 010/364] * grub-core/Makefile.am: Fix path to
|
||||
boot/i386/pc/startup_raw.S.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/Makefile.am | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index e606116..5e54eda 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-07-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/Makefile.am: Fix path to boot/i386/pc/startup_raw.S.
|
||||
+
|
||||
2012-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/lib/legacy_parse.c: Support clear and testload.
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index 7dc2519..cc4fb68 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -63,7 +63,7 @@ grub_script.yy.c: grub_script.yy.h
|
||||
rs_decoder.S: $(srcdir)/lib/reed_solomon.c
|
||||
$(TARGET_CC) $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Os -I$(top_builddir) -S -DSTANDALONE -o $@ $< -g0 -mregparm=3 -ffreestanding
|
||||
|
||||
-kern/i386/pc/startup.S: $(builddir)/rs_decoder.S
|
||||
+boot/i386/pc/startup_raw.S: $(builddir)/rs_decoder.S
|
||||
boot/mips/loongson/fwstart.S: $(builddir)/sm712_start.S
|
||||
|
||||
CLEANFILES += grub_script.yy.c grub_script.yy.h
|
||||
--
|
||||
1.8.1.4
|
||||
|
67
0011-Fix-coreboot-compilation.patch
Normal file
67
0011-Fix-coreboot-compilation.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From a7fa3c8e8c7b2dab5a704493b7965bbc60f84bed Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 16:21:24 +0200
|
||||
Subject: [PATCH 011/364] Fix coreboot compilation.
|
||||
|
||||
* grub-core/term/i386/pc/vga_text.c (grub_vga_text_init): Rename to ...
|
||||
(grub_vga_text_init_real): ... this.
|
||||
(grub_vga_text_fini): Rename to ...
|
||||
(grub_vga_text_fini_real): ... this.
|
||||
---
|
||||
ChangeLog | 9 +++++++++
|
||||
grub-core/term/i386/pc/vga_text.c | 8 ++++----
|
||||
2 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 5e54eda..35e76af 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,12 @@
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ Fix coreboot compilation.
|
||||
+
|
||||
+ * grub-core/term/i386/pc/vga_text.c (grub_vga_text_init): Rename to ...
|
||||
+ (grub_vga_text_init_real): ... this.
|
||||
+ (grub_vga_text_fini): Rename to ...
|
||||
+ (grub_vga_text_fini_real): ... this.
|
||||
+
|
||||
2012-07-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/Makefile.am: Fix path to boot/i386/pc/startup_raw.S.
|
||||
diff --git a/grub-core/term/i386/pc/vga_text.c b/grub-core/term/i386/pc/vga_text.c
|
||||
index d1e4ef9..74c155c 100644
|
||||
--- a/grub-core/term/i386/pc/vga_text.c
|
||||
+++ b/grub-core/term/i386/pc/vga_text.c
|
||||
@@ -167,7 +167,7 @@ grub_vga_text_setcursor (struct grub_term_output *term __attribute__ ((unused)),
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-grub_vga_text_init (struct grub_term_output *term)
|
||||
+grub_vga_text_init_real (struct grub_term_output *term)
|
||||
{
|
||||
#ifdef MODESET
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -186,7 +186,7 @@ grub_vga_text_init (struct grub_term_output *term)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-grub_vga_text_fini (struct grub_term_output *term)
|
||||
+grub_vga_text_fini_real (struct grub_term_output *term)
|
||||
{
|
||||
#ifdef MODESET
|
||||
struct grub_bios_int_registers regs;
|
||||
@@ -255,8 +255,8 @@ static struct grub_term_output grub_vga_text_term =
|
||||
#else
|
||||
.name = "vga_text",
|
||||
#endif
|
||||
- .init = grub_vga_text_init,
|
||||
- .fini = grub_vga_text_fini,
|
||||
+ .init = grub_vga_text_init_real,
|
||||
+ .fini = grub_vga_text_fini_real,
|
||||
.putchar = grub_vga_text_putchar,
|
||||
.getwh = grub_vga_text_getwh,
|
||||
.getxy = grub_vga_text_getxy,
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,68 @@
|
||||
From 1f75c529d5309defb33c8c216422003eee1248a5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 16:23:46 +0200
|
||||
Subject: [PATCH 012/364] * grub-core/normal/autofs.c
|
||||
(autoload_fs_module): Save and restore filter state.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/normal/autofs.c | 17 +++++++++++++++--
|
||||
2 files changed, 20 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 35e76af..38374a3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/normal/autofs.c (autoload_fs_module): Save and restore
|
||||
+ filter state.
|
||||
+
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
Fix coreboot compilation.
|
||||
|
||||
* grub-core/term/i386/pc/vga_text.c (grub_vga_text_init): Rename to ...
|
||||
diff --git a/grub-core/normal/autofs.c b/grub-core/normal/autofs.c
|
||||
index 0b27abf..721b9c3 100644
|
||||
--- a/grub-core/normal/autofs.c
|
||||
+++ b/grub-core/normal/autofs.c
|
||||
@@ -32,11 +32,21 @@ static int
|
||||
autoload_fs_module (void)
|
||||
{
|
||||
grub_named_list_t p;
|
||||
+ int ret = 0;
|
||||
+ grub_file_filter_t grub_file_filters_was[GRUB_FILE_FILTER_MAX];
|
||||
+
|
||||
+ grub_memcpy (grub_file_filters_was, grub_file_filters_enabled,
|
||||
+ sizeof (grub_file_filters_enabled));
|
||||
+ grub_memcpy (grub_file_filters_enabled, grub_file_filters_all,
|
||||
+ sizeof (grub_file_filters_enabled));
|
||||
|
||||
while ((p = fs_module_list) != NULL)
|
||||
{
|
||||
if (! grub_dl_get (p->name) && grub_dl_load (p->name))
|
||||
- return 1;
|
||||
+ {
|
||||
+ ret = 1;
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
if (grub_errno)
|
||||
grub_print_error ();
|
||||
@@ -46,7 +56,10 @@ autoload_fs_module (void)
|
||||
grub_free (p);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ grub_memcpy (grub_file_filters_enabled, grub_file_filters_was,
|
||||
+ sizeof (grub_file_filters_enabled));
|
||||
+
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
/* Read the file fs.lst for auto-loading. */
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,73 @@
|
||||
From 4942f9b133e52828d2441309beea0e9278e8b80c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 16:27:03 +0200
|
||||
Subject: [PATCH 013/364] * grub-core/lib/xzembed/xz_dec_stream.c
|
||||
(hash_validate): Fix behaviour if hash function is unavailable.
|
||||
(dec_stream_header): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/lib/xzembed/xz_dec_stream.c | 15 ++++++++++-----
|
||||
2 files changed, 16 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 38374a3..892d31b 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/lib/xzembed/xz_dec_stream.c (hash_validate): Fix behaviour
|
||||
+ if hash function is unavailable.
|
||||
+ (dec_stream_header): Likewise.
|
||||
+
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/normal/autofs.c (autoload_fs_module): Save and restore
|
||||
filter state.
|
||||
|
||||
diff --git a/grub-core/lib/xzembed/xz_dec_stream.c b/grub-core/lib/xzembed/xz_dec_stream.c
|
||||
index 0d79b1f..6170b0c 100644
|
||||
--- a/grub-core/lib/xzembed/xz_dec_stream.c
|
||||
+++ b/grub-core/lib/xzembed/xz_dec_stream.c
|
||||
@@ -403,18 +403,25 @@ static enum xz_ret hash_validate(struct xz_dec *s, struct xz_buf *b,
|
||||
}
|
||||
#endif
|
||||
|
||||
- do {
|
||||
+ if (b->in_pos == b->in_size)
|
||||
+ return XZ_OK;
|
||||
+
|
||||
+ if (!crc32 && s->hash_size == 0)
|
||||
+ s->pos += 8;
|
||||
+
|
||||
+ while (s->pos < (crc32 ? 32 : s->hash_size * 8)) {
|
||||
if (b->in_pos == b->in_size)
|
||||
return XZ_OK;
|
||||
|
||||
#ifndef GRUB_EMBED_DECOMPRESSOR
|
||||
- if (hash && s->hash_value[s->pos / 8] != b->in[b->in_pos++])
|
||||
+ if (hash && s->hash_value[s->pos / 8] != b->in[b->in_pos])
|
||||
return XZ_DATA_ERROR;
|
||||
#endif
|
||||
+ b->in_pos++;
|
||||
|
||||
s->pos += 8;
|
||||
|
||||
- } while (s->pos < (crc32 ? 32 : s->hash_size * 8));
|
||||
+ }
|
||||
|
||||
#ifndef GRUB_EMBED_DECOMPRESSOR
|
||||
if (s->hash)
|
||||
@@ -529,8 +536,6 @@ static enum xz_ret dec_stream_header(struct xz_dec *s)
|
||||
s->hash->init(s->index.hash.hash_context);
|
||||
s->hash->init(s->block.hash.hash_context);
|
||||
}
|
||||
- if (!s->hash)
|
||||
- return XZ_OPTIONS_ERROR;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,83 @@
|
||||
From 6a6140eac9a2d0889dcf6d118979d4af242b8060 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 16:30:48 +0200
|
||||
Subject: [PATCH 014/364] * grub-core/loader/i386/bsd.c
|
||||
(grub_bsd_elf32_size_hook): Fix mask. (grub_bsd_elf32_hook): Likewise.
|
||||
(grub_bsd_elf64_size_hook): Likewise. (grub_bsd_elf64_hook): Likewise.
|
||||
(grub_bsd_load_elf): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
grub-core/loader/i386/bsd.c | 10 +++++-----
|
||||
2 files changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 892d31b..f514465 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,13 @@
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/loader/i386/bsd.c (grub_bsd_elf32_size_hook): Fix mask.
|
||||
+ (grub_bsd_elf32_hook): Likewise.
|
||||
+ (grub_bsd_elf64_size_hook): Likewise.
|
||||
+ (grub_bsd_elf64_hook): Likewise.
|
||||
+ (grub_bsd_load_elf): Likewise.
|
||||
+
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/lib/xzembed/xz_dec_stream.c (hash_validate): Fix behaviour
|
||||
if hash function is unavailable.
|
||||
(dec_stream_header): Likewise.
|
||||
diff --git a/grub-core/loader/i386/bsd.c b/grub-core/loader/i386/bsd.c
|
||||
index 0fd4df0..6e024e4 100644
|
||||
--- a/grub-core/loader/i386/bsd.c
|
||||
+++ b/grub-core/loader/i386/bsd.c
|
||||
@@ -1309,7 +1309,7 @@ grub_bsd_elf32_size_hook (grub_elf_t elf __attribute__ ((unused)),
|
||||
&& phdr->p_type != PT_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
- paddr = phdr->p_paddr & 0xFFFFFF;
|
||||
+ paddr = phdr->p_paddr & 0xFFFFFFF;
|
||||
|
||||
if (paddr < kern_start)
|
||||
kern_start = paddr;
|
||||
@@ -1333,7 +1333,7 @@ grub_bsd_elf32_hook (Elf32_Phdr * phdr, grub_addr_t * addr, int *do_load)
|
||||
}
|
||||
|
||||
*do_load = 1;
|
||||
- phdr->p_paddr &= 0xFFFFFF;
|
||||
+ phdr->p_paddr &= 0xFFFFFFF;
|
||||
paddr = phdr->p_paddr;
|
||||
|
||||
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
|
||||
@@ -1351,7 +1351,7 @@ grub_bsd_elf64_size_hook (grub_elf_t elf __attribute__ ((unused)),
|
||||
&& phdr->p_type != PT_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
- paddr = phdr->p_paddr & 0xffffff;
|
||||
+ paddr = phdr->p_paddr & 0xfffffff;
|
||||
|
||||
if (paddr < kern_start)
|
||||
kern_start = paddr;
|
||||
@@ -1375,7 +1375,7 @@ grub_bsd_elf64_hook (Elf64_Phdr * phdr, grub_addr_t * addr, int *do_load)
|
||||
}
|
||||
|
||||
*do_load = 1;
|
||||
- paddr = phdr->p_paddr & 0xffffff;
|
||||
+ paddr = phdr->p_paddr & 0xfffffff;
|
||||
|
||||
*addr = (grub_addr_t) (paddr - kern_start + (grub_uint8_t *) kern_chunk_src);
|
||||
|
||||
@@ -1394,7 +1394,7 @@ grub_bsd_load_elf (grub_elf_t elf, const char *filename)
|
||||
{
|
||||
grub_relocator_chunk_t ch;
|
||||
|
||||
- entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF;
|
||||
+ entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFFF;
|
||||
err = grub_elf32_phdr_iterate (elf, filename,
|
||||
grub_bsd_elf32_size_hook, NULL);
|
||||
if (err)
|
||||
--
|
||||
1.8.1.4
|
||||
|
368
0015-New-command-lsefi.patch
Normal file
368
0015-New-command-lsefi.patch
Normal file
@ -0,0 +1,368 @@
|
||||
From c0be2c2099805c621f27d5b3ced224db437a582c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 19:59:06 +0200
|
||||
Subject: [PATCH 015/364] New command `lsefi'.
|
||||
|
||||
* grub-core/Makefile.core.def (lsefi): New module.
|
||||
* grub-core/commands/efi/lsefi.c: New file.
|
||||
* include/grub/efi/api.h: Add more GUIDs.
|
||||
---
|
||||
ChangeLog | 8 +++
|
||||
grub-core/Makefile.core.def | 6 ++
|
||||
grub-core/commands/efi/lsefi.c | 153 +++++++++++++++++++++++++++++++++++++++++
|
||||
include/grub/efi/api.h | 142 +++++++++++++++++++++++++++++++++++++-
|
||||
4 files changed, 308 insertions(+), 1 deletion(-)
|
||||
create mode 100644 grub-core/commands/efi/lsefi.c
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index f514465..a21708c 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,13 @@
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ New command `lsefi'.
|
||||
+
|
||||
+ * grub-core/Makefile.core.def (lsefi): New module.
|
||||
+ * grub-core/commands/efi/lsefi.c: New file.
|
||||
+ * include/grub/efi/api.h: Add more GUIDs.
|
||||
+
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/loader/i386/bsd.c (grub_bsd_elf32_size_hook): Fix mask.
|
||||
(grub_bsd_elf32_hook): Likewise.
|
||||
(grub_bsd_elf64_size_hook): Likewise.
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 5c2fcc2..de702d6 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -569,6 +569,12 @@ module = {
|
||||
};
|
||||
|
||||
module = {
|
||||
+ name = lsefi;
|
||||
+ common = commands/efi/lsefi.c;
|
||||
+ enable = efi;
|
||||
+};
|
||||
+
|
||||
+module = {
|
||||
name = blocklist;
|
||||
common = commands/blocklist.c;
|
||||
};
|
||||
diff --git a/grub-core/commands/efi/lsefi.c b/grub-core/commands/efi/lsefi.c
|
||||
new file mode 100644
|
||||
index 0000000..8dffbdc
|
||||
--- /dev/null
|
||||
+++ b/grub-core/commands/efi/lsefi.c
|
||||
@@ -0,0 +1,153 @@
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
+ * Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
+ *
|
||||
+ * GRUB is free software: you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation, either version 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * GRUB is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/mm.h>
|
||||
+#include <grub/misc.h>
|
||||
+#include <grub/efi/api.h>
|
||||
+#include <grub/efi/edid.h>
|
||||
+#include <grub/efi/pci.h>
|
||||
+#include <grub/efi/efi.h>
|
||||
+#include <grub/efi/uga_draw.h>
|
||||
+#include <grub/efi/graphics_output.h>
|
||||
+#include <grub/efi/console_control.h>
|
||||
+#include <grub/command.h>
|
||||
+
|
||||
+GRUB_MOD_LICENSE ("GPLv3+");
|
||||
+
|
||||
+struct known_protocol
|
||||
+{
|
||||
+ grub_efi_guid_t guid;
|
||||
+ const char *name;
|
||||
+} known_protocols[] =
|
||||
+ {
|
||||
+ { GRUB_EFI_DISK_IO_GUID, "disk" },
|
||||
+ { GRUB_EFI_BLOCK_IO_GUID, "block" },
|
||||
+ { GRUB_EFI_SERIAL_IO_GUID, "serial" },
|
||||
+ { GRUB_EFI_SIMPLE_NETWORK_GUID, "network" },
|
||||
+ { GRUB_EFI_PXE_GUID, "pxe" },
|
||||
+ { GRUB_EFI_DEVICE_PATH_GUID, "device path" },
|
||||
+ { GRUB_EFI_PCI_IO_GUID, "PCI" },
|
||||
+ { GRUB_EFI_PCI_ROOT_IO_GUID, "PCI root" },
|
||||
+ { GRUB_EFI_EDID_ACTIVE_GUID, "active EDID" },
|
||||
+ { GRUB_EFI_EDID_DISCOVERED_GUID, "discovered EDID" },
|
||||
+ { GRUB_EFI_EDID_OVERRIDE_GUID, "override EDID" },
|
||||
+ { GRUB_EFI_GOP_GUID, "GOP" },
|
||||
+ { GRUB_EFI_UGA_DRAW_GUID, "UGA draw" },
|
||||
+ { GRUB_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID, "simple text output" },
|
||||
+ { GRUB_EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID, "simple text input" },
|
||||
+ { GRUB_EFI_SIMPLE_POINTER_PROTOCOL_GUID, "simple pointer" },
|
||||
+ { GRUB_EFI_CONSOLE_CONTROL_GUID, "console control" },
|
||||
+ { GRUB_EFI_ABSOLUTE_POINTER_PROTOCOL_GUID, "absolute pointer" },
|
||||
+ { GRUB_EFI_DRIVER_BINDING_PROTOCOL_GUID, "EFI driver binding" },
|
||||
+ { GRUB_EFI_LOAD_FILE_PROTOCOL_GUID, "load file" },
|
||||
+ { GRUB_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID, "simple FS" },
|
||||
+ { GRUB_EFI_TAPE_IO_PROTOCOL_GUID, "tape I/O" },
|
||||
+ { GRUB_EFI_UNICODE_COLLATION_PROTOCOL_GUID, "unicode collation" },
|
||||
+ { GRUB_EFI_SCSI_IO_PROTOCOL_GUID, "SCSI I/O" },
|
||||
+ { GRUB_EFI_USB2_HC_PROTOCOL_GUID, "USB host" },
|
||||
+ { GRUB_EFI_DEBUG_SUPPORT_PROTOCOL_GUID, "debug support" },
|
||||
+ { GRUB_EFI_DEBUGPORT_PROTOCOL_GUID, "debug port" },
|
||||
+ { GRUB_EFI_DECOMPRESS_PROTOCOL_GUID, "decompress" },
|
||||
+ { GRUB_EFI_LOADED_IMAGE_PROTOCOL_GUID, "loaded image" },
|
||||
+ { GRUB_EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID, "device path to text" },
|
||||
+ { GRUB_EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID, "device path utilities" },
|
||||
+ { GRUB_EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID, "device path from text" },
|
||||
+ { GRUB_EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID, "HII config routing" },
|
||||
+ { GRUB_EFI_HII_DATABASE_PROTOCOL_GUID, "HII database" },
|
||||
+ { GRUB_EFI_HII_STRING_PROTOCOL_GUID, "HII string" },
|
||||
+ { GRUB_EFI_HII_IMAGE_PROTOCOL_GUID, "HII image" },
|
||||
+ { GRUB_EFI_HII_FONT_PROTOCOL_GUID, "HII font" },
|
||||
+ { GRUB_EFI_COMPONENT_NAME2_PROTOCOL_GUID, "component name 2" },
|
||||
+ { GRUB_EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID,
|
||||
+ "HII configuration access" },
|
||||
+ { GRUB_EFI_USB_IO_PROTOCOL_GUID, "USB I/O" },
|
||||
+ };
|
||||
+
|
||||
+static grub_err_t
|
||||
+grub_cmd_lsefi (grub_command_t cmd __attribute__ ((unused)),
|
||||
+ int argc __attribute__ ((unused)),
|
||||
+ char **args __attribute__ ((unused)))
|
||||
+{
|
||||
+ grub_efi_handle_t *handles;
|
||||
+ grub_efi_uintn_t num_handles;
|
||||
+ unsigned i, j, k;
|
||||
+
|
||||
+ handles = grub_efi_locate_handle (GRUB_EFI_ALL_HANDLES,
|
||||
+ NULL, NULL, &num_handles);
|
||||
+
|
||||
+ for (i = 0; i < num_handles; i++)
|
||||
+ {
|
||||
+ grub_efi_handle_t handle = handles[i];
|
||||
+ grub_efi_status_t status;
|
||||
+ grub_efi_uintn_t num_protocols;
|
||||
+ grub_efi_guid_t **protocols;
|
||||
+ grub_efi_device_path_t *dp;
|
||||
+
|
||||
+ grub_printf ("Handle %p\n", handle);
|
||||
+
|
||||
+ dp = grub_efi_get_device_path (handle);
|
||||
+ if (dp)
|
||||
+ {
|
||||
+ grub_printf (" ");
|
||||
+ grub_efi_print_device_path (dp);
|
||||
+ }
|
||||
+
|
||||
+ status = efi_call_3 (grub_efi_system_table->boot_services->protocols_per_handle,
|
||||
+ handle, &protocols, &num_protocols);
|
||||
+ if (status != GRUB_EFI_SUCCESS)
|
||||
+ grub_printf ("Unable to retrieve protocols\n");
|
||||
+ for (j = 0; j < num_protocols; j++)
|
||||
+ {
|
||||
+ for (k = 0; k < ARRAY_SIZE (known_protocols); k++)
|
||||
+ if (grub_memcmp (protocols[j], &known_protocols[k].guid,
|
||||
+ sizeof (known_protocols[k].guid)) == 0)
|
||||
+ break;
|
||||
+ if (k < ARRAY_SIZE (known_protocols))
|
||||
+ grub_printf (" %s\n", known_protocols[k].name);
|
||||
+ else
|
||||
+ grub_printf (" %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x\n",
|
||||
+ protocols[j]->data1,
|
||||
+ protocols[j]->data2,
|
||||
+ protocols[j]->data3,
|
||||
+ (unsigned) protocols[j]->data4[0],
|
||||
+ (unsigned) protocols[j]->data4[1],
|
||||
+ (unsigned) protocols[j]->data4[2],
|
||||
+ (unsigned) protocols[j]->data4[3],
|
||||
+ (unsigned) protocols[j]->data4[4],
|
||||
+ (unsigned) protocols[j]->data4[5],
|
||||
+ (unsigned) protocols[j]->data4[6],
|
||||
+ (unsigned) protocols[j]->data4[7]);
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static grub_command_t cmd;
|
||||
+
|
||||
+GRUB_MOD_INIT(lsefi)
|
||||
+{
|
||||
+ cmd = grub_register_command ("lsefi", grub_cmd_lsefi,
|
||||
+ NULL, "Display EFI handles.");
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_FINI(lsefi)
|
||||
+{
|
||||
+ grub_unregister_command (cmd);
|
||||
+}
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index 26127de..9e7a8d8 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -104,9 +104,149 @@
|
||||
{ 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
}
|
||||
|
||||
+#define GRUB_EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
|
||||
+ { 0x387477c1, 0x69c7, 0x11d2, \
|
||||
+ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
+ }
|
||||
+
|
||||
+#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
|
||||
+ { 0xdd9e7534, 0x7762, 0x4698, \
|
||||
+ { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \
|
||||
+ { 0x387477c2, 0x69c7, 0x11d2, \
|
||||
+ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_SIMPLE_POINTER_PROTOCOL_GUID \
|
||||
+ { 0x31878c87, 0xb75, 0x11d5, \
|
||||
+ { 0x9a, 0x4f, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_ABSOLUTE_POINTER_PROTOCOL_GUID \
|
||||
+ { 0x8D59D32B, 0xC655, 0x4AE9, \
|
||||
+ { 0x9B, 0x15, 0xF2, 0x59, 0x04, 0x99, 0x2A, 0x43 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DRIVER_BINDING_PROTOCOL_GUID \
|
||||
+ { 0x18A031AB, 0xB443, 0x4D1A, \
|
||||
+ { 0xA5, 0xC0, 0x0C, 0x09, 0x26, 0x1E, 0x9F, 0x71 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_LOADED_IMAGE_PROTOCOL_GUID \
|
||||
+ { 0x5B1B31A1, 0x9562, 0x11d2, \
|
||||
+ { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_LOAD_FILE_PROTOCOL_GUID \
|
||||
+ { 0x56EC3091, 0x954C, 0x11d2, \
|
||||
+ { 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \
|
||||
+ { 0x0964e5b22, 0x6459, 0x11d2, \
|
||||
+ { 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_TAPE_IO_PROTOCOL_GUID \
|
||||
+ { 0x1e93e633, 0xd65a, 0x459e, \
|
||||
+ { 0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_UNICODE_COLLATION_PROTOCOL_GUID \
|
||||
+ { 0x1d85cd7f, 0xf43d, 0x11d2, \
|
||||
+ { 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_SCSI_IO_PROTOCOL_GUID \
|
||||
+ { 0x932f47e6, 0x2362, 0x4002, \
|
||||
+ { 0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_USB2_HC_PROTOCOL_GUID \
|
||||
+ { 0x3e745226, 0x9818, 0x45b6, \
|
||||
+ { 0xa2, 0xac, 0xd7, 0xcd, 0x0e, 0x8b, 0xa2, 0xbc } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DEBUG_SUPPORT_PROTOCOL_GUID \
|
||||
+ { 0x2755590C, 0x6F3C, 0x42FA, \
|
||||
+ { 0x9E, 0xA4, 0xA3, 0xBA, 0x54, 0x3C, 0xDA, 0x25 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DEBUGPORT_PROTOCOL_GUID \
|
||||
+ { 0xEBA4E8D2, 0x3858, 0x41EC, \
|
||||
+ { 0xA2, 0x81, 0x26, 0x47, 0xBA, 0x96, 0x60, 0xD0 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DECOMPRESS_PROTOCOL_GUID \
|
||||
+ { 0xd8117cfe, 0x94a6, 0x11d4, \
|
||||
+ { 0x9a, 0x3a, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
|
||||
+ { 0x8b843e20, 0x8132, 0x4852, \
|
||||
+ { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \
|
||||
+ { 0x379be4e, 0xd706, 0x437d, \
|
||||
+ { 0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
|
||||
+ { 0x5c99a21, 0xc70f, 0x4ad2, \
|
||||
+ { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_ACPI_TABLE_PROTOCOL_GUID \
|
||||
+ { 0xffe06bdd, 0x6107, 0x46a6, \
|
||||
+ { 0x7b, 0xb2, 0x5a, 0x9c, 0x7e, 0xc5, 0x27, 0x5c} \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \
|
||||
+ { 0x587e72d7, 0xcc50, 0x4f79, \
|
||||
+ { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_DATABASE_PROTOCOL_GUID \
|
||||
+ { 0xef9fc172, 0xa1b2, 0x4693, \
|
||||
+ { 0xb3, 0x27, 0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_STRING_PROTOCOL_GUID \
|
||||
+ { 0xfd96974, 0x23aa, 0x4cdc, \
|
||||
+ { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_IMAGE_PROTOCOL_GUID \
|
||||
+ { 0x31a6406a, 0x6bdf, 0x4e46, \
|
||||
+ { 0xb2, 0xa2, 0xeb, 0xaa, 0x89, 0xc4, 0x9, 0x20 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_FONT_PROTOCOL_GUID \
|
||||
+ { 0xe9ca4775, 0x8657, 0x47fc, \
|
||||
+ { 0x97, 0xe7, 0x7e, 0xd6, 0x5a, 0x8, 0x43, 0x24 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_HII_CONFIGURATION_ACCESS_PROTOCOL_GUID \
|
||||
+ { 0x330d4706, 0xf2a0, 0x4e4f, \
|
||||
+ { 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 } \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_COMPONENT_NAME2_PROTOCOL_GUID \
|
||||
+ { 0x6a7a5cff, 0xe8d9, 0x4f70, \
|
||||
+ { 0xba, 0xda, 0x75, 0xab, 0x30, 0x25, 0xce, 0x14} \
|
||||
+ }
|
||||
+
|
||||
+#define GRUB_EFI_USB_IO_PROTOCOL_GUID \
|
||||
+ { 0x2B2F68D6, 0x0CD2, 0x44cf, \
|
||||
+ { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
|
||||
+ }
|
||||
+
|
||||
#define GRUB_EFI_MPS_TABLE_GUID \
|
||||
{ 0xeb9d2d2f, 0x2d88, 0x11d3, \
|
||||
- { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
+ { 0x9a, 0x16, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
}
|
||||
|
||||
#define GRUB_EFI_ACPI_TABLE_GUID \
|
||||
--
|
||||
1.8.1.4
|
||||
|
162
0016-util-grub-mkconfig_lib.in-grub_quote-Remove-extra-la.patch
Normal file
162
0016-util-grub-mkconfig_lib.in-grub_quote-Remove-extra-la.patch
Normal file
@ -0,0 +1,162 @@
|
||||
From 14589a819717d1d6614687202159a0070bba1f8f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sun, 22 Jul 2012 20:02:17 +0200
|
||||
Subject: [PATCH 016/364] * util/grub-mkconfig_lib.in (grub_quote):
|
||||
Remove extra layer of escape. * util/grub.d/10_hurd.in: Add missing quoting.
|
||||
* util/grub.d/10_illumos.in: Likewise. * util/grub.d/10_kfreebsd.in:
|
||||
Likewise. * util/grub.d/10_linux.in: Likewise. *
|
||||
util/grub.d/20_linux_xen.in: Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 9 +++++++++
|
||||
util/grub-mkconfig_lib.in | 10 +++++-----
|
||||
util/grub.d/10_hurd.in | 4 ++--
|
||||
util/grub.d/10_illumos.in | 1 +
|
||||
util/grub.d/10_kfreebsd.in | 2 +-
|
||||
util/grub.d/10_linux.in | 4 ++--
|
||||
util/grub.d/20_linux_xen.in | 6 +++---
|
||||
7 files changed, 23 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index a21708c..0db6239 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,14 @@
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * util/grub-mkconfig_lib.in (grub_quote): Remove extra layer of escape.
|
||||
+ * util/grub.d/10_hurd.in: Add missing quoting.
|
||||
+ * util/grub.d/10_illumos.in: Likewise.
|
||||
+ * util/grub.d/10_kfreebsd.in: Likewise.
|
||||
+ * util/grub.d/10_linux.in: Likewise.
|
||||
+ * util/grub.d/20_linux_xen.in: Likewise.
|
||||
+
|
||||
+2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
New command `lsefi'.
|
||||
|
||||
* grub-core/Makefile.core.def (lsefi): New module.
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 76133b4..beb52ee 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -255,19 +255,19 @@ version_find_latest ()
|
||||
echo "$version_find_latest_a"
|
||||
}
|
||||
|
||||
-# One layer of quotation is eaten by "", the second by sed, and the third by
|
||||
-# printf; so this turns ' into \'. Note that you must use the output of
|
||||
+# One layer of quotation is eaten by "" and the second by
|
||||
+# sed; so this turns ' into \'. Note that you must use the output of
|
||||
# this function in a printf format string.
|
||||
|
||||
grub_quote () {
|
||||
- sed "s/'/'\\\\\\\\''/g"
|
||||
+ sed "s/'/'\\\\''/g"
|
||||
}
|
||||
|
||||
gettext_quoted () {
|
||||
- gettext "$@" | sed "s/'/'\\\\\\\\''/g"
|
||||
+ gettext "$@" | grub_quote
|
||||
}
|
||||
|
||||
-# Run the first argument through gettext_quoted, and then pass that and all
|
||||
+# Run the first argument through gettext, and then pass that and all
|
||||
# remaining arguments to printf. This is a useful abbreviation and tends to
|
||||
# be easier to type.
|
||||
gettext_printf () {
|
||||
diff --git a/util/grub.d/10_hurd.in b/util/grub.d/10_hurd.in
|
||||
index 6451060..45f0ad3 100644
|
||||
--- a/util/grub.d/10_hurd.in
|
||||
+++ b/util/grub.d/10_hurd.in
|
||||
@@ -117,7 +117,7 @@ EOF
|
||||
opts=
|
||||
fi
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
multiboot ${kernel} root=device:${GRUB_DEVICE#/dev/} $opts ${GRUB_CMDLINE_GNUMACH}
|
||||
EOF
|
||||
|
||||
@@ -133,7 +133,7 @@ EOF
|
||||
fi
|
||||
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
module /hurd/${hurd_fs}.static ${hurd_fs} $opts \\
|
||||
--multiboot-command-line='\${kernel-command-line}' \\
|
||||
--host-priv-port='\${host-port}' \\
|
||||
diff --git a/util/grub.d/10_illumos.in b/util/grub.d/10_illumos.in
|
||||
index 422d56f..2477466 100644
|
||||
--- a/util/grub.d/10_illumos.in
|
||||
+++ b/util/grub.d/10_illumos.in
|
||||
@@ -46,6 +46,7 @@ message="$(gettext_printf "Loading kernel of Illumos ...")"
|
||||
ISADIR=
|
||||
fi
|
||||
zfs-bootfs $($grub_mkrelpath /) ZFS_BOOTFS
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
multiboot $($grub_mkrelpath /platform/i86pc/kernel)/\$ISADIR/unix /platform/i86pc/kernel/\$ISADIR/unix -B \$ZFS_BOOTFS,console=text
|
||||
module $($grub_mkrelpath /platform/i86pc)/\$ISADIR/boot_archive /platform/i86pc/\$ISADIR/boot_archive
|
||||
}
|
||||
diff --git a/util/grub.d/10_kfreebsd.in b/util/grub.d/10_kfreebsd.in
|
||||
index 93405a6..b0e84e2 100644
|
||||
--- a/util/grub.d/10_kfreebsd.in
|
||||
+++ b/util/grub.d/10_kfreebsd.in
|
||||
@@ -100,7 +100,7 @@ kfreebsd_entry ()
|
||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
message="$(gettext_printf "Loading kernel of FreeBSD %s ..." ${version})"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
kfreebsd ${rel_dirname}/${basename} ${args}
|
||||
EOF
|
||||
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 14402e8..35f7a83 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -134,14 +134,14 @@ linux_entry ()
|
||||
fi
|
||||
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
|
||||
EOF
|
||||
if test -n "${initrd}" ; then
|
||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||
message="$(gettext_printf "Loading initial ramdisk ...")"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
initrd ${rel_dirname}/${initrd}
|
||||
EOF
|
||||
fi
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 1d94502..33f1592 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -120,16 +120,16 @@ linux_entry ()
|
||||
xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
|
||||
lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$xmessage'
|
||||
+ echo '$(echo "$xmessage" | grub_quote)'
|
||||
multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args}
|
||||
- echo '$lmessage'
|
||||
+ echo '$(echo "$lmessage" | grub_quote)'
|
||||
module ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
|
||||
EOF
|
||||
if test -n "${initrd}" ; then
|
||||
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
|
||||
message="$(gettext_printf "Loading initial ramdisk ...")"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- echo '$message'
|
||||
+ echo '$(echo "$message" | grub_quote)'
|
||||
module ${rel_dirname}/${initrd}
|
||||
EOF
|
||||
fi
|
||||
--
|
||||
1.8.1.4
|
||||
|
59
0017-EHCI-and-OHCI-PCI-bus-master.patch
Normal file
59
0017-EHCI-and-OHCI-PCI-bus-master.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 6054ac4ca1ce5f3e4589bfead3c9c05af89f9ace Mon Sep 17 00:00:00 2001
|
||||
From: starous <starous@pracovna>
|
||||
Date: Sun, 22 Jul 2012 21:09:30 +0200
|
||||
Subject: [PATCH 017/364] EHCI and OHCI PCI bus master
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/bus/usb/ehci.c | 5 +++++
|
||||
grub-core/bus/usb/ohci.c | 5 +++++
|
||||
3 files changed, 15 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0db6239..01d4f92 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-07-22 Ales Nesrsta <starous@volny.cz>
|
||||
+
|
||||
+ * grub-core/bus/usb/ehci.c: PCI iter. - added PCI bus master setting.
|
||||
+ * grub-core/bus/usb/ohci.c: PCI iter. - added PCI bus master setting.
|
||||
+
|
||||
2012-07-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* util/grub-mkconfig_lib.in (grub_quote): Remove extra layer of escape.
|
||||
diff --git a/grub-core/bus/usb/ehci.c b/grub-core/bus/usb/ehci.c
|
||||
index b700519..d99a4be 100644
|
||||
--- a/grub-core/bus/usb/ehci.c
|
||||
+++ b/grub-core/bus/usb/ehci.c
|
||||
@@ -533,6 +533,11 @@ grub_ehci_pci_iter (grub_pci_device_t dev,
|
||||
"EHCI grub_ehci_pci_iter: registers above 4G are not supported\n");
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+ /* Set bus master - needed for coreboot, VMware, broken BIOSes etc. */
|
||||
+ addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
||||
+ grub_pci_write_word(addr,
|
||||
+ GRUB_PCI_COMMAND_BUS_MASTER | grub_pci_read_word(addr));
|
||||
|
||||
grub_dprintf ("ehci", "EHCI grub_ehci_pci_iter: 32-bit EHCI OK\n");
|
||||
}
|
||||
diff --git a/grub-core/bus/usb/ohci.c b/grub-core/bus/usb/ohci.c
|
||||
index 23cf631..6fabb4b 100644
|
||||
--- a/grub-core/bus/usb/ohci.c
|
||||
+++ b/grub-core/bus/usb/ohci.c
|
||||
@@ -270,6 +270,11 @@ grub_ohci_pci_iter (grub_pci_device_t dev,
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
+ /* Set bus master - needed for coreboot, VMware, broken BIOSes etc. */
|
||||
+ addr = grub_pci_make_address (dev, GRUB_PCI_REG_COMMAND);
|
||||
+ grub_pci_write_word(addr,
|
||||
+ GRUB_PCI_COMMAND_BUS_MASTER | grub_pci_read_word(addr));
|
||||
+
|
||||
grub_dprintf ("ohci", "class=0x%02x 0x%02x interface 0x%02x\n",
|
||||
class, subclass, interf);
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
115
0018-Update-manual-NetBSD-wise.patch
Normal file
115
0018-Update-manual-NetBSD-wise.patch
Normal file
@ -0,0 +1,115 @@
|
||||
From 8d7ed36e113b21de18a1b4a2bf81d218d79114d2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gr=C3=A9goire=20Sutre?= <gregoire.sutre@gmail.com>
|
||||
Date: Wed, 1 Aug 2012 00:18:57 +0200
|
||||
Subject: [PATCH 018/364] Update manual NetBSD-wise.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
docs/grub.texi | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
2 files changed, 67 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 01d4f92..b246d4e 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-07-31 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
+
|
||||
+ * docs/grub.texi: Note that NetBSD/i386 is Multiboot-compliant.
|
||||
+ (NetBSD): New subsection.
|
||||
+
|
||||
2012-07-22 Ales Nesrsta <starous@volny.cz>
|
||||
|
||||
* grub-core/bus/usb/ehci.c: PCI iter. - added PCI bus master setting.
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index b5954da..b0e7f59 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -311,8 +311,10 @@ tables are also loaded.
|
||||
|
||||
@item Support non-Multiboot kernels
|
||||
Support many of the various free 32-bit kernels that lack Multiboot
|
||||
-compliance (primarily FreeBSD, NetBSD, OpenBSD, and
|
||||
-Linux). Chain-loading of other boot loaders is also supported.
|
||||
+compliance (primarily FreeBSD, NetBSD@footnote{The NetBSD/i386 kernel
|
||||
+is Multiboot-compliant, but lacks support for Multiboot modules.},
|
||||
+OpenBSD, and Linux). Chain-loading of other boot loaders is also
|
||||
+supported.
|
||||
|
||||
@item Load multiples modules
|
||||
Fully support the Multiboot feature of loading multiple modules.
|
||||
@@ -897,6 +899,7 @@ Here, we describe some caveats on several operating systems.
|
||||
@menu
|
||||
* GNU/Hurd::
|
||||
* GNU/Linux::
|
||||
+* NetBSD::
|
||||
* DOS/Windows::
|
||||
@end menu
|
||||
|
||||
@@ -997,6 +1000,63 @@ the size, run the command @command{uppermem} @emph{before} loading the
|
||||
kernel. @xref{uppermem}, for more information.
|
||||
|
||||
|
||||
+@node NetBSD
|
||||
+@subsection NetBSD
|
||||
+
|
||||
+Booting a NetBSD kernel from GRUB is also relatively easy: first set
|
||||
+GRUB's root device, then load the kernel and the modules, and finally
|
||||
+run @command{boot}.
|
||||
+
|
||||
+@enumerate
|
||||
+@item
|
||||
+Set GRUB's root device to the partition holding the NetBSD root file
|
||||
+system. For a disk with a NetBSD disk label, this is usually the first
|
||||
+partition (a:). In that case, and assuming that the partition is on the
|
||||
+first hard disk, set GRUB's root device as follows:
|
||||
+
|
||||
+@example
|
||||
+grub> @kbd{insmod part_bsd}
|
||||
+grub> @kbd{set root=(hd0,netbsd1)}
|
||||
+@end example
|
||||
+
|
||||
+For a disk with a GUID Partition Table (GPT), and assuming that the
|
||||
+NetBSD root partition is the third GPT partition, do this:
|
||||
+
|
||||
+@example
|
||||
+grub> @kbd{insmod part_gpt}
|
||||
+grub> @kbd{set root=(hd0,gpt3)}
|
||||
+@end example
|
||||
+
|
||||
+@item
|
||||
+Load the kernel using the command @command{knetbsd}:
|
||||
+
|
||||
+@example
|
||||
+grub> @kbd{knetbsd /netbsd}
|
||||
+@end example
|
||||
+
|
||||
+Various options may be given to @command{knetbsd}. These options are,
|
||||
+for the most part, the same as in the NetBSD boot loader. For instance,
|
||||
+to boot the system in single-user mode and with verbose messages, do
|
||||
+this:
|
||||
+
|
||||
+@example
|
||||
+grub> @kbd{knetbsd /netbsd -s -v}
|
||||
+@end example
|
||||
+
|
||||
+@item
|
||||
+If needed, load kernel modules with the command
|
||||
+@command{knetbsd_module_elf}. A typical example is the module for the
|
||||
+root file system:
|
||||
+
|
||||
+@example
|
||||
+grub> @kbd{knetbsd_module_elf /stand/amd64/6.0/modules/ffs/ffs.kmod}
|
||||
+@end example
|
||||
+
|
||||
+@item
|
||||
+Finally, run the command @command{boot} (@pxref{boot}).
|
||||
+@end enumerate
|
||||
+
|
||||
+
|
||||
@node DOS/Windows
|
||||
@subsection DOS/Windows
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,68 @@
|
||||
From 8b2ef54da3e28cf66637a09c2a2afad9ee56a535 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gr=C3=A9goire=20Sutre?= <gregoire.sutre@gmail.com>
|
||||
Date: Wed, 1 Aug 2012 01:06:53 +0200
|
||||
Subject: [PATCH 019/364] Regenerate po/POTFILES.in with the following commmand
|
||||
in a clean tree:
|
||||
|
||||
export LC_ALL=en_US.UTF-8
|
||||
find . -iname '*.[ch]' | sort > po/POTFILES.in
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
po/POTFILES.in | 5 +++--
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index b246d4e..dd1fda8 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-07-31 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
|
||||
+ * po/POTFILES.in: Regenerated.
|
||||
+
|
||||
+2012-07-31 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
+
|
||||
* docs/grub.texi: Note that NetBSD/i386 is Multiboot-compliant.
|
||||
(NetBSD): New subsection.
|
||||
|
||||
diff --git a/po/POTFILES.in b/po/POTFILES.in
|
||||
index 987b37a..01cc53c 100644
|
||||
--- a/po/POTFILES.in
|
||||
+++ b/po/POTFILES.in
|
||||
@@ -32,6 +32,7 @@
|
||||
./grub-core/commands/efi/acpi.c
|
||||
./grub-core/commands/efi/fixvideo.c
|
||||
./grub-core/commands/efi/loadbios.c
|
||||
+./grub-core/commands/efi/lsefi.c
|
||||
./grub-core/commands/efi/lsefimmap.c
|
||||
./grub-core/commands/efi/lsefisystab.c
|
||||
./grub-core/commands/efi/lssal.c
|
||||
@@ -558,8 +559,8 @@
|
||||
./grub-core/term/emu/console.c
|
||||
./grub-core/term/gfxterm.c
|
||||
./grub-core/term/i386/pc/console.c
|
||||
+./grub-core/term/i386/pc/mda_text.c
|
||||
./grub-core/term/i386/pc/vga_text.c
|
||||
-./grub-core/term/i386/vga_common.c
|
||||
./grub-core/term/ieee1275/console.c
|
||||
./grub-core/term/ieee1275/escc.c
|
||||
./grub-core/term/ieee1275/serial.c
|
||||
@@ -730,7 +731,6 @@
|
||||
./include/grub/i386/time.h
|
||||
./include/grub/i386/tsc.h
|
||||
./include/grub/i386/types.h
|
||||
-./include/grub/i386/vga_common.h
|
||||
./include/grub/i386/xnu.h
|
||||
./include/grub/ia64/efi/memory.h
|
||||
./include/grub/ia64/efi/time.h
|
||||
@@ -867,6 +867,7 @@
|
||||
./include/grub/util/ofpath.h
|
||||
./include/grub/util/resolve.h
|
||||
./include/grub/vga.h
|
||||
+./include/grub/vgaregs.h
|
||||
./include/grub/video_fb.h
|
||||
./include/grub/video.h
|
||||
./include/grub/x86_64/at_keyboard.h
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,38 @@
|
||||
From cb6d50b03d383cae32b0fbe308acc76c9d041fc6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gr=C3=A9goire=20Sutre?= <gregoire.sutre@gmail.com>
|
||||
Date: Sun, 5 Aug 2012 16:49:03 +0200
|
||||
Subject: [PATCH 020/364] Strengthen the configure test for working -nostdinc
|
||||
-isystem.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
configure.ac | 1 +
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index dd1fda8..a0a81b1 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-08-05 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
+
|
||||
+ * configure.ac: Strengthen the test for working -nostdinc -isystem.
|
||||
+
|
||||
2012-07-31 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
|
||||
* po/POTFILES.in: Regenerated.
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 91b36d0..190665d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -717,6 +717,7 @@ AC_CACHE_CHECK([whether -nostdinc -isystem works], [grub_cv_cc_isystem], [
|
||||
SAVED_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$TARGET_CPPFLAGS -nostdinc -isystem `$TARGET_CC -print-file-name=include`"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
||||
+#include <stddef.h>
|
||||
int va_arg_func (int fixed, va_list args);]], [[]])],
|
||||
[grub_cv_cc_isystem=yes],
|
||||
[grub_cv_cc_isystem=no])
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,27 @@
|
||||
From 96aea00a1794415ecc4f01d3e05569927df19420 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Tue, 4 Sep 2012 18:33:33 +0100
|
||||
Subject: [PATCH 021/364] * .bzrignore: Add grub-bios-setup, grub-ofpathname,
|
||||
and grub-sparc64-setup.
|
||||
|
||||
---
|
||||
.bzrignore | 3 +++
|
||||
ChangeLog | 5 +++++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index a0a81b1..ed23d17 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * .bzrignore: Add grub-bios-setup, grub-ofpathname, and
|
||||
+ grub-sparc64-setup.
|
||||
+
|
||||
2012-08-05 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
|
||||
* configure.ac: Strengthen the test for working -nostdinc -isystem.
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,38 @@
|
||||
From cec2f4441396afd4c6abad10e51e5f0fe1dad686 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Tue, 4 Sep 2012 18:39:40 +0100
|
||||
Subject: [PATCH 022/364] * docs/man/grub-mkdevicemap.h2m: Remove, since
|
||||
grub-mkdevicemap is gone.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
docs/man/grub-mkdevicemap.h2m | 4 ----
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
delete mode 100644 docs/man/grub-mkdevicemap.h2m
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index ed23d17..09ffe65 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-04 Colin Watson <cjwatson@debian.org>
|
||||
+
|
||||
+ * docs/man/grub-mkdevicemap.h2m: Remove, since grub-mkdevicemap is
|
||||
+ gone.
|
||||
+
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* .bzrignore: Add grub-bios-setup, grub-ofpathname, and
|
||||
diff --git a/docs/man/grub-mkdevicemap.h2m b/docs/man/grub-mkdevicemap.h2m
|
||||
deleted file mode 100644
|
||||
index 3ef8e97..0000000
|
||||
--- a/docs/man/grub-mkdevicemap.h2m
|
||||
+++ /dev/null
|
||||
@@ -1,4 +0,0 @@
|
||||
-[NAME]
|
||||
-grub-mkdevicemap \- generate a GRUB device map file automatically
|
||||
-[SEE ALSO]
|
||||
-.BR grub-install (8)
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,27 @@
|
||||
From 9023fdb4b0f75d3c8e1d0e1b0199ecd416a18c59 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Tue, 4 Sep 2012 18:56:13 +0100
|
||||
Subject: [PATCH 023/364] * grub-core/mmap/mips/loongson: Remove empty
|
||||
directory.
|
||||
|
||||
---
|
||||
ChangeLog | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 09ffe65..5a938ae 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,4 +1,8 @@
|
||||
-2012-09-04 Colin Watson <cjwatson@debian.org>
|
||||
+2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * grub-core/mmap/mips/loongson: Remove empty directory.
|
||||
+
|
||||
+2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* docs/man/grub-mkdevicemap.h2m: Remove, since grub-mkdevicemap is
|
||||
gone.
|
||||
--
|
||||
1.8.1.4
|
||||
|
46
0024-Makefile.am-EXTRA_DIST-Add.patch
Normal file
46
0024-Makefile.am-EXTRA_DIST-Add.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From 75887218d652d578af29494dd54cd8733643653b Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Tue, 4 Sep 2012 18:59:41 +0100
|
||||
Subject: [PATCH 024/364] * Makefile.am (EXTRA_DIST): Add
|
||||
grub-core/tests/boot/linux.init-mips.S,
|
||||
grub-core/tests/boot/linux.init-ppc.S, and
|
||||
grub-core/tests/boot/linux-ppc.cfg.
|
||||
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
Makefile.am | 2 +-
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 5a938ae..b1950ab 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,12 @@
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * Makefile.am (EXTRA_DIST): Add
|
||||
+ grub-core/tests/boot/linux.init-mips.S,
|
||||
+ grub-core/tests/boot/linux.init-ppc.S, and
|
||||
+ grub-core/tests/boot/linux-ppc.cfg.
|
||||
+
|
||||
+2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* grub-core/mmap/mips/loongson: Remove empty directory.
|
||||
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index db9e930..3bb911c 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -377,7 +377,7 @@ if COND_powerpc_ieee1275
|
||||
BOOTCHECKS = bootcheck-linux-ppc
|
||||
endif
|
||||
|
||||
-EXTRA_DIST += grub-core/tests/boot/kbsd.init-i386.S grub-core/tests/boot/kbsd.init-x86_64.S grub-core/tests/boot/kbsd.spec.txt grub-core/tests/boot/kernel-8086.S grub-core/tests/boot/kernel-i386.S grub-core/tests/boot/kfreebsd-aout.cfg grub-core/tests/boot/kfreebsd.cfg grub-core/tests/boot/kfreebsd.init-i386.S grub-core/tests/boot/kfreebsd.init-x86_64.S grub-core/tests/boot/knetbsd.cfg grub-core/tests/boot/kopenbsd.cfg grub-core/tests/boot/kopenbsdlabel.txt grub-core/tests/boot/linux16.cfg grub-core/tests/boot/linux.cfg grub-core/tests/boot/linux.init-i386.S grub-core/tests/boot/linux.init-x86_64.S grub-core/tests/boot/multiboot2.cfg grub-core/tests/boot/multiboot.cfg grub-core/tests/boot/ntldr.cfg grub-core/tests/boot/pc-chainloader.cfg
|
||||
+EXTRA_DIST += grub-core/tests/boot/kbsd.init-i386.S grub-core/tests/boot/kbsd.init-x86_64.S grub-core/tests/boot/kbsd.spec.txt grub-core/tests/boot/kernel-8086.S grub-core/tests/boot/kernel-i386.S grub-core/tests/boot/kfreebsd-aout.cfg grub-core/tests/boot/kfreebsd.cfg grub-core/tests/boot/kfreebsd.init-i386.S grub-core/tests/boot/kfreebsd.init-x86_64.S grub-core/tests/boot/knetbsd.cfg grub-core/tests/boot/kopenbsd.cfg grub-core/tests/boot/kopenbsdlabel.txt grub-core/tests/boot/linux16.cfg grub-core/tests/boot/linux.cfg grub-core/tests/boot/linux.init-i386.S grub-core/tests/boot/linux.init-mips.S grub-core/tests/boot/linux.init-ppc.S grub-core/tests/boot/linux.init-x86_64.S grub-core/tests/boot/linux-ppc.cfg grub-core/tests/boot/multiboot2.cfg grub-core/tests/boot/multiboot.cfg grub-core/tests/boot/ntldr.cfg grub-core/tests/boot/pc-chainloader.cfg
|
||||
|
||||
.PHONY: bootcheck-linux-i386 bootcheck-linux-x86_64 \
|
||||
bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64 \
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,45 @@
|
||||
From e8ec492c1f16328149e2e2c1eed6c300529bcb7a Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Tue, 4 Sep 2012 23:35:38 +0100
|
||||
Subject: [PATCH 025/364] * Makefile.am (EXTRA_DIST): Add linguas.sh. It's
|
||||
only strictly required for checkouts from bzr, but it may be useful for users
|
||||
or distributors wishing to update translations against a tarball
|
||||
distribution, and it can be helpful for the tarball to be a superset of
|
||||
what's in bzr.
|
||||
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
Makefile.am | 2 ++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index b1950ab..fbef0c3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,13 @@
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * Makefile.am (EXTRA_DIST): Add linguas.sh. It's only strictly
|
||||
+ required for checkouts from bzr, but it may be useful for users or
|
||||
+ distributors wishing to update translations against a tarball
|
||||
+ distribution, and it can be helpful for the tarball to be a superset
|
||||
+ of what's in bzr.
|
||||
+
|
||||
+2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* Makefile.am (EXTRA_DIST): Add
|
||||
grub-core/tests/boot/linux.init-mips.S,
|
||||
grub-core/tests/boot/linux.init-ppc.S, and
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 3bb911c..30aa5a7 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -390,3 +390,5 @@ SUCCESSFUL_BOOT_STRING=3e49994fd5d82b7c9298d672d774080d
|
||||
BOOTCHECK_TIMEOUT=180
|
||||
|
||||
bootcheck: $(BOOTCHECKS)
|
||||
+
|
||||
+EXTRA_DIST += linguas.sh
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 981361e1db432371d895ac1339cc4a940cd6830e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 5 Sep 2012 08:45:07 +0200
|
||||
Subject: [PATCH 026/364] * grub-core/fs/xfs.c (grub_xfs_read_block):
|
||||
Make keys a const pointer.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/fs/xfs.c | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index fbef0c3..0cf6bea 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/fs/xfs.c (grub_xfs_read_block): Make keys a const pointer.
|
||||
+
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* Makefile.am (EXTRA_DIST): Add linguas.sh. It's only strictly
|
||||
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
|
||||
index 2c6b00c..1ed048f 100644
|
||||
--- a/grub-core/fs/xfs.c
|
||||
+++ b/grub-core/fs/xfs.c
|
||||
@@ -285,7 +285,7 @@ grub_xfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
|
||||
if (node->inode.format == XFS_INODE_FORMAT_BTREE)
|
||||
{
|
||||
- grub_uint64_t *keys;
|
||||
+ const grub_uint64_t *keys;
|
||||
int recoffset;
|
||||
|
||||
leaf = grub_malloc (node->data->bsize);
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 33437c4676de37bf30679b5874813af38e5c00c2 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 5 Sep 2012 08:47:39 +0200
|
||||
Subject: [PATCH 027/364] * grub-core/partmap/dvh.c (grub_dvh_is_valid):
|
||||
Add missing byteswap.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/partmap/dvh.c | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0cf6bea..70f0c86 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/partmap/dvh.c (grub_dvh_is_valid): Add missing byteswap.
|
||||
+
|
||||
+2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/xfs.c (grub_xfs_read_block): Make keys a const pointer.
|
||||
|
||||
2012-09-04 Colin Watson <cjwatson@ubuntu.com>
|
||||
diff --git a/grub-core/partmap/dvh.c b/grub-core/partmap/dvh.c
|
||||
index c8f467e..79ec01b 100644
|
||||
--- a/grub-core/partmap/dvh.c
|
||||
+++ b/grub-core/partmap/dvh.c
|
||||
@@ -57,7 +57,7 @@ grub_dvh_is_valid (grub_uint32_t *label)
|
||||
for (pos = label;
|
||||
pos < (label + sizeof (struct grub_dvh_block) / 4);
|
||||
pos++)
|
||||
- sum += *pos;
|
||||
+ sum += grub_be_to_cpu32 (*pos);
|
||||
|
||||
return ! sum;
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,42 @@
|
||||
From b7ae222dae310111f17da6e1fc072237977ac417 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 5 Sep 2012 08:51:31 +0200
|
||||
Subject: [PATCH 028/364] * grub-core/script/yylex.l: Ignore
|
||||
unused-function and sign-compare warnings.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/script/yylex.l | 2 ++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 70f0c86..66a0245 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/script/yylex.l: Ignore unused-function and sign-compare
|
||||
+ warnings.
|
||||
+
|
||||
+2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/partmap/dvh.c (grub_dvh_is_valid): Add missing byteswap.
|
||||
|
||||
2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
diff --git a/grub-core/script/yylex.l b/grub-core/script/yylex.l
|
||||
index f6a39c5..8fdcfef 100644
|
||||
--- a/grub-core/script/yylex.l
|
||||
+++ b/grub-core/script/yylex.l
|
||||
@@ -29,6 +29,8 @@
|
||||
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
|
||||
#pragma GCC diagnostic ignored "-Wmissing-declarations"
|
||||
#pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
|
||||
+#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
+#pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
|
||||
#define yyfree grub_lexer_yyfree
|
||||
#define yyalloc grub_lexer_yyalloc
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,67 @@
|
||||
From 41596a656df83fe0bd72944b711c127c68d28a94 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 5 Sep 2012 08:56:08 +0200
|
||||
Subject: [PATCH 029/364] * grub-core/disk/ieee1275/ofdisk.c (scan):
|
||||
Check function return value. * grub-core/lib/ieee1275/datetime.c
|
||||
(grub_get_datetime): Likewise. (grub_set_datetime): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/disk/ieee1275/ofdisk.c | 2 +-
|
||||
grub-core/lib/ieee1275/datetime.c | 4 ++--
|
||||
3 files changed, 9 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 66a0245..ff982b3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/disk/ieee1275/ofdisk.c (scan): Check function return value.
|
||||
+ * grub-core/lib/ieee1275/datetime.c (grub_get_datetime): Likewise.
|
||||
+ (grub_set_datetime): Likewise.
|
||||
+
|
||||
+2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/script/yylex.l: Ignore unused-function and sign-compare
|
||||
warnings.
|
||||
|
||||
diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
|
||||
index b0aa7ec..c9535a0 100644
|
||||
--- a/grub-core/disk/ieee1275/ofdisk.c
|
||||
+++ b/grub-core/disk/ieee1275/ofdisk.c
|
||||
@@ -178,7 +178,7 @@ scan (void)
|
||||
args.table = 0;
|
||||
args.nentries = 0;
|
||||
|
||||
- if (IEEE1275_CALL_ENTRY_FN (&args) == -1)
|
||||
+ if (IEEE1275_CALL_ENTRY_FN (&args) == -1 || args.catch_result)
|
||||
{
|
||||
grub_ieee1275_close (ihandle);
|
||||
return 0;
|
||||
diff --git a/grub-core/lib/ieee1275/datetime.c b/grub-core/lib/ieee1275/datetime.c
|
||||
index 1947135..8792429 100644
|
||||
--- a/grub-core/lib/ieee1275/datetime.c
|
||||
+++ b/grub-core/lib/ieee1275/datetime.c
|
||||
@@ -89,7 +89,7 @@ grub_get_datetime (struct grub_datetime *datetime)
|
||||
|
||||
grub_ieee1275_close (ihandle);
|
||||
|
||||
- if (status == -1)
|
||||
+ if (status == -1 || args.catch_result)
|
||||
return grub_error (GRUB_ERR_IO, "get-time failed");
|
||||
|
||||
datetime->year = args.year;
|
||||
@@ -148,7 +148,7 @@ grub_set_datetime (struct grub_datetime *datetime)
|
||||
|
||||
grub_ieee1275_close (ihandle);
|
||||
|
||||
- if (status == -1)
|
||||
+ if (status == -1 || args.catch_result)
|
||||
return grub_error (GRUB_ERR_IO, "set-time failed");
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From 53a8f5760591b14160bc07ef10f083882516ad27 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 5 Sep 2012 09:00:39 +0100
|
||||
Subject: [PATCH 030/364] * util/import_gcry.py: Sort cipher_files, to make
|
||||
build system generation more deterministic.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/import_gcry.py | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index ff982b3..9124825 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-05 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * util/import_gcry.py: Sort cipher_files, to make build system
|
||||
+ generation more deterministic.
|
||||
+
|
||||
2012-09-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/disk/ieee1275/ofdisk.c (scan): Check function return value.
|
||||
diff --git a/util/import_gcry.py b/util/import_gcry.py
|
||||
index 18966a6..64c5870 100644
|
||||
--- a/util/import_gcry.py
|
||||
+++ b/util/import_gcry.py
|
||||
@@ -40,7 +40,7 @@ try:
|
||||
except:
|
||||
print ("WARNING: %s already exists" % cipher_dir_out)
|
||||
|
||||
-cipher_files = os.listdir (cipher_dir_in)
|
||||
+cipher_files = sorted (os.listdir (cipher_dir_in))
|
||||
conf = codecs.open (os.path.join ("grub-core", "Makefile.gcry.def"), "w", "utf-8")
|
||||
conf.write ("AutoGen definitions Makefile.tpl;\n\n")
|
||||
confutil = codecs.open ("Makefile.utilgcry.def", "w", "utf-8")
|
||||
--
|
||||
1.8.1.4
|
||||
|
39
0031-NEWS-Fix-typo.patch
Normal file
39
0031-NEWS-Fix-typo.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From f333a71c6c02232151d9af98a8beae3b5e23e102 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 5 Sep 2012 13:55:54 +0100
|
||||
Subject: [PATCH 031/364] * NEWS: Fix typo.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
NEWS | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 9124825..9323887 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2012-09-05 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * NEWS: Fix typo.
|
||||
+
|
||||
+2012-09-05 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* util/import_gcry.py: Sort cipher_files, to make build system
|
||||
generation more deterministic.
|
||||
|
||||
diff --git a/NEWS b/NEWS
|
||||
index f9b06ab..4bb5f98 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -1,6 +1,6 @@
|
||||
New in 2.00:
|
||||
|
||||
-* Appearence:
|
||||
+* Appearance:
|
||||
* Official theme for gfxmenu (starfield)
|
||||
* Menu is organised with submenus.
|
||||
* Better default video mode selection using EDID.
|
||||
--
|
||||
1.8.1.4
|
||||
|
38
0032-configure.ac-Add-SuSe-path.patch
Normal file
38
0032-configure.ac-Add-SuSe-path.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From 4b13dd6c2fe6f75027c51f4b2616509040a5ea33 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Slaby <jslaby@suse.cz>
|
||||
Date: Wed, 5 Sep 2012 16:09:41 +0200
|
||||
Subject: [PATCH 032/364] * configure.ac: Add SuSe path.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
configure.ac | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 9323887..10b1ab3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-09-05 Jiri Slaby <jslaby@suse.cz>
|
||||
+
|
||||
+ * configure.ac: Add SuSe path.
|
||||
+
|
||||
2012-09-05 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* NEWS: Fix typo.
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 190665d..ea3830a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -242,7 +242,7 @@ fi
|
||||
FONT_SOURCE=
|
||||
|
||||
for ext in pcf pcf.gz bdf bdf.gz ttf ttf.gz; do
|
||||
- for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont; do
|
||||
+ for dir in . /usr/src /usr/share/fonts/X11/misc /usr/share/fonts/unifont /usr/share/fonts/uni; do
|
||||
if test -f "$dir/unifont.$ext"; then
|
||||
FONT_SOURCE="$dir/unifont.$ext"
|
||||
break 2
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -1,42 +1,44 @@
|
||||
From 2c7cdc59a8d6cb7800c73b90aa75cc8b21807af6 Mon Sep 17 00:00:00 2001
|
||||
From 9e9382ece3511ff530cfb3e1c1e7a7dbaa3416b6 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Thu, 24 May 2012 08:37:21 -0400
|
||||
Subject: [PATCH] Add support for entering the firmware setup screen.
|
||||
Date: Sat, 8 Sep 2012 09:40:24 +0200
|
||||
Subject: [PATCH 033/364] * grub-core/Makefile.core.def (efifwsetup):
|
||||
New module. * grub-core/commands/efi/efifwsetup.c: New file. *
|
||||
grub-core/kern/efi/efi.c (grub_efi_set_variable): New function *
|
||||
include/grub/efi/api.h (GRUB_EFI_OS_INDICATIONS_BOOT_TO_FW_UI): New
|
||||
define. * include/grub/efi/efi.h (grub_efi_set_variable): New proto.
|
||||
|
||||
This adds a command "fwsetup", with which you can enter your firmware
|
||||
setup screen. The mechanism is to set a global UEFI variable with a
|
||||
specific value and reboot.
|
||||
---
|
||||
ChangeLog | 8 ++++
|
||||
ChangeLog | 9 ++++
|
||||
grub-core/Makefile.core.def | 6 +++
|
||||
grub-core/commands/efi/efifwsetup.c | 88 +++++++++++++++++++++++++++++++++++
|
||||
grub-core/kern/efi/efi.c | 30 ++++++++++++
|
||||
grub-core/commands/efi/efifwsetup.c | 90 +++++++++++++++++++++++++++++++++++++
|
||||
grub-core/kern/efi/efi.c | 30 +++++++++++++
|
||||
include/grub/efi/api.h | 2 +
|
||||
include/grub/efi/efi.h | 5 ++
|
||||
6 files changed, 139 insertions(+)
|
||||
include/grub/efi/efi.h | 5 +++
|
||||
6 files changed, 142 insertions(+)
|
||||
create mode 100644 grub-core/commands/efi/efifwsetup.c
|
||||
|
||||
#diff --git a/ChangeLog b/ChangeLog
|
||||
#index ce52576..29ebcbd 100644
|
||||
#--- a/ChangeLog
|
||||
#+++ b/ChangeLog
|
||||
#@@ -1,3 +1,11 @@
|
||||
#+2012-05-24 Peter Jones <pjones@redhat.com>
|
||||
#+
|
||||
#+ * grub-core/Makefile.core.def: add efifwsetup module
|
||||
#+ * grub-core/commands/efi/efifwsetup.c: add code for fwsetup command
|
||||
#+ * grub-core/kern/efi/efi.c (grub_efi_set_variable): New function
|
||||
#+ * include/grub/efi/api.h: add define for OsIndications variable
|
||||
#+ * include/grub/efi/efi.h: export grub_efi_set_variable
|
||||
#+
|
||||
# 2012-05-31 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
#
|
||||
# * configure.ac: Bump to beta6.
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 10b1ab3..e8f0577 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,12 @@
|
||||
+2012-09-08 Peter Jones <pjones@redhat.com>
|
||||
+
|
||||
+ * grub-core/Makefile.core.def (efifwsetup): New module.
|
||||
+ * grub-core/commands/efi/efifwsetup.c: New file.
|
||||
+ * grub-core/kern/efi/efi.c (grub_efi_set_variable): New function
|
||||
+ * include/grub/efi/api.h (GRUB_EFI_OS_INDICATIONS_BOOT_TO_FW_UI):
|
||||
+ New define.
|
||||
+ * include/grub/efi/efi.h (grub_efi_set_variable): New proto.
|
||||
+
|
||||
2012-09-05 Jiri Slaby <jslaby@suse.cz>
|
||||
|
||||
* configure.ac: Add SuSe path.
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 000cf0d..d0c06d5 100644
|
||||
index de702d6..7a7b97a 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -576,6 +576,12 @@ module = {
|
||||
@@ -575,6 +575,12 @@ module = {
|
||||
};
|
||||
|
||||
module = {
|
||||
@ -51,10 +53,10 @@ index 000cf0d..d0c06d5 100644
|
||||
};
|
||||
diff --git a/grub-core/commands/efi/efifwsetup.c b/grub-core/commands/efi/efifwsetup.c
|
||||
new file mode 100644
|
||||
index 0000000..756a14c
|
||||
index 0000000..7a137a7
|
||||
--- /dev/null
|
||||
+++ b/grub-core/commands/efi/efifwsetup.c
|
||||
@@ -0,0 +1,88 @@
|
||||
@@ -0,0 +1,90 @@
|
||||
+/* fwsetup.c - Reboot into firmware setup menu. */
|
||||
+/*
|
||||
+ * GRUB -- GRand Unified Bootloader
|
||||
@ -73,12 +75,14 @@ index 0000000..756a14c
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#include <grub/types.h>
|
||||
+#include <grub/mm.h>
|
||||
+#include <grub/misc.h>
|
||||
+#include <grub/efi/api.h>
|
||||
+#include <grub/efi/efi.h>
|
||||
+#include <grub/command.h>
|
||||
+#include <grub/i18n.h>
|
||||
+
|
||||
+GRUB_MOD_LICENSE ("GPLv3+");
|
||||
+
|
||||
@ -93,18 +97,18 @@ index 0000000..756a14c
|
||||
+ grub_size_t oi_size;
|
||||
+ grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;
|
||||
+
|
||||
+ old_os_indications = grub_efi_get_variable("OsIndications", &global,
|
||||
+ old_os_indications = grub_efi_get_variable ("OsIndications", &global,
|
||||
+ &oi_size);
|
||||
+
|
||||
+ if (old_os_indications != NULL && oi_size == sizeof(*old_os_indications))
|
||||
+ if (old_os_indications != NULL && oi_size == sizeof (os_indications))
|
||||
+ os_indications |= *old_os_indications;
|
||||
+
|
||||
+ status = grub_efi_set_variable("OsIndications", &global, &os_indications,
|
||||
+ status = grub_efi_set_variable ("OsIndications", &global, &os_indications,
|
||||
+ sizeof (os_indications));
|
||||
+ if (status != GRUB_ERR_NONE)
|
||||
+ return status;
|
||||
+
|
||||
+ grub_reboot();
|
||||
+ grub_reboot ();
|
||||
+
|
||||
+ return GRUB_ERR_BUG;
|
||||
+}
|
||||
@ -112,13 +116,13 @@ index 0000000..756a14c
|
||||
+static grub_command_t cmd = NULL;
|
||||
+
|
||||
+static grub_efi_boolean_t
|
||||
+efifwsetup_is_supported(void)
|
||||
+efifwsetup_is_supported (void)
|
||||
+{
|
||||
+ grub_efi_uint64_t *os_indications_supported = NULL;
|
||||
+ grub_size_t oi_size = 0;
|
||||
+ grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;
|
||||
+
|
||||
+ os_indications_supported = grub_efi_get_variable("OsIndicationsSupported",
|
||||
+ os_indications_supported = grub_efi_get_variable ("OsIndicationsSupported",
|
||||
+ &global, &oi_size);
|
||||
+
|
||||
+ if (!os_indications_supported)
|
||||
@ -130,25 +134,25 @@ index 0000000..756a14c
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_INIT(efifwsetup)
|
||||
+GRUB_MOD_INIT (efifwsetup)
|
||||
+{
|
||||
+ if (efifwsetup_is_supported())
|
||||
+ cmd = grub_register_command("fwsetup", grub_cmd_fwsetup, "",
|
||||
+ "Reboot into firmware setup menu.");
|
||||
+ if (efifwsetup_is_supported ())
|
||||
+ cmd = grub_register_command ("fwsetup", grub_cmd_fwsetup, NULL,
|
||||
+ N_("Reboot into firmware setup menu."));
|
||||
+
|
||||
+}
|
||||
+
|
||||
+GRUB_MOD_FINI(efifwsetup)
|
||||
+GRUB_MOD_FINI (efifwsetup)
|
||||
+{
|
||||
+ if (cmd)
|
||||
+ grub_unregister_command (cmd);
|
||||
+}
|
||||
diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
|
||||
index 6f12c76..7a418a6 100644
|
||||
index 02d2f9a..e8a62ec 100644
|
||||
--- a/grub-core/kern/efi/efi.c
|
||||
+++ b/grub-core/kern/efi/efi.c
|
||||
@@ -230,6 +230,36 @@ grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
return NULL;
|
||||
@@ -181,6 +181,36 @@ grub_efi_set_virtual_address_map (grub_efi_uintn_t memory_map_size,
|
||||
return grub_error (GRUB_ERR_IO, "set_virtual_address_map failed");
|
||||
}
|
||||
|
||||
+grub_err_t
|
||||
@ -170,22 +174,22 @@ index 6f12c76..7a418a6 100644
|
||||
+
|
||||
+ r = grub_efi_system_table->runtime_services;
|
||||
+
|
||||
+ grub_efi_uint32_t attributes = GRUB_EFI_VARIABLE_NON_VOLATILE |
|
||||
+ GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
+ GRUB_EFI_VARIABLE_RUNTIME_ACCESS;
|
||||
+
|
||||
+ status = efi_call_5 (r->set_variable, var16, guid, attributes, datasize,data);
|
||||
+ status = efi_call_5 (r->set_variable, var16, guid,
|
||||
+ (GRUB_EFI_VARIABLE_NON_VOLATILE
|
||||
+ | GRUB_EFI_VARIABLE_BOOTSERVICE_ACCESS
|
||||
+ | GRUB_EFI_VARIABLE_RUNTIME_ACCESS),
|
||||
+ datasize, data);
|
||||
+ if (status == GRUB_EFI_SUCCESS)
|
||||
+ return GRUB_ERR_NONE;
|
||||
+
|
||||
+ return grub_error (GRUB_ERR_IO, "could not set EFI variable `%s'", var);
|
||||
+}
|
||||
+
|
||||
#pragma GCC diagnostic ignored "-Wcast-align"
|
||||
|
||||
/* Search the mods section from the PE32/PE32+ image. This code uses
|
||||
void *
|
||||
grub_efi_get_variable (const char *var, const grub_efi_guid_t *guid,
|
||||
grub_size_t *datasize_out)
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index 26127de..a47a4e3 100644
|
||||
index 9e7a8d8..ae61730 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -58,6 +58,8 @@
|
||||
@ -214,5 +218,5 @@ index e67d92b..489cf9e 100644
|
||||
EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
|
||||
const grub_efi_device_path_t *dp2);
|
||||
--
|
||||
1.7.10.1
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,50 @@
|
||||
From 8f779ade959a72267dcc045ad71012bf37cb96e0 Mon Sep 17 00:00:00 2001
|
||||
From: Benoit Gschwind <gschwind>
|
||||
Date: Mon, 10 Sep 2012 09:34:29 +0200
|
||||
Subject: [PATCH 034/364] * grub-core/loader/efi/appleloader.c
|
||||
(devpath_8): New var. (devs): Add devpath_8.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/loader/efi/appleloader.c | 5 +++++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index e8f0577..6886bcc 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-10 Benoit Gschwind <gschwind>
|
||||
+
|
||||
+ * grub-core/loader/efi/appleloader.c (devpath_8): New var.
|
||||
+ (devs): Add devpath_8.
|
||||
+
|
||||
2012-09-08 Peter Jones <pjones@redhat.com>
|
||||
|
||||
* grub-core/Makefile.core.def (efifwsetup): New module.
|
||||
diff --git a/grub-core/loader/efi/appleloader.c b/grub-core/loader/efi/appleloader.c
|
||||
index e2de89f..56d5538 100644
|
||||
--- a/grub-core/loader/efi/appleloader.c
|
||||
+++ b/grub-core/loader/efi/appleloader.c
|
||||
@@ -127,6 +127,10 @@ static struct piwg_full_device_path devpath_6 = MAKE_PIWG_PATH (0xffcc4000,
|
||||
static struct piwg_full_device_path devpath_7 = MAKE_PIWG_PATH (0xff981000,
|
||||
0xffc8ffff);
|
||||
|
||||
+/* mid-2012 MBP retina (MacBookPro10,1) */
|
||||
+static struct piwg_full_device_path devpath_8 = MAKE_PIWG_PATH (0xff990000,
|
||||
+ 0xffb2ffff);
|
||||
+
|
||||
struct devdata
|
||||
{
|
||||
const char *model;
|
||||
@@ -142,6 +146,7 @@ struct devdata devs[] =
|
||||
{"MB NV", (grub_efi_device_path_t *) &devpath_5},
|
||||
{"MB NV2", (grub_efi_device_path_t *) &devpath_6},
|
||||
{"MBP2011", (grub_efi_device_path_t *) &devpath_7},
|
||||
+ {"MBP2012", (grub_efi_device_path_t *) &devpath_8},
|
||||
{NULL, NULL},
|
||||
};
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
106
0035-grub-core-disk-diskfilter.c-free_array-GRUB_UTIL-Fix.patch
Normal file
106
0035-grub-core-disk-diskfilter.c-free_array-GRUB_UTIL-Fix.patch
Normal file
@ -0,0 +1,106 @@
|
||||
From 56348e90bcc1076de7b2aba73b52fa1bafee4478 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 11 Sep 2012 07:53:26 +0200
|
||||
Subject: [PATCH 035/364] * grub-core/disk/diskfilter.c (free_array)
|
||||
[GRUB_UTIL]: Fix memory leak. * util/getroot.c (grub_find_device): Likewise.
|
||||
(get_mdadm_uuid): Likewise. (grub_util_is_imsm): Likewise.
|
||||
(grub_util_pull_device): Likewise. * util/grub-probe.c (probe): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 9 +++++++++
|
||||
grub-core/disk/diskfilter.c | 3 +++
|
||||
util/getroot.c | 13 +++++++++++--
|
||||
util/grub-probe.c | 1 +
|
||||
4 files changed, 24 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 6886bcc..c697e17 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,12 @@
|
||||
+2012-09-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/disk/diskfilter.c (free_array) [GRUB_UTIL]: Fix memory leak.
|
||||
+ * util/getroot.c (grub_find_device): Likewise.
|
||||
+ (get_mdadm_uuid): Likewise.
|
||||
+ (grub_util_is_imsm): Likewise.
|
||||
+ (grub_util_pull_device): Likewise.
|
||||
+ * util/grub-probe.c (probe): Likewise.
|
||||
+
|
||||
2012-09-10 Benoit Gschwind <gschwind>
|
||||
|
||||
* grub-core/loader/efi/appleloader.c (devpath_8): New var.
|
||||
diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
|
||||
index 6e9745e..ce4c706 100644
|
||||
--- a/grub-core/disk/diskfilter.c
|
||||
+++ b/grub-core/disk/diskfilter.c
|
||||
@@ -1130,6 +1130,9 @@ free_array (void)
|
||||
grub_disk_close (pv->disk);
|
||||
if (pv->id.uuidlen)
|
||||
grub_free (pv->id.uuid);
|
||||
+#ifdef GRUB_UTIL
|
||||
+ grub_free (pv->partmaps);
|
||||
+#endif
|
||||
grub_free (pv->internal_id);
|
||||
grub_free (pv);
|
||||
}
|
||||
diff --git a/util/getroot.c b/util/getroot.c
|
||||
index e103fb6..b97bea6 100644
|
||||
--- a/util/getroot.c
|
||||
+++ b/util/getroot.c
|
||||
@@ -918,7 +918,10 @@ grub_find_device (const char *dir, dev_t dev)
|
||||
grub files */
|
||||
|
||||
if (strcmp(res, "/dev/root") == 0)
|
||||
- continue;
|
||||
+ {
|
||||
+ free (res);
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
if (chdir (saved_cwd) < 0)
|
||||
grub_util_error ("%s", _("cannot restore the original directory"));
|
||||
@@ -1363,6 +1366,7 @@ get_mdadm_uuid (const char *os_dev)
|
||||
out:
|
||||
close (fd);
|
||||
waitpid (pid, NULL, 0);
|
||||
+ free (buf);
|
||||
|
||||
return name;
|
||||
}
|
||||
@@ -1437,6 +1441,8 @@ grub_util_is_imsm (const char *os_dev)
|
||||
}
|
||||
}
|
||||
|
||||
+ free (buf);
|
||||
+
|
||||
return 0;
|
||||
|
||||
out:
|
||||
@@ -1577,7 +1583,10 @@ grub_util_pull_device (const char *os_dev)
|
||||
char **devicelist = grub_util_raid_getmembers (os_dev, 0);
|
||||
int i;
|
||||
for (i = 0; devicelist[i];i++)
|
||||
- grub_util_pull_device (devicelist[i]);
|
||||
+ {
|
||||
+ grub_util_pull_device (devicelist[i]);
|
||||
+ free (devicelist[i]);
|
||||
+ }
|
||||
free (devicelist);
|
||||
}
|
||||
#endif
|
||||
diff --git a/util/grub-probe.c b/util/grub-probe.c
|
||||
index 6dd1073..c2a0f62 100644
|
||||
--- a/util/grub-probe.c
|
||||
+++ b/util/grub-probe.c
|
||||
@@ -474,6 +474,7 @@ probe (const char *path, char **device_names, char delim)
|
||||
printf ("%s", label);
|
||||
putchar (delim);
|
||||
}
|
||||
+ grub_device_close (dev);
|
||||
goto end;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,70 @@
|
||||
From c7d45a90490c5f3337a6412a6ebe500e3a41a63b Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 12 Sep 2012 08:27:26 +0200
|
||||
Subject: [PATCH 036/364] Don't require grub-mkconfig_lib to generate
|
||||
manpages for programs.
|
||||
|
||||
* gentpl.py (manpage): Additional argument adddeps. Add adddeps to
|
||||
dependencies, don't add grub-mkconfig_lib.
|
||||
(program): Pass empty adddeps.
|
||||
(script): Pass grub-mkconfig_lib as adddeps.
|
||||
---
|
||||
ChangeLog | 9 +++++++++
|
||||
gentpl.py | 8 ++++----
|
||||
2 files changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index c697e17..8576923 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,12 @@
|
||||
+2012-09-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ Don't require grub-mkconfig_lib to generate manpages for programs.
|
||||
+
|
||||
+ * gentpl.py (manpage): Additional argument adddeps. Add adddeps to
|
||||
+ dependencies, don't add grub-mkconfig_lib.
|
||||
+ (program): Pass empty adddeps.
|
||||
+ (script): Pass grub-mkconfig_lib as adddeps.
|
||||
+
|
||||
2012-09-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/disk/diskfilter.c (free_array) [GRUB_UTIL]: Fix memory leak.
|
||||
diff --git a/gentpl.py b/gentpl.py
|
||||
index bab4a8a..6d7f613 100644
|
||||
--- a/gentpl.py
|
||||
+++ b/gentpl.py
|
||||
@@ -484,10 +484,10 @@ def library(platform):
|
||||
def installdir(default="bin"):
|
||||
return "[+ IF installdir +][+ installdir +][+ ELSE +]" + default + "[+ ENDIF +]"
|
||||
|
||||
-def manpage():
|
||||
+def manpage(adddeps):
|
||||
r = "if COND_MAN_PAGES\n"
|
||||
r += gvar_add("man_MANS", "[+ name +].[+ mansection +]\n")
|
||||
- r += rule("[+ name +].[+ mansection +]", "[+ name +] grub-mkconfig_lib", """
|
||||
+ r += rule("[+ name +].[+ mansection +]", "[+ name +] " + adddeps, """
|
||||
chmod a+x [+ name +]
|
||||
PATH=$(builddir):$$PATH pkgdatadir=$(builddir) $(HELP2MAN) --section=[+ mansection +] -i $(top_srcdir)/docs/man/[+ name +].h2m -o $@ [+ name +]
|
||||
""")
|
||||
@@ -503,7 +503,7 @@ def program(platform, test=False):
|
||||
r += gvar_add("TESTS", "[+ name +]")
|
||||
r += "[+ ELSE +]"
|
||||
r += var_add(installdir() + "_PROGRAMS", "[+ name +]")
|
||||
- r += "[+ IF mansection +]" + manpage() + "[+ ENDIF +]"
|
||||
+ r += "[+ IF mansection +]" + manpage("") + "[+ ENDIF +]"
|
||||
r += "[+ ENDIF +]"
|
||||
|
||||
r += var_set(cname() + "_SOURCES", platform_sources(platform))
|
||||
@@ -532,7 +532,7 @@ def script(platform):
|
||||
r += gvar_add ("TESTS", "[+ name +]")
|
||||
r += "[+ ELSE +]"
|
||||
r += var_add(installdir() + "_SCRIPTS", "[+ name +]")
|
||||
- r += "[+ IF mansection +]" + manpage() + "[+ ENDIF +]"
|
||||
+ r += "[+ IF mansection +]" + manpage("grub-mkconfig_lib") + "[+ ENDIF +]"
|
||||
r += "[+ ENDIF +]"
|
||||
|
||||
r += rule("[+ name +]", platform_sources(platform) + " $(top_builddir)/config.status", """
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,90 @@
|
||||
From 085ef74104c8f1a5d2cc68a0d1a2e0569827d6f4 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 12 Sep 2012 08:31:05 +0200
|
||||
Subject: [PATCH 037/364] * include/grub/efi/api.h
|
||||
(grub_efi_runtime_services): Make vendor_guid a const pointer. *
|
||||
grub-core/efiemu/runtime/efiemu.c (efiemu_memcpy): Make from a const
|
||||
pointer. (efiemu_set_variable): Make vendor_guid a const pointer.
|
||||
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
grub-core/efiemu/runtime/efiemu.c | 14 +++++++-------
|
||||
include/grub/efi/api.h | 2 +-
|
||||
3 files changed, 16 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 8576923..527e9d1 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,13 @@
|
||||
2012-09-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * include/grub/efi/api.h (grub_efi_runtime_services): Make vendor_guid
|
||||
+ a const pointer.
|
||||
+ * grub-core/efiemu/runtime/efiemu.c (efiemu_memcpy): Make from a
|
||||
+ const pointer.
|
||||
+ (efiemu_set_variable): Make vendor_guid a const pointer.
|
||||
+
|
||||
+2012-09-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
Don't require grub-mkconfig_lib to generate manpages for programs.
|
||||
|
||||
* gentpl.py (manpage): Additional argument adddeps. Add adddeps to
|
||||
diff --git a/grub-core/efiemu/runtime/efiemu.c b/grub-core/efiemu/runtime/efiemu.c
|
||||
index 84b02cb..d923e40 100644
|
||||
--- a/grub-core/efiemu/runtime/efiemu.c
|
||||
+++ b/grub-core/efiemu/runtime/efiemu.c
|
||||
@@ -78,7 +78,7 @@ efiemu_get_next_variable_name (grub_efi_uintn_t *variable_name_size,
|
||||
|
||||
grub_efi_status_t
|
||||
efiemu_set_variable (grub_efi_char16_t *variable_name,
|
||||
- grub_efi_guid_t *vendor_guid,
|
||||
+ const grub_efi_guid_t *vendor_guid,
|
||||
grub_efi_uint32_t attributes,
|
||||
grub_efi_uintn_t data_size,
|
||||
void *data);
|
||||
@@ -131,11 +131,11 @@ extern grub_uint32_t efiemu_time_accuracy;
|
||||
|
||||
/* Some standard functions because we need to be standalone */
|
||||
static void
|
||||
-efiemu_memcpy (void *to, void *from, int count)
|
||||
+efiemu_memcpy (void *to, const void *from, int count)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < count; i++)
|
||||
- ((grub_uint8_t *) to)[i] = ((grub_uint8_t *) from)[i];
|
||||
+ ((grub_uint8_t *) to)[i] = ((const grub_uint8_t *) from)[i];
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -503,10 +503,10 @@ grub_efi_status_t EFI_FUNC
|
||||
|
||||
grub_efi_status_t
|
||||
EFI_FUNC (efiemu_set_variable) (grub_efi_char16_t *variable_name,
|
||||
- grub_efi_guid_t *vendor_guid,
|
||||
- grub_efi_uint32_t attributes,
|
||||
- grub_efi_uintn_t data_size,
|
||||
- void *data)
|
||||
+ const grub_efi_guid_t *vendor_guid,
|
||||
+ grub_efi_uint32_t attributes,
|
||||
+ grub_efi_uintn_t data_size,
|
||||
+ void *data)
|
||||
{
|
||||
struct efi_variable *efivar;
|
||||
grub_uint8_t *ptr;
|
||||
diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
|
||||
index ae61730..2917d14 100644
|
||||
--- a/include/grub/efi/api.h
|
||||
+++ b/include/grub/efi/api.h
|
||||
@@ -1208,7 +1208,7 @@ struct grub_efi_runtime_services
|
||||
|
||||
grub_efi_status_t
|
||||
(*set_variable) (grub_efi_char16_t *variable_name,
|
||||
- grub_efi_guid_t *vendor_guid,
|
||||
+ const grub_efi_guid_t *vendor_guid,
|
||||
grub_efi_uint32_t attributes,
|
||||
grub_efi_uintn_t data_size,
|
||||
void *data);
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,74 @@
|
||||
From 5ba7247c064336767ee6b0ad9465b547ac90322a Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 14 Sep 2012 11:23:36 +0100
|
||||
Subject: [PATCH 038/364] * grub-core/term/terminfo.c: Only fix up powerpc key
|
||||
repeat on IEEE1275 machines. Fixes powerpc-emu compilation. *
|
||||
include/grub/terminfo.h: Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/term/terminfo.c | 6 +++---
|
||||
include/grub/terminfo.h | 2 +-
|
||||
3 files changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 527e9d1..941ed93 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,9 @@
|
||||
+2012-09-14 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * grub-core/term/terminfo.c: Only fix up powerpc key repeat on
|
||||
+ IEEE1275 machines. Fixes powerpc-emu compilation.
|
||||
+ * include/grub/terminfo.h: Likewise.
|
||||
+
|
||||
2012-09-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* include/grub/efi/api.h (grub_efi_runtime_services): Make vendor_guid
|
||||
diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
|
||||
index e35563f..d421e4e 100644
|
||||
--- a/grub-core/term/terminfo.c
|
||||
+++ b/grub-core/term/terminfo.c
|
||||
@@ -33,7 +33,7 @@
|
||||
#include <grub/extcmd.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/time.h>
|
||||
-#ifdef __powerpc__
|
||||
+#if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)
|
||||
#include <grub/ieee1275/ieee1275.h>
|
||||
#endif
|
||||
|
||||
@@ -563,7 +563,7 @@ grub_terminfo_getkey (struct grub_term_input *termi)
|
||||
grub_terminfo_readkey (termi, data->input_buf,
|
||||
&data->npending, data->readkey);
|
||||
|
||||
-#ifdef __powerpc__
|
||||
+#if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)
|
||||
if (data->npending == 1 && data->input_buf[0] == '\e'
|
||||
&& grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_BROKEN_REPEAT)
|
||||
&& grub_get_time_ms () - data->last_key_time < 1000
|
||||
@@ -580,7 +580,7 @@ grub_terminfo_getkey (struct grub_term_input *termi)
|
||||
int ret;
|
||||
data->npending--;
|
||||
ret = data->input_buf[0];
|
||||
-#ifdef __powerpc__
|
||||
+#if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)
|
||||
if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_BROKEN_REPEAT))
|
||||
{
|
||||
data->last_key = ret;
|
||||
diff --git a/include/grub/terminfo.h b/include/grub/terminfo.h
|
||||
index c081a92..20541a9 100644
|
||||
--- a/include/grub/terminfo.h
|
||||
+++ b/include/grub/terminfo.h
|
||||
@@ -32,7 +32,7 @@ struct grub_terminfo_input_state
|
||||
{
|
||||
int input_buf[GRUB_TERMINFO_READKEY_MAX_LEN];
|
||||
int npending;
|
||||
-#ifdef __powerpc__
|
||||
+#if defined(__powerpc__) && defined(GRUB_MACHINE_IEEE1275)
|
||||
int last_key;
|
||||
grub_uint64_t last_key_time;
|
||||
#endif
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 7efa81764aa812d1f44ff53fb42472befea19f0b Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Mon, 17 Sep 2012 16:58:50 +0100
|
||||
Subject: [PATCH 039/364] * util/grub-mkconfig_lib.in (grub_quote): Remove
|
||||
outdated sentence from comment.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-mkconfig_lib.in | 6 ++----
|
||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 941ed93..de80a94 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-17 Colin Watson <cjwatson@debian.org>
|
||||
+
|
||||
+ * util/grub-mkconfig_lib.in (grub_quote): Remove outdated sentence
|
||||
+ from comment.
|
||||
+
|
||||
2012-09-14 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/term/terminfo.c: Only fix up powerpc key repeat on
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index beb52ee..a9f5809 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -255,10 +255,8 @@ version_find_latest ()
|
||||
echo "$version_find_latest_a"
|
||||
}
|
||||
|
||||
-# One layer of quotation is eaten by "" and the second by
|
||||
-# sed; so this turns ' into \'. Note that you must use the output of
|
||||
-# this function in a printf format string.
|
||||
-
|
||||
+# One layer of quotation is eaten by "" and the second by sed; so this turns
|
||||
+# ' into \'.
|
||||
grub_quote () {
|
||||
sed "s/'/'\\\\''/g"
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,42 @@
|
||||
From 1f5027bb0ec48851cc2f9c54552a6ec1f1145930 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 18 Sep 2012 11:44:29 +0200
|
||||
Subject: [PATCH 040/364] * grub-core/loader/i386/linux.c
|
||||
(grub_cmd_linux): Fix incorrect le-conversion. Reported by: BURETTE,
|
||||
Bernard.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/loader/i386/linux.c | 2 +-
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index de80a94..b524cf6 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,9 @@
|
||||
+2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/loader/i386/linux.c (grub_cmd_linux): Fix incorrect
|
||||
+ le-conversion.
|
||||
+ Reported by: BURETTE, Bernard.
|
||||
+
|
||||
2012-09-17 Colin Watson <cjwatson@debian.org>
|
||||
|
||||
* util/grub-mkconfig_lib.in (grub_quote): Remove outdated sentence
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index d34b2f8..bcb037c 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -839,7 +839,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
|
||||
#ifdef GRUB_MACHINE_EFI
|
||||
#ifdef __x86_64__
|
||||
- if (grub_le_to_cpu16 (params->version < 0x0208) &&
|
||||
+ if (grub_le_to_cpu16 (params->version) < 0x0208 &&
|
||||
((grub_addr_t) grub_efi_system_table >> 32) != 0)
|
||||
return grub_error(GRUB_ERR_BAD_OS,
|
||||
"kernel does not support 64-bit addressing");
|
||||
--
|
||||
1.8.1.4
|
||||
|
121
0041-grub-core-kern-ieee1275-cmain.c-grub_ieee1275_find_o.patch
Normal file
121
0041-grub-core-kern-ieee1275-cmain.c-grub_ieee1275_find_o.patch
Normal file
@ -0,0 +1,121 @@
|
||||
From 731ae0c1c7c0458a257e75c55b7739881dc2d5ed Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 18 Sep 2012 11:52:19 +0200
|
||||
Subject: [PATCH 041/364] * grub-core/kern/ieee1275/cmain.c
|
||||
(grub_ieee1275_find_options): Set
|
||||
GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN on mac. *
|
||||
grub-core/term/ieee1275/console.c (grub_console_init_lately): Use
|
||||
ieee1275-nocursor if GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN is set.
|
||||
* grub-core/term/terminfo.c (grub_terminfo_set_current): Add new type
|
||||
ieee1275-nocursor. * include/grub/ieee1275/ieee1275.h
|
||||
(grub_ieee1275_flag): New value
|
||||
GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN.
|
||||
|
||||
---
|
||||
ChangeLog | 11 +++++++++++
|
||||
grub-core/kern/ieee1275/cmain.c | 1 +
|
||||
grub-core/term/ieee1275/console.c | 3 ++-
|
||||
grub-core/term/terminfo.c | 15 ++++++++++++---
|
||||
include/grub/ieee1275/ieee1275.h | 4 +++-
|
||||
5 files changed, 29 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index b524cf6..3752a79 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,16 @@
|
||||
2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
|
||||
+ GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN on mac.
|
||||
+ * grub-core/term/ieee1275/console.c (grub_console_init_lately): Use
|
||||
+ ieee1275-nocursor if GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN is set.
|
||||
+ * grub-core/term/terminfo.c (grub_terminfo_set_current): Add new type
|
||||
+ ieee1275-nocursor.
|
||||
+ * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New value
|
||||
+ GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN.
|
||||
+
|
||||
+2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/loader/i386/linux.c (grub_cmd_linux): Fix incorrect
|
||||
le-conversion.
|
||||
Reported by: BURETTE, Bernard.
|
||||
diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c
|
||||
index dd04d39..789669a 100644
|
||||
--- a/grub-core/kern/ieee1275/cmain.c
|
||||
+++ b/grub-core/kern/ieee1275/cmain.c
|
||||
@@ -117,6 +117,7 @@ grub_ieee1275_find_options (void)
|
||||
grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS);
|
||||
grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX);
|
||||
grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_VIRT_TO_REAL_BROKEN);
|
||||
+ grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN);
|
||||
break;
|
||||
}
|
||||
}
|
||||
diff --git a/grub-core/term/ieee1275/console.c b/grub-core/term/ieee1275/console.c
|
||||
index a8dfcff..93b81f4 100644
|
||||
--- a/grub-core/term/ieee1275/console.c
|
||||
+++ b/grub-core/term/ieee1275/console.c
|
||||
@@ -247,9 +247,10 @@ grub_console_init_lately (void)
|
||||
|
||||
if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_ANSI))
|
||||
type = "dumb";
|
||||
+ else if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN))
|
||||
+ type = "ieee1275-nocursor";
|
||||
else
|
||||
type = "ieee1275";
|
||||
-
|
||||
grub_terminfo_init ();
|
||||
grub_terminfo_output_register (&grub_console_term_output, type);
|
||||
}
|
||||
diff --git a/grub-core/term/terminfo.c b/grub-core/term/terminfo.c
|
||||
index d421e4e..a0f8d18 100644
|
||||
--- a/grub-core/term/terminfo.c
|
||||
+++ b/grub-core/term/terminfo.c
|
||||
@@ -143,7 +143,8 @@ grub_terminfo_set_current (struct grub_term_output *term,
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
- if (grub_strcmp ("ieee1275", str) == 0)
|
||||
+ if (grub_strcmp ("ieee1275", str) == 0
|
||||
+ || grub_strcmp ("ieee1275-nocursor", str) == 0)
|
||||
{
|
||||
data->name = grub_strdup ("ieee1275");
|
||||
data->gotoxy = grub_strdup ("\e[%i%p1%d;%p2%dH");
|
||||
@@ -153,8 +154,16 @@ grub_terminfo_set_current (struct grub_term_output *term,
|
||||
data->cls = grub_strdup ("\e[2J");
|
||||
data->reverse_video_on = grub_strdup ("\e[7m");
|
||||
data->reverse_video_off = grub_strdup ("\e[m");
|
||||
- data->cursor_on = grub_strdup ("\e[?25h");
|
||||
- data->cursor_off = grub_strdup ("\e[?25l");
|
||||
+ if (grub_strcmp ("ieee1275", str) == 0)
|
||||
+ {
|
||||
+ data->cursor_on = grub_strdup ("\e[?25h");
|
||||
+ data->cursor_off = grub_strdup ("\e[?25l");
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ data->cursor_on = 0;
|
||||
+ data->cursor_off = 0;
|
||||
+ }
|
||||
data->setcolor = grub_strdup ("\e[3%p1%dm\e[4%p2%dm");
|
||||
return grub_errno;
|
||||
}
|
||||
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
|
||||
index 38a75fd..ee9b707 100644
|
||||
--- a/include/grub/ieee1275/ieee1275.h
|
||||
+++ b/include/grub/ieee1275/ieee1275.h
|
||||
@@ -123,7 +123,9 @@ enum grub_ieee1275_flag
|
||||
|
||||
GRUB_IEEE1275_FLAG_VIRT_TO_REAL_BROKEN,
|
||||
|
||||
- GRUB_IEEE1275_FLAG_BROKEN_REPEAT
|
||||
+ GRUB_IEEE1275_FLAG_BROKEN_REPEAT,
|
||||
+
|
||||
+ GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN,
|
||||
};
|
||||
|
||||
extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
|
||||
--
|
||||
1.8.1.4
|
||||
|
360
0042-util-grub-mkconfig_lib.in-grub_tab-New-variable.patch
Normal file
360
0042-util-grub-mkconfig_lib.in-grub_tab-New-variable.patch
Normal file
@ -0,0 +1,360 @@
|
||||
From f46ac5e6c44d2fed8dcd8451196e6141d89cd90d Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 18 Sep 2012 13:04:06 +0200
|
||||
Subject: [PATCH 042/364] * util/grub-mkconfig_lib.in (grub_tab): New
|
||||
variable. (grub_add_tab): New function. * util/grub.d/10_hurd.in:
|
||||
Replace \t with $grub_tab orgrub_add_tab. * util/grub.d/10_illumos.in:
|
||||
Likewise. * util/grub.d/10_kfreebsd.in: Likewise. *
|
||||
util/grub.d/10_linux.in: Likewise. * util/grub.d/10_netbsd.in: Likewise.
|
||||
* util/grub.d/10_windows.in: Likewise. * util/grub.d/10_xnu.in:
|
||||
Likewise. * util/grub.d/20_linux_xen.in: Likewise. *
|
||||
util/grub.d/30_os-prober.in: Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 14 ++++++++++++++
|
||||
util/grub-mkconfig_lib.in | 7 +++++++
|
||||
util/grub.d/10_hurd.in | 8 ++++----
|
||||
util/grub.d/10_illumos.in | 4 ++--
|
||||
util/grub.d/10_kfreebsd.in | 8 ++++----
|
||||
util/grub.d/10_linux.in | 8 ++++----
|
||||
util/grub.d/10_netbsd.in | 10 +++++-----
|
||||
util/grub.d/10_windows.in | 6 +++---
|
||||
util/grub.d/10_xnu.in | 4 ++--
|
||||
util/grub.d/20_linux_xen.in | 6 +++---
|
||||
util/grub.d/30_os-prober.in | 20 ++++++++++----------
|
||||
11 files changed, 58 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 3752a79..32849c6 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,19 @@
|
||||
2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * util/grub-mkconfig_lib.in (grub_tab): New variable.
|
||||
+ (grub_add_tab): New function.
|
||||
+ * util/grub.d/10_hurd.in: Replace \t with $grub_tab orgrub_add_tab.
|
||||
+ * util/grub.d/10_illumos.in: Likewise.
|
||||
+ * util/grub.d/10_kfreebsd.in: Likewise.
|
||||
+ * util/grub.d/10_linux.in: Likewise.
|
||||
+ * util/grub.d/10_netbsd.in: Likewise.
|
||||
+ * util/grub.d/10_windows.in: Likewise.
|
||||
+ * util/grub.d/10_xnu.in: Likewise.
|
||||
+ * util/grub.d/20_linux_xen.in: Likewise.
|
||||
+ * util/grub.d/30_os-prober.in: Likewise.
|
||||
+
|
||||
+2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
|
||||
GRUB_IEEE1275_FLAG_CURSORONOFF_ANSI_BROKEN on mac.
|
||||
* grub-core/term/ieee1275/console.c (grub_console_init_lately): Use
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index a9f5809..8f21eb2 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -347,3 +347,10 @@ grub_fmt () {
|
||||
cat
|
||||
fi
|
||||
}
|
||||
+
|
||||
+grub_tab=" "
|
||||
+
|
||||
+grub_add_tab () {
|
||||
+ sed -e "s/^/$grub_tab/"
|
||||
+}
|
||||
+
|
||||
diff --git a/util/grub.d/10_hurd.in b/util/grub.d/10_hurd.in
|
||||
index 45f0ad3..00efd68 100644
|
||||
--- a/util/grub.d/10_hurd.in
|
||||
+++ b/util/grub.d/10_hurd.in
|
||||
@@ -108,7 +108,7 @@ menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnuhurd-s
|
||||
EOF
|
||||
fi
|
||||
|
||||
- prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/"|sed "s/^/$submenu_indentation/"
|
||||
+ prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | grub_add_tab|sed "s/^/$submenu_indentation/"
|
||||
message="$(gettext_printf "Loading GNU Mach ...")"
|
||||
|
||||
if [ x$type = xrecovery ] ; then
|
||||
@@ -122,9 +122,9 @@ EOF
|
||||
EOF
|
||||
|
||||
if [ x$type != xrecovery ] ; then
|
||||
- save_default_entry | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/"
|
||||
+ save_default_entry | grub_add_tab| sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
- prepare_grub_to_access_device "${GRUB_DEVICE}" | sed -e "s/^/\t/"| sed "s/^/$submenu_indentation/"
|
||||
+ prepare_grub_to_access_device "${GRUB_DEVICE}" | grub_add_tab| sed "s/^/$submenu_indentation/"
|
||||
message="$(gettext_printf "Loading the Hurd ...")"
|
||||
if [ x$type = xrecovery ] ; then
|
||||
opts=
|
||||
@@ -158,7 +158,7 @@ do
|
||||
|
||||
if [ "x$is_first_entry" = xtrue ]; then
|
||||
hurd_entry "$kernel" simple
|
||||
- submenu_indentation="\t"
|
||||
+ submenu_indentation="$grub_tab"
|
||||
|
||||
# TRANSLATORS: %s is replaced with an OS name
|
||||
echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnuhurd-advanced-$(grub_get_device_id "${GRUB_DEVICE_BOOT}")' {"
|
||||
diff --git a/util/grub.d/10_illumos.in b/util/grub.d/10_illumos.in
|
||||
index 2477466..0de616e 100644
|
||||
--- a/util/grub.d/10_illumos.in
|
||||
+++ b/util/grub.d/10_illumos.in
|
||||
@@ -35,8 +35,8 @@ case "${GRUB_DISTRIBUTOR}" in
|
||||
esac
|
||||
|
||||
echo "menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'illumos-$(grub_get_device_id "${GRUB_DEVICE_BOOT}")' {"
|
||||
-save_default_entry | sed -e "s/^/\t/"
|
||||
-prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/"
|
||||
+save_default_entry | grub_add_tab
|
||||
+prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | grub_add_tab
|
||||
message="$(gettext_printf "Loading kernel of Illumos ...")"
|
||||
cat << EOF
|
||||
insmod gzio
|
||||
diff --git a/util/grub.d/10_kfreebsd.in b/util/grub.d/10_kfreebsd.in
|
||||
index b0e84e2..260dda8 100644
|
||||
--- a/util/grub.d/10_kfreebsd.in
|
||||
+++ b/util/grub.d/10_kfreebsd.in
|
||||
@@ -54,7 +54,7 @@ load_kfreebsd_module ()
|
||||
fi
|
||||
|
||||
if [ -z "${prepare_module_dir_cache}" ]; then
|
||||
- prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | sed -e "s/^/\t/")"
|
||||
+ prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | grub_add_tab)"
|
||||
fi
|
||||
|
||||
printf '%s\n' "${prepare_module_dir_cache}"
|
||||
@@ -91,10 +91,10 @@ kfreebsd_entry ()
|
||||
echo "menuentry '$(echo "$OS" | grub_quote)' ${CLASS} \$menuentry_id_option 'kfreebsd-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
if [ x$type != xrecovery ] ; then
|
||||
- save_default_entry | sed -e "s/^/\t/" | sed "s/^/$submenu_indentation/"
|
||||
+ save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
if [ -z "${prepare_boot_cache}" ]; then
|
||||
- prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
|
||||
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
|
||||
fi
|
||||
|
||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
@@ -213,7 +213,7 @@ while [ "x$list" != "x" ] ; do
|
||||
|
||||
if [ "x$is_first_entry" = xtrue ]; then
|
||||
kfreebsd_entry "${OS}" "${version}" simple
|
||||
- submenu_indentation="\t"
|
||||
+ submenu_indentation="$grub_tab"
|
||||
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
|
||||
index 35f7a83..0724e16 100644
|
||||
--- a/util/grub.d/10_linux.in
|
||||
+++ b/util/grub.d/10_linux.in
|
||||
@@ -101,7 +101,7 @@ linux_entry ()
|
||||
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
if [ x$type != xrecovery ] ; then
|
||||
- save_default_entry | sed -e "s/^/\t/"
|
||||
+ save_default_entry | grub_add_tab
|
||||
fi
|
||||
|
||||
# Use ELILO's generic "efifb" when it's known to be available.
|
||||
@@ -123,12 +123,12 @@ linux_entry ()
|
||||
|
||||
if [ x$dirname = x/ ]; then
|
||||
if [ -z "${prepare_root_cache}" ]; then
|
||||
- prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/\t/")"
|
||||
+ prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
|
||||
fi
|
||||
printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
|
||||
else
|
||||
if [ -z "${prepare_boot_cache}" ]; then
|
||||
- prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
|
||||
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
|
||||
fi
|
||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
@@ -230,7 +230,7 @@ while [ "x$list" != "x" ] ; do
|
||||
linux_entry "${OS}" "${version}" simple \
|
||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
|
||||
|
||||
- submenu_indentation="\t"
|
||||
+ submenu_indentation="$grub_tab"
|
||||
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
diff --git a/util/grub.d/10_netbsd.in b/util/grub.d/10_netbsd.in
|
||||
index 65275d7..b76332b 100644
|
||||
--- a/util/grub.d/10_netbsd.in
|
||||
+++ b/util/grub.d/10_netbsd.in
|
||||
@@ -77,10 +77,10 @@ netbsd_load_fs_module ()
|
||||
prepare_grub_to_access_device $(${grub_probe} -t device "${kmodule}") | sed -e 's,^, ,'
|
||||
case "${loader}" in
|
||||
knetbsd)
|
||||
- printf "\tknetbsd_module_elf %s\n" "${kmodule_rel}"
|
||||
+ printf "$grub_tabknetbsd_module_elf %s\n" "${kmodule_rel}"
|
||||
;;
|
||||
multiboot)
|
||||
- printf "\tmodule %s\n" "${kmodule_rel}"
|
||||
+ printf "$grub_tabmodule %s\n" "${kmodule_rel}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -121,11 +121,11 @@ netbsd_entry ()
|
||||
printf "%s\n" "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
case "${loader}" in
|
||||
knetbsd)
|
||||
- printf "\tknetbsd %s -r %s %s\n" \
|
||||
+ printf "$grub_tabknetbsd %s -r %s %s\n" \
|
||||
"${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
multiboot)
|
||||
- printf "\tmultiboot %s %s root=%s %s\n" \
|
||||
+ printf "$grub_tabmultiboot %s %s root=%s %s\n" \
|
||||
"${kernel}" "${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
esac
|
||||
@@ -159,7 +159,7 @@ for k in $(ls -t /netbsd*) ; do
|
||||
|
||||
if [ "x$is_first_entry" = xtrue ]; then
|
||||
netbsd_entry "knetbsd" "$k" simple "${GRUB_CMDLINE_NETBSD_DEFAULT}"
|
||||
- submenu_indentation="\t"
|
||||
+ submenu_indentation="$grub_tab"
|
||||
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
diff --git a/util/grub.d/10_windows.in b/util/grub.d/10_windows.in
|
||||
index e5839cd..9025914 100644
|
||||
--- a/util/grub.d/10_windows.in
|
||||
+++ b/util/grub.d/10_windows.in
|
||||
@@ -45,7 +45,7 @@ get_os_name_from_boot_ini ()
|
||||
sort | uniq | wc -l`" = 1 || return 1
|
||||
|
||||
# Search 'default=PARTITION'
|
||||
- get_os_name_from_boot_ini_part=`sed -n 's,^default=,,p' "$1" | sed 's,\\\\,/,g;s,[ \t\r]*$,,;1q'`
|
||||
+ get_os_name_from_boot_ini_part=`sed -n 's,^default=,,p' "$1" | sed 's,\\\\,/,g;s,[ $grub_tab\r]*$,,;1q'`
|
||||
test -n "$get_os_name_from_boot_ini_part" || return 1
|
||||
|
||||
# Search 'PARTITION="NAME" ...'
|
||||
@@ -87,8 +87,8 @@ for drv in $drives ; do
|
||||
menuentry '$(echo "$OS" | grub_quote)' \$menuentry_id_option '$osid-$(grub_get_device_id "${dev}")' {
|
||||
EOF
|
||||
|
||||
- save_default_entry | sed -e 's,^,\t,'
|
||||
- prepare_grub_to_access_device "$dev" | sed 's,^,\t,'
|
||||
+ save_default_entry | sed -e 's,^,$grub_tab,'
|
||||
+ prepare_grub_to_access_device "$dev" | sed 's,^,$grub_tab,'
|
||||
test -z "$needmap" || cat <<EOF
|
||||
drivemap -s (hd0) \$root
|
||||
EOF
|
||||
diff --git a/util/grub.d/10_xnu.in b/util/grub.d/10_xnu.in
|
||||
index 55a9546..4270385 100644
|
||||
--- a/util/grub.d/10_xnu.in
|
||||
+++ b/util/grub.d/10_xnu.in
|
||||
@@ -39,8 +39,8 @@ osx_entry() {
|
||||
cat << EOF
|
||||
menuentry '$(echo "Darwin/Mac OS X $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${GRUB_DEVICE}")' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/ /"
|
||||
- prepare_grub_to_access_device ${GRUB_DEVICE} | sed -e "s/^/ /"
|
||||
+ save_default_entry | grub_add_tab
|
||||
+ prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab
|
||||
cat << EOF
|
||||
load_video
|
||||
set do_resume=0
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index 33f1592..d4d0110 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -110,11 +110,11 @@ linux_entry ()
|
||||
echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
if [ x$type != xrecovery ] ; then
|
||||
- save_default_entry | sed -e "s/^/\t/" | sed "s/^/$submenu_indentation/"
|
||||
+ save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
|
||||
fi
|
||||
|
||||
if [ -z "${prepare_boot_cache}" ]; then
|
||||
- prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
|
||||
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
|
||||
fi
|
||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
|
||||
@@ -236,7 +236,7 @@ while [ "x${xen_list}" != "x" ] ; do
|
||||
linux_entry "${OS}" "${version}" "${xen_version}" simple \
|
||||
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
|
||||
|
||||
- submenu_indentation="\t\t"
|
||||
+ submenu_indentation="$grub_tab$grub_tab"
|
||||
|
||||
if [ -z "$boot_device_id" ]; then
|
||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||
diff --git a/util/grub.d/30_os-prober.in b/util/grub.d/30_os-prober.in
|
||||
index bcc6c25..bf47dc3 100644
|
||||
--- a/util/grub.d/30_os-prober.in
|
||||
+++ b/util/grub.d/30_os-prober.in
|
||||
@@ -54,8 +54,8 @@ osx_entry() {
|
||||
cat << EOF
|
||||
menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/\t/"
|
||||
- prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
|
||||
+ save_default_entry | grub_add_tab
|
||||
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
|
||||
cat << EOF
|
||||
load_video
|
||||
set do_resume=0
|
||||
@@ -126,8 +126,8 @@ for OS in ${OSPROBED} ; do
|
||||
cat << EOF
|
||||
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/\t/"
|
||||
- prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
|
||||
+ save_default_entry | grub_add_tab
|
||||
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
|
||||
|
||||
case ${LONGNAME} in
|
||||
Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
|
||||
@@ -181,14 +181,14 @@ EOF
|
||||
used_osprober_linux_ids="$used_osprober_linux_ids 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"
|
||||
|
||||
if [ -z "${prepare_boot_cache}" ]; then
|
||||
- prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")"
|
||||
+ prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
|
||||
fi
|
||||
|
||||
if [ "x$is_first_entry" = xtrue ]; then
|
||||
cat << EOF
|
||||
menuentry '$(echo "$OS" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/\t/"
|
||||
+ save_default_entry | grub_add_tab
|
||||
printf '%s\n' "${prepare_boot_cache}"
|
||||
cat << EOF
|
||||
linux ${LKERNEL} ${LPARAMS}
|
||||
@@ -208,8 +208,8 @@ EOF
|
||||
cat << EOF
|
||||
menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/\t\t/"
|
||||
- printf '%s\n' "${prepare_boot_cache}" | sed -e "s/^/\t/"
|
||||
+ save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
|
||||
+ printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
|
||||
cat << EOF
|
||||
linux ${LKERNEL} ${LPARAMS}
|
||||
EOF
|
||||
@@ -243,8 +243,8 @@ EOF
|
||||
cat << EOF
|
||||
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
|
||||
EOF
|
||||
- save_default_entry | sed -e "s/^/\t/"
|
||||
- prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
|
||||
+ save_default_entry | grub_add_tab
|
||||
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
|
||||
grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
|
||||
mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
|
||||
grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
|
||||
--
|
||||
1.8.1.4
|
||||
|
109
0043-util-grub-setup.c-write_rootdev-Remove-unused-core_i.patch
Normal file
109
0043-util-grub-setup.c-write_rootdev-Remove-unused-core_i.patch
Normal file
@ -0,0 +1,109 @@
|
||||
From fc8c72d6ad43b3fd7a960e67bbacd6fe8d68e48a Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 19 Sep 2012 02:41:51 +0100
|
||||
Subject: [PATCH 043/364] * util/grub-setup.c (write_rootdev): Remove unused
|
||||
core_img parameter. Update all callers. (setup): Define core_sectors only if
|
||||
GRUB_SETUP_BIOS, to appease 'gcc -Wunused-but-set-variable'. Remove
|
||||
unnecessary nested #ifdef GRUB_SETUP_BIOS.
|
||||
|
||||
---
|
||||
ChangeLog | 10 +++++++++-
|
||||
util/grub-setup.c | 12 +++++++-----
|
||||
2 files changed, 16 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 32849c6..1ab401d 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2012-09-19 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * util/grub-setup.c (write_rootdev): Remove unused core_img
|
||||
+ parameter. Update all callers.
|
||||
+ (setup): Define core_sectors only if GRUB_SETUP_BIOS, to appease
|
||||
+ 'gcc -Wunused-but-set-variable'. Remove unnecessary nested #ifdef
|
||||
+ GRUB_SETUP_BIOS.
|
||||
+
|
||||
2012-09-18 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* util/grub-mkconfig_lib.in (grub_tab): New variable.
|
||||
@@ -29,7 +37,7 @@
|
||||
le-conversion.
|
||||
Reported by: BURETTE, Bernard.
|
||||
|
||||
-2012-09-17 Colin Watson <cjwatson@debian.org>
|
||||
+2012-09-17 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* util/grub-mkconfig_lib.in (grub_quote): Remove outdated sentence
|
||||
from comment.
|
||||
diff --git a/util/grub-setup.c b/util/grub-setup.c
|
||||
index 085e8df..de0417f 100644
|
||||
--- a/util/grub-setup.c
|
||||
+++ b/util/grub-setup.c
|
||||
@@ -105,7 +105,7 @@
|
||||
#endif
|
||||
|
||||
static void
|
||||
-write_rootdev (char *core_img, grub_device_t root_dev,
|
||||
+write_rootdev (grub_device_t root_dev,
|
||||
char *boot_img, grub_uint64_t first_sector)
|
||||
{
|
||||
#ifdef GRUB_SETUP_BIOS
|
||||
@@ -148,7 +148,9 @@ setup (const char *dir,
|
||||
char *boot_img, *core_img;
|
||||
char *root = 0;
|
||||
size_t boot_size, core_size;
|
||||
+#ifdef GRUB_SETUP_BIOS
|
||||
grub_uint16_t core_sectors;
|
||||
+#endif
|
||||
grub_device_t root_dev = 0, dest_dev, core_dev;
|
||||
struct grub_boot_blocklist *first_block, *block;
|
||||
char *tmp_img;
|
||||
@@ -229,8 +231,10 @@ setup (const char *dir,
|
||||
|
||||
core_path = grub_util_get_path (dir, core_file);
|
||||
core_size = grub_util_get_image_size (core_path);
|
||||
+#ifdef GRUB_SETUP_BIOS
|
||||
core_sectors = ((core_size + GRUB_DISK_SECTOR_SIZE - 1)
|
||||
>> GRUB_DISK_SECTOR_BITS);
|
||||
+#endif
|
||||
if (core_size < GRUB_DISK_SECTOR_SIZE)
|
||||
grub_util_error (_("the size of `%s' is too small"), core_path);
|
||||
#ifdef GRUB_SETUP_BIOS
|
||||
@@ -386,7 +390,6 @@ setup (const char *dir,
|
||||
|
||||
is_ldm = grub_util_is_ldm (dest_dev->disk);
|
||||
|
||||
-#ifdef GRUB_SETUP_BIOS
|
||||
if (fs_probe)
|
||||
{
|
||||
if (!fs && !dest_partmap)
|
||||
@@ -424,7 +427,6 @@ setup (const char *dir,
|
||||
dest_dev->disk->name, dest_partmap->name);
|
||||
|
||||
}
|
||||
-#endif
|
||||
|
||||
/* Copy the partition table. */
|
||||
if (dest_partmap ||
|
||||
@@ -520,7 +522,7 @@ setup (const char *dir,
|
||||
block->len = 0;
|
||||
block->segment = 0;
|
||||
|
||||
- write_rootdev (core_img, root_dev, boot_img, first_sector);
|
||||
+ write_rootdev (root_dev, boot_img, first_sector);
|
||||
|
||||
core_img = realloc (core_img, nsec * GRUB_DISK_SECTOR_SIZE);
|
||||
first_block = (struct grub_boot_blocklist *) (core_img
|
||||
@@ -858,7 +860,7 @@ unable_to_embed:
|
||||
free (core_path_dev);
|
||||
free (tmp_img);
|
||||
|
||||
- write_rootdev (core_img, root_dev, boot_img, first_sector);
|
||||
+ write_rootdev (root_dev, boot_img, first_sector);
|
||||
|
||||
/* Write the first two sectors of the core image onto the disk. */
|
||||
grub_util_info ("opening the core image `%s'", core_path);
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,52 @@
|
||||
From fbc6f5faf45f489125f98a11f3593cd43b4d6b76 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 19 Sep 2012 02:44:54 +0100
|
||||
Subject: [PATCH 044/364] * grub-core/partmap/msdos.c (pc_partition_map_embed):
|
||||
Revert incorrect off-by-one fix from 2011-02-12. A 62-sector core image
|
||||
should fit before end == 63.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/partmap/msdos.c | 4 ++--
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 1ab401d..5db804e 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2012-09-19 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * grub-core/partmap/msdos.c (pc_partition_map_embed): Revert
|
||||
+ incorrect off-by-one fix from 2011-02-12. A 62-sector core image
|
||||
+ should fit before end == 63.
|
||||
+
|
||||
+2012-09-19 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* util/grub-setup.c (write_rootdev): Remove unused core_img
|
||||
parameter. Update all callers.
|
||||
(setup): Define core_sectors only if GRUB_SETUP_BIOS, to appease
|
||||
diff --git a/grub-core/partmap/msdos.c b/grub-core/partmap/msdos.c
|
||||
index 6e54a74..10ca3f0 100644
|
||||
--- a/grub-core/partmap/msdos.c
|
||||
+++ b/grub-core/partmap/msdos.c
|
||||
@@ -316,14 +316,14 @@ pc_partition_map_embed (struct grub_disk *disk, unsigned int *nsectors,
|
||||
break;
|
||||
}
|
||||
|
||||
- if (end >= *nsectors + 2)
|
||||
+ if (end >= *nsectors + 1)
|
||||
{
|
||||
unsigned i, j;
|
||||
char *embed_signature_check;
|
||||
unsigned int orig_nsectors, avail_nsectors;
|
||||
|
||||
orig_nsectors = *nsectors;
|
||||
- *nsectors = end - 2;
|
||||
+ *nsectors = end - 1;
|
||||
avail_nsectors = *nsectors;
|
||||
if (*nsectors > max_nsectors)
|
||||
*nsectors = max_nsectors;
|
||||
--
|
||||
1.8.1.4
|
||||
|
125
0045-Fix-grub-emu-build-on-FreeBSD.patch
Normal file
125
0045-Fix-grub-emu-build-on-FreeBSD.patch
Normal file
@ -0,0 +1,125 @@
|
||||
From b37a32bb89c476b0ead4c40900de29fe8d73d27e Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Sat, 22 Sep 2012 21:19:58 +0100
|
||||
Subject: [PATCH 045/364] Fix grub-emu build on FreeBSD.
|
||||
|
||||
* Makefile.util.def (grub-mount): Add LIBGEOM to ldadd.
|
||||
* grub-core/net/drivers/emu/emunet.c: Only include Linux-specific
|
||||
headers on Linux.
|
||||
(GRUB_MOD_INIT): Return immediately on non-Linux platforms; this
|
||||
implementation is currently Linux-specific.
|
||||
* util/getroot.c (exec_pipe): Define only on Linux or when either
|
||||
libzfs or libnvpair is unavailable.
|
||||
(find_root_devices_from_poolname): Remove unused path variable.
|
||||
---
|
||||
ChangeLog | 13 +++++++++++++
|
||||
Makefile.util.def | 2 +-
|
||||
grub-core/net/drivers/emu/emunet.c | 11 +++++++++--
|
||||
util/getroot.c | 7 ++++++-
|
||||
4 files changed, 29 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 5db804e..3eda38f 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,16 @@
|
||||
+2012-09-22 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ Fix grub-emu build on FreeBSD.
|
||||
+
|
||||
+ * Makefile.util.def (grub-mount): Add LIBGEOM to ldadd.
|
||||
+ * grub-core/net/drivers/emu/emunet.c: Only include Linux-specific
|
||||
+ headers on Linux.
|
||||
+ (GRUB_MOD_INIT): Return immediately on non-Linux platforms; this
|
||||
+ implementation is currently Linux-specific.
|
||||
+ * util/getroot.c (exec_pipe): Define only on Linux or when either
|
||||
+ libzfs or libnvpair is unavailable.
|
||||
+ (find_root_devices_from_poolname): Remove unused path variable.
|
||||
+
|
||||
2012-09-19 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/partmap/msdos.c (pc_partition_map_embed): Revert
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index b80187c..72057cf 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -266,7 +266,7 @@ program = {
|
||||
ldadd = libgrubgcry.a;
|
||||
ldadd = libgrubkern.a;
|
||||
ldadd = grub-core/gnulib/libgnu.a;
|
||||
- ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) -lfuse';
|
||||
+ ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM) -lfuse';
|
||||
condition = COND_GRUB_MOUNT;
|
||||
};
|
||||
|
||||
diff --git a/grub-core/net/drivers/emu/emunet.c b/grub-core/net/drivers/emu/emunet.c
|
||||
index 7a7aeaf..6b533dd 100644
|
||||
--- a/grub-core/net/drivers/emu/emunet.c
|
||||
+++ b/grub-core/net/drivers/emu/emunet.c
|
||||
@@ -21,8 +21,10 @@
|
||||
#include <sys/socket.h>
|
||||
#include <grub/net.h>
|
||||
#include <sys/types.h>
|
||||
-#include <linux/if.h>
|
||||
-#include <linux/if_tun.h>
|
||||
+#ifdef __linux__
|
||||
+# include <linux/if.h>
|
||||
+# include <linux/if_tun.h>
|
||||
+#endif /* __linux__ */
|
||||
#include <sys/ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
@@ -97,6 +99,7 @@ static struct grub_net_card emucard =
|
||||
|
||||
GRUB_MOD_INIT(emunet)
|
||||
{
|
||||
+#ifdef __linux__
|
||||
struct ifreq ifr;
|
||||
fd = open ("/dev/net/tun", O_RDWR | O_NONBLOCK);
|
||||
if (fd < 0)
|
||||
@@ -110,6 +113,10 @@ GRUB_MOD_INIT(emunet)
|
||||
return;
|
||||
}
|
||||
grub_net_card_register (&emucard);
|
||||
+#else /* !__linux__ */
|
||||
+ fd = -1;
|
||||
+ return;
|
||||
+#endif /* __linux__ */
|
||||
}
|
||||
|
||||
GRUB_MOD_FINI(emunet)
|
||||
diff --git a/util/getroot.c b/util/getroot.c
|
||||
index b97bea6..c2a25c9 100644
|
||||
--- a/util/getroot.c
|
||||
+++ b/util/getroot.c
|
||||
@@ -220,6 +220,9 @@ xgetcwd (void)
|
||||
|
||||
#if !defined (__MINGW32__) && !defined (__CYGWIN__) && !defined (__GNU__)
|
||||
|
||||
+#if (defined (__linux__) || \
|
||||
+ !defined (HAVE_LIBZFS) || !defined (HAVE_LIBNVPAIR))
|
||||
+
|
||||
static pid_t
|
||||
exec_pipe (char **argv, int *fd)
|
||||
{
|
||||
@@ -258,6 +261,8 @@ exec_pipe (char **argv, int *fd)
|
||||
}
|
||||
}
|
||||
|
||||
+#endif
|
||||
+
|
||||
static char **
|
||||
find_root_devices_from_poolname (char *poolname)
|
||||
{
|
||||
@@ -269,7 +274,7 @@ find_root_devices_from_poolname (char *poolname)
|
||||
zpool_handle_t *zpool;
|
||||
libzfs_handle_t *libzfs;
|
||||
nvlist_t *config, *vdev_tree;
|
||||
- nvlist_t **children, **path;
|
||||
+ nvlist_t **children;
|
||||
unsigned int nvlist_count;
|
||||
unsigned int i;
|
||||
char *device = 0;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From e6f215afa8ff4d586f71276fc12ea14eb1e6cd8b Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Mon, 24 Sep 2012 18:50:35 +0100
|
||||
Subject: [PATCH 046/364] * util/grub-install.in: Make the error message if
|
||||
$source_dir doesn't exist more useful.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-install.in | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 3eda38f..a53c5cc 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-24 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * util/grub-install.in: Make the error message if $source_dir
|
||||
+ doesn't exist more useful.
|
||||
+
|
||||
2012-09-22 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
Fix grub-emu build on FreeBSD.
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
index e19f1cd..56be98f 100644
|
||||
--- a/util/grub-install.in
|
||||
+++ b/util/grub-install.in
|
||||
@@ -330,7 +330,7 @@ if [ x$source_dir = x ]; then
|
||||
fi
|
||||
|
||||
if ! [ -d "$source_dir" ]; then
|
||||
- gettext_printf "%s doesn't exist. Please specify --target or --directory\\n" "source_dir"
|
||||
+ gettext_printf "%s doesn't exist. Please specify --target or --directory\\n" "$source_dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
202
0047-grub-core-fs-affs.c-grub_affs_mount-Support-AFFS-boo.patch
Normal file
202
0047-grub-core-fs-affs.c-grub_affs_mount-Support-AFFS-boo.patch
Normal file
@ -0,0 +1,202 @@
|
||||
From d36c4c3115977beb5f9247c6c6f0a2a209389f45 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Wed, 26 Sep 2012 09:33:41 +0200
|
||||
Subject: [PATCH 047/364] * grub-core/fs/affs.c (grub_affs_mount):
|
||||
Support AFFS bootblock in sector 1.
|
||||
|
||||
---
|
||||
ChangeLog | 5 ++
|
||||
grub-core/fs/affs.c | 139 ++++++++++++++++++++++++++--------------------------
|
||||
2 files changed, 74 insertions(+), 70 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index a53c5cc..d81a9a6 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-26 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/fs/affs.c (grub_affs_mount): Support AFFS bootblock in
|
||||
+ sector 1.
|
||||
+
|
||||
2012-09-24 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* util/grub-install.in: Make the error message if $source_dir
|
||||
diff --git a/grub-core/fs/affs.c b/grub-core/fs/affs.c
|
||||
index ef65479..848a455 100644
|
||||
--- a/grub-core/fs/affs.c
|
||||
+++ b/grub-core/fs/affs.c
|
||||
@@ -97,6 +97,7 @@ enum
|
||||
};
|
||||
|
||||
#define AFFS_MAX_LOG_BLOCK_SIZE 4
|
||||
+#define AFFS_MAX_SUPERBLOCK 1
|
||||
|
||||
|
||||
|
||||
@@ -184,94 +185,92 @@ grub_affs_mount (grub_disk_t disk)
|
||||
{
|
||||
struct grub_affs_data *data;
|
||||
grub_uint32_t *rootblock = 0;
|
||||
- struct grub_affs_rblock *rblock;
|
||||
+ struct grub_affs_rblock *rblock = 0;
|
||||
int log_blocksize = 0;
|
||||
+ int bsnum = 0;
|
||||
|
||||
data = grub_zalloc (sizeof (struct grub_affs_data));
|
||||
if (!data)
|
||||
return 0;
|
||||
|
||||
- /* Read the bootblock. */
|
||||
- grub_disk_read (disk, 0, 0, sizeof (struct grub_affs_bblock),
|
||||
- &data->bblock);
|
||||
- if (grub_errno)
|
||||
- goto fail;
|
||||
-
|
||||
- /* Make sure this is an affs filesystem. */
|
||||
- if (grub_strncmp ((char *) (data->bblock.type), "DOS", 3))
|
||||
- {
|
||||
- grub_error (GRUB_ERR_BAD_FS, "not an AFFS filesystem");
|
||||
- goto fail;
|
||||
- }
|
||||
-
|
||||
- /* Test if the filesystem is a OFS filesystem. */
|
||||
- if (! (data->bblock.flags & GRUB_AFFS_FLAG_FFS))
|
||||
- {
|
||||
- grub_error (GRUB_ERR_BAD_FS, "OFS not yet supported");
|
||||
- goto fail;
|
||||
- }
|
||||
-
|
||||
- /* No sane person uses more than 8KB for a block. At least I hope
|
||||
- for that person because in that case this won't work. */
|
||||
- rootblock = grub_malloc (GRUB_DISK_SECTOR_SIZE << AFFS_MAX_LOG_BLOCK_SIZE);
|
||||
- if (!rootblock)
|
||||
- goto fail;
|
||||
-
|
||||
- rblock = (struct grub_affs_rblock *) rootblock;
|
||||
-
|
||||
- /* The filesystem blocksize is not stored anywhere in the filesystem
|
||||
- itself. One way to determine it is try reading blocks for the
|
||||
- rootblock until the checksum is correct. */
|
||||
- for (log_blocksize = 0; log_blocksize <= AFFS_MAX_LOG_BLOCK_SIZE;
|
||||
- log_blocksize++)
|
||||
+ for (bsnum = 0; bsnum < AFFS_MAX_SUPERBLOCK + 1; bsnum++)
|
||||
{
|
||||
- grub_uint32_t *currblock = rootblock;
|
||||
- unsigned int i;
|
||||
- grub_uint32_t checksum = 0;
|
||||
-
|
||||
- /* Read the rootblock. */
|
||||
- grub_disk_read (disk,
|
||||
- (grub_uint64_t) grub_be_to_cpu32 (data->bblock.rootblock)
|
||||
- << log_blocksize, 0,
|
||||
- GRUB_DISK_SECTOR_SIZE << log_blocksize, rootblock);
|
||||
+ /* Read the bootblock. */
|
||||
+ grub_disk_read (disk, bsnum, 0, sizeof (struct grub_affs_bblock),
|
||||
+ &data->bblock);
|
||||
if (grub_errno)
|
||||
goto fail;
|
||||
|
||||
- if (rblock->type != grub_cpu_to_be32_compile_time (2)
|
||||
- || rblock->htsize == 0
|
||||
- || currblock[(GRUB_DISK_SECTOR_SIZE << log_blocksize)
|
||||
- / sizeof (*currblock) - 1]
|
||||
- != grub_cpu_to_be32_compile_time (1))
|
||||
+ /* Make sure this is an affs filesystem. */
|
||||
+ if (grub_strncmp ((char *) (data->bblock.type), "DOS", 3) != 0
|
||||
+ /* Test if the filesystem is a OFS filesystem. */
|
||||
+ || !(data->bblock.flags & GRUB_AFFS_FLAG_FFS))
|
||||
continue;
|
||||
|
||||
- for (i = 0; i < (GRUB_DISK_SECTOR_SIZE << log_blocksize)
|
||||
- / sizeof (*currblock);
|
||||
- i++)
|
||||
- checksum += grub_be_to_cpu32 (currblock[i]);
|
||||
+ /* No sane person uses more than 8KB for a block. At least I hope
|
||||
+ for that person because in that case this won't work. */
|
||||
+ if (!rootblock)
|
||||
+ rootblock = grub_malloc (GRUB_DISK_SECTOR_SIZE
|
||||
+ << AFFS_MAX_LOG_BLOCK_SIZE);
|
||||
+ if (!rootblock)
|
||||
+ goto fail;
|
||||
|
||||
- if (checksum == 0)
|
||||
- break;
|
||||
- }
|
||||
- if (log_blocksize > AFFS_MAX_LOG_BLOCK_SIZE)
|
||||
- {
|
||||
- grub_error (GRUB_ERR_BAD_FS, "AFFS blocksize couldn't be determined");
|
||||
- goto fail;
|
||||
- }
|
||||
+ rblock = (struct grub_affs_rblock *) rootblock;
|
||||
+
|
||||
+ /* The filesystem blocksize is not stored anywhere in the filesystem
|
||||
+ itself. One way to determine it is try reading blocks for the
|
||||
+ rootblock until the checksum is correct. */
|
||||
+ for (log_blocksize = 0; log_blocksize <= AFFS_MAX_LOG_BLOCK_SIZE;
|
||||
+ log_blocksize++)
|
||||
+ {
|
||||
+ grub_uint32_t *currblock = rootblock;
|
||||
+ unsigned int i;
|
||||
+ grub_uint32_t checksum = 0;
|
||||
+
|
||||
+ /* Read the rootblock. */
|
||||
+ grub_disk_read (disk,
|
||||
+ (grub_uint64_t) grub_be_to_cpu32 (data->bblock.rootblock)
|
||||
+ << log_blocksize, 0,
|
||||
+ GRUB_DISK_SECTOR_SIZE << log_blocksize, rootblock);
|
||||
+ if (grub_errno == GRUB_ERR_OUT_OF_RANGE)
|
||||
+ {
|
||||
+ grub_errno = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+ if (grub_errno)
|
||||
+ goto fail;
|
||||
|
||||
- data->log_blocksize = log_blocksize;
|
||||
- data->disk = disk;
|
||||
- data->htsize = grub_be_to_cpu32 (rblock->htsize);
|
||||
- data->diropen.data = data;
|
||||
- data->diropen.block = grub_be_to_cpu32 (data->bblock.rootblock);
|
||||
- data->diropen.parent = NULL;
|
||||
- grub_memcpy (&data->diropen.di, rootblock, sizeof (data->diropen.di));
|
||||
+ if (rblock->type != grub_cpu_to_be32_compile_time (2)
|
||||
+ || rblock->htsize == 0
|
||||
+ || currblock[(GRUB_DISK_SECTOR_SIZE << log_blocksize)
|
||||
+ / sizeof (*currblock) - 1]
|
||||
+ != grub_cpu_to_be32_compile_time (1))
|
||||
+ continue;
|
||||
|
||||
- grub_free (rootblock);
|
||||
+ for (i = 0; i < (GRUB_DISK_SECTOR_SIZE << log_blocksize)
|
||||
+ / sizeof (*currblock);
|
||||
+ i++)
|
||||
+ checksum += grub_be_to_cpu32 (currblock[i]);
|
||||
|
||||
- return data;
|
||||
+ if (checksum == 0)
|
||||
+ {
|
||||
+ data->log_blocksize = log_blocksize;
|
||||
+ data->disk = disk;
|
||||
+ data->htsize = grub_be_to_cpu32 (rblock->htsize);
|
||||
+ data->diropen.data = data;
|
||||
+ data->diropen.block = grub_be_to_cpu32 (data->bblock.rootblock);
|
||||
+ data->diropen.parent = NULL;
|
||||
+ grub_memcpy (&data->diropen.di, rootblock,
|
||||
+ sizeof (data->diropen.di));
|
||||
+ grub_free (rootblock);
|
||||
+
|
||||
+ return data;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
fail:
|
||||
- if (grub_errno == GRUB_ERR_OUT_OF_RANGE)
|
||||
+ if (grub_errno == GRUB_ERR_NONE || grub_errno == GRUB_ERR_OUT_OF_RANGE)
|
||||
grub_error (GRUB_ERR_BAD_FS, "not an AFFS filesystem");
|
||||
|
||||
grub_free (data);
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 9196249442d3d9b360b77a5bd35ffb6c49935c78 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 26 Sep 2012 13:12:20 +0100
|
||||
Subject: [PATCH 048/364] * util/grub-mkconfig_lib.in
|
||||
(is_path_readable_by_grub): Redirect errors from grub-probe to /dev/null, not
|
||||
stdout.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-mkconfig_lib.in | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index d81a9a6..c43f8a4 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-09-26 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Redirect
|
||||
+ errors from grub-probe to /dev/null, not stdout.
|
||||
+
|
||||
2012-09-26 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/fs/affs.c (grub_affs_mount): Support AFFS bootblock in
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 8f21eb2..3574839 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -65,7 +65,7 @@ is_path_readable_by_grub ()
|
||||
|
||||
# ... or if we can't figure out the abstraction module, for example if
|
||||
# memberlist fails on an LVM volume group.
|
||||
- if abstractions="`"${grub_probe}" -t abstraction "$path"`" 2>&1 ; then
|
||||
+ if abstractions="`"${grub_probe}" -t abstraction "$path"`" 2> /dev/null ; then
|
||||
:
|
||||
else
|
||||
return 1
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,44 @@
|
||||
From 42593e7230fad9f87732c1687cb5daff918f2fa1 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 26 Sep 2012 13:51:13 +0100
|
||||
Subject: [PATCH 049/364] * Makefile.util.def (grub-mknetdir): Move to
|
||||
$prefix/bin. Reported by: Daniel Kahn Gillmor. Fixes Debian bug #688799.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
Makefile.util.def | 4 ++--
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index c43f8a4..2658573 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-09-26 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * Makefile.util.def (grub-mknetdir): Move to $prefix/bin.
|
||||
+ Reported by: Daniel Kahn Gillmor. Fixes Debian bug #688799.
|
||||
+
|
||||
+2012-09-26 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* util/grub-mkconfig_lib.in (is_path_readable_by_grub): Redirect
|
||||
errors from grub-probe to /dev/null, not stdout.
|
||||
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 72057cf..8324ede 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -487,8 +487,8 @@ script = {
|
||||
};
|
||||
|
||||
script = {
|
||||
- mansection = 8;
|
||||
- installdir = sbin;
|
||||
+ mansection = 1;
|
||||
+ installdir = bin;
|
||||
name = grub-mknetdir;
|
||||
|
||||
common = util/grub-mknetdir.in;
|
||||
--
|
||||
1.8.1.4
|
||||
|
132
0050-grub-core-loader-i386-linux.c-allocate_pages-Fix-spe.patch
Normal file
132
0050-grub-core-loader-i386-linux.c-allocate_pages-Fix-spe.patch
Normal file
@ -0,0 +1,132 @@
|
||||
From 8c38cb1283a0cf1c8eae465bff26e0ca966ac43a Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 5 Oct 2012 13:09:19 +0100
|
||||
Subject: [PATCH 050/364] * grub-core/loader/i386/linux.c (allocate_pages): Fix
|
||||
spelling of preferred_address. (grub_cmd_linux): Likewise. *
|
||||
grub-core/net/icmp6.c (struct prefix_option): Fix spelling of
|
||||
preferred_lifetime. Update all users.
|
||||
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
grub-core/loader/i386/linux.c | 18 +++++++++---------
|
||||
grub-core/net/icmp6.c | 6 +++---
|
||||
3 files changed, 20 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 2658573..d0aeab6 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2012-10-05 Colin Watson <cjwatson@debian.org>
|
||||
+
|
||||
+ * grub-core/loader/i386/linux.c (allocate_pages): Fix spelling of
|
||||
+ preferred_address.
|
||||
+ (grub_cmd_linux): Likewise.
|
||||
+ * grub-core/net/icmp6.c (struct prefix_option): Fix spelling of
|
||||
+ preferred_lifetime. Update all users.
|
||||
+
|
||||
2012-09-26 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* Makefile.util.def (grub-mknetdir): Move to $prefix/bin.
|
||||
diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c
|
||||
index bcb037c..fc0ebe7 100644
|
||||
--- a/grub-core/loader/i386/linux.c
|
||||
+++ b/grub-core/loader/i386/linux.c
|
||||
@@ -191,7 +191,7 @@ free_pages (void)
|
||||
static grub_err_t
|
||||
allocate_pages (grub_size_t prot_size, grub_size_t *align,
|
||||
grub_size_t min_align, int relocatable,
|
||||
- grub_uint64_t prefered_address)
|
||||
+ grub_uint64_t preferred_address)
|
||||
{
|
||||
grub_err_t err;
|
||||
|
||||
@@ -215,8 +215,8 @@ allocate_pages (grub_size_t prot_size, grub_size_t *align,
|
||||
if (relocatable)
|
||||
{
|
||||
err = grub_relocator_alloc_chunk_align (relocator, &ch,
|
||||
- prefered_address,
|
||||
- prefered_address,
|
||||
+ preferred_address,
|
||||
+ preferred_address,
|
||||
prot_size, 1,
|
||||
GRUB_RELOCATOR_PREFERENCE_LOW,
|
||||
1);
|
||||
@@ -235,7 +235,7 @@ allocate_pages (grub_size_t prot_size, grub_size_t *align,
|
||||
}
|
||||
else
|
||||
err = grub_relocator_alloc_chunk_addr (relocator, &ch,
|
||||
- prefered_address,
|
||||
+ preferred_address,
|
||||
prot_size);
|
||||
if (err)
|
||||
goto fail;
|
||||
@@ -680,7 +680,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
int i;
|
||||
grub_size_t align, min_align;
|
||||
int relocatable;
|
||||
- grub_uint64_t preffered_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
+ grub_uint64_t preferred_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
@@ -775,22 +775,22 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
||||
prot_size = grub_le_to_cpu32 (lh.init_size);
|
||||
prot_init_space = page_align (prot_size);
|
||||
if (relocatable)
|
||||
- preffered_address = grub_le_to_cpu64 (lh.pref_address);
|
||||
+ preferred_address = grub_le_to_cpu64 (lh.pref_address);
|
||||
else
|
||||
- preffered_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
+ preferred_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_align = align;
|
||||
prot_size = prot_file_size;
|
||||
- preffered_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
+ preferred_address = GRUB_LINUX_BZIMAGE_ADDR;
|
||||
/* Usually, the compression ratio is about 50%. */
|
||||
prot_init_space = page_align (prot_size) * 3;
|
||||
}
|
||||
|
||||
if (allocate_pages (prot_size, &align,
|
||||
min_align, relocatable,
|
||||
- preffered_address))
|
||||
+ preferred_address))
|
||||
goto fail;
|
||||
|
||||
params = (struct linux_kernel_params *) &linux_params;
|
||||
diff --git a/grub-core/net/icmp6.c b/grub-core/net/icmp6.c
|
||||
index 4fc343d..9ded94b 100644
|
||||
--- a/grub-core/net/icmp6.c
|
||||
+++ b/grub-core/net/icmp6.c
|
||||
@@ -55,7 +55,7 @@ struct prefix_option
|
||||
grub_uint8_t prefixlen;
|
||||
grub_uint8_t flags;
|
||||
grub_uint32_t valid_lifetime;
|
||||
- grub_uint32_t prefered_lifetime;
|
||||
+ grub_uint32_t preferred_lifetime;
|
||||
grub_uint32_t reserved;
|
||||
grub_uint64_t prefix[2];
|
||||
} __attribute__ ((packed));
|
||||
@@ -370,14 +370,14 @@ grub_net_recv_icmp6_packet (struct grub_net_buff *nb,
|
||||
struct grub_net_slaac_mac_list *slaac;
|
||||
if (!(opt->flags & FLAG_SLAAC)
|
||||
|| (grub_be_to_cpu64 (opt->prefix[0]) >> 48) == 0xfe80
|
||||
- || (grub_be_to_cpu32 (opt->prefered_lifetime)
|
||||
+ || (grub_be_to_cpu32 (opt->preferred_lifetime)
|
||||
> grub_be_to_cpu32 (opt->valid_lifetime))
|
||||
|| opt->prefixlen != 64)
|
||||
{
|
||||
grub_dprintf ("net", "discarded prefix: %d, %d, %d, %d\n",
|
||||
!(opt->flags & FLAG_SLAAC),
|
||||
(grub_be_to_cpu64 (opt->prefix[0]) >> 48) == 0xfe80,
|
||||
- (grub_be_to_cpu32 (opt->prefered_lifetime)
|
||||
+ (grub_be_to_cpu32 (opt->preferred_lifetime)
|
||||
> grub_be_to_cpu32 (opt->valid_lifetime)),
|
||||
opt->prefixlen != 64);
|
||||
continue;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,26 @@
|
||||
From 331fdad4315282f8e367e291131e048593a3a068 Mon Sep 17 00:00:00 2001
|
||||
From: Christoph Junghans <ottxor@gentoo.org>
|
||||
Date: Fri, 12 Oct 2012 15:04:02 +0200
|
||||
Subject: [PATCH 051/364] * grub-core/Makefile.am (moddep.lst): Use $(AWK)
|
||||
instead of awk
|
||||
|
||||
---
|
||||
grub-core/Makefile.am | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
|
||||
index cc4fb68..9cb14e2 100644
|
||||
--- a/grub-core/Makefile.am
|
||||
+++ b/grub-core/Makefile.am
|
||||
@@ -349,7 +349,7 @@ syminfo.lst: gensyminfo.sh kernel_syms.lst $(MODULE_FILES)
|
||||
|
||||
# generate global module dependencies list
|
||||
moddep.lst: syminfo.lst genmoddep.awk video.lst
|
||||
- cat $< | sort | awk -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
|
||||
+ cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
|
||||
platform_DATA += moddep.lst
|
||||
CLEANFILES += config.log syminfo.lst moddep.lst
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,42 @@
|
||||
From a940b1492cc0c066725e5e49882602fb0e5c7399 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 12 Oct 2012 15:34:33 +0100
|
||||
Subject: [PATCH 052/364] * grub-core/commands/configfile.c (GRUB_MOD_INIT):
|
||||
Correct description of extract_entries_configfile.
|
||||
|
||||
---
|
||||
ChangeLog | 7 ++++++-
|
||||
grub-core/commands/configfile.c | 2 +-
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index d0aeab6..9280dba 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,4 +1,9 @@
|
||||
-2012-10-05 Colin Watson <cjwatson@debian.org>
|
||||
+2012-10-12 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * grub-core/commands/configfile.c (GRUB_MOD_INIT): Correct
|
||||
+ description of extract_entries_configfile.
|
||||
+
|
||||
+2012-10-05 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/loader/i386/linux.c (allocate_pages): Fix spelling of
|
||||
preferred_address.
|
||||
diff --git a/grub-core/commands/configfile.c b/grub-core/commands/configfile.c
|
||||
index 99c0a24..f2d2abb 100644
|
||||
--- a/grub-core/commands/configfile.c
|
||||
+++ b/grub-core/commands/configfile.c
|
||||
@@ -78,7 +78,7 @@ GRUB_MOD_INIT(configfile)
|
||||
cmd_extractor_configfile =
|
||||
grub_register_command ("extract_entries_configfile", grub_cmd_source,
|
||||
N_("FILE"),
|
||||
- N_("Load another config file without changing context but take only menu entries.")
|
||||
+ N_("Load another config file but take only menu entries.")
|
||||
);
|
||||
|
||||
cmd_dot =
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,71 @@
|
||||
From 5bf54ea7bf0fc7d1c2b9806a57566ad25179d07c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gr=C3=A9goire=20Sutre?= <gregoire.sutre@gmail.com>
|
||||
Date: Sun, 28 Oct 2012 11:55:22 +0100
|
||||
Subject: [PATCH 053/364] Fix ordering and tab indentation of NetBSD boot menu
|
||||
entries.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub.d/10_netbsd.in | 12 ++++++------
|
||||
2 files changed, 11 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index c7b07bb..caea96d 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-10-28 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
+
|
||||
+ * util/grub.d/10_netbsd.in: Fix tab indentation and make sure
|
||||
+ that /netbsd appears first (when it exists).
|
||||
+
|
||||
2012-10-12 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/commands/configfile.c (GRUB_MOD_INIT): Correct
|
||||
diff --git a/util/grub.d/10_netbsd.in b/util/grub.d/10_netbsd.in
|
||||
index b76332b..dead5c1 100644
|
||||
--- a/util/grub.d/10_netbsd.in
|
||||
+++ b/util/grub.d/10_netbsd.in
|
||||
@@ -74,13 +74,13 @@ netbsd_load_fs_module ()
|
||||
fi
|
||||
|
||||
kmodule_rel=$(make_system_path_relative_to_its_root "$kmodule") || return
|
||||
- prepare_grub_to_access_device $(${grub_probe} -t device "${kmodule}") | sed -e 's,^, ,'
|
||||
+ prepare_grub_to_access_device $(${grub_probe} -t device "${kmodule}") | sed -e 's,^, ,' | sed "s/^/$submenu_indentation/"
|
||||
case "${loader}" in
|
||||
knetbsd)
|
||||
- printf "$grub_tabknetbsd_module_elf %s\n" "${kmodule_rel}"
|
||||
+ printf "${grub_tab}knetbsd_module_elf %s\n" "${kmodule_rel}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
multiboot)
|
||||
- printf "$grub_tabmodule %s\n" "${kmodule_rel}"
|
||||
+ printf "${grub_tab}module %s\n" "${kmodule_rel}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
@@ -121,11 +121,11 @@ netbsd_entry ()
|
||||
printf "%s\n" "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||
case "${loader}" in
|
||||
knetbsd)
|
||||
- printf "$grub_tabknetbsd %s -r %s %s\n" \
|
||||
+ printf "${grub_tab}knetbsd %s -r %s %s\n" \
|
||||
"${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
multiboot)
|
||||
- printf "$grub_tabmultiboot %s %s root=%s %s\n" \
|
||||
+ printf "${grub_tab}multiboot %s %s root=%s %s\n" \
|
||||
"${kernel}" "${kernel}" "${kroot_device}" "${GRUB_CMDLINE_NETBSD} ${args}" | sed "s/^/$submenu_indentation/"
|
||||
;;
|
||||
esac
|
||||
@@ -147,7 +147,7 @@ pattern="^ELF[^,]*executable.*statically linked"
|
||||
submenu_indentation=""
|
||||
|
||||
is_first_entry=true
|
||||
-for k in $(ls -t /netbsd*) ; do
|
||||
+for k in /netbsd $(ls -t /netbsd?* 2>/dev/null) ; do
|
||||
if ! grub_file_is_not_garbage "$k" ; then
|
||||
continue
|
||||
fi
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,39 @@
|
||||
From ae12080106554c5dd5e2d19799f08a0aa72c9be9 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Wed, 28 Nov 2012 14:14:20 +0100
|
||||
Subject: [PATCH 054/364] * grub-core/net/bootp.c (parse_dhcp_vendor):
|
||||
Fix double increment.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/net/bootp.c | 2 +-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index caea96d..1759da4 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-11-28 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
+
|
||||
+ * grub-core/net/bootp.c (parse_dhcp_vendor): Fix double increment.
|
||||
+
|
||||
2012-10-28 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
|
||||
* util/grub.d/10_netbsd.in: Fix tab indentation and make sure
|
||||
diff --git a/grub-core/net/bootp.c b/grub-core/net/bootp.c
|
||||
index bc07d53..f36d4cd 100644
|
||||
--- a/grub-core/net/bootp.c
|
||||
+++ b/grub-core/net/bootp.c
|
||||
@@ -122,7 +122,7 @@ parse_dhcp_vendor (const char *name, void *vend, int limit, int *mask)
|
||||
ptr += 4;
|
||||
}
|
||||
}
|
||||
- break;
|
||||
+ continue;
|
||||
case GRUB_NET_BOOTP_HOSTNAME:
|
||||
set_env_limn_ro (name, "hostname", (char *) ptr, taglength);
|
||||
break;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From aa3830c409ca40e6f0b71279ddb3409262a7bd96 Mon Sep 17 00:00:00 2001
|
||||
From: Leif Lindholm <leif.lindholm@arm.com>
|
||||
Date: Wed, 28 Nov 2012 14:18:45 +0100
|
||||
Subject: [PATCH 055/364] * include/grub/types.h: Fix functionality
|
||||
unaffecting typo in GRUB_TARGET_WORDSIZE conditional macro.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
include/grub/types.h | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 1759da4..b26bfcb 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-11-28 Leif Lindholm <leif.lindholm@arm.com>
|
||||
+
|
||||
+ * include/grub/types.h: Fix functionality unaffecting typo in
|
||||
+ GRUB_TARGET_WORDSIZE conditional macro.
|
||||
+
|
||||
2012-11-28 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
|
||||
* grub-core/net/bootp.c (parse_dhcp_vendor): Fix double increment.
|
||||
diff --git a/include/grub/types.h b/include/grub/types.h
|
||||
index 3e677c6..22d1be7 100644
|
||||
--- a/include/grub/types.h
|
||||
+++ b/include/grub/types.h
|
||||
@@ -50,7 +50,7 @@
|
||||
# error "This architecture is not supported because sizeof(void *) != 4 and sizeof(void *) != 8"
|
||||
#endif
|
||||
|
||||
-#if !defined (GRUB_UTIL) & !defined (GRUB_TARGET_WORDSIZE)
|
||||
+#if !defined (GRUB_UTIL) && !defined (GRUB_TARGET_WORDSIZE)
|
||||
# if GRUB_TARGET_SIZEOF_VOID_P == 4
|
||||
# define GRUB_TARGET_WORDSIZE 32
|
||||
# elif GRUB_TARGET_SIZEOF_VOID_P == 8
|
||||
--
|
||||
1.8.1.4
|
||||
|
307
0056-Support-big-endian-UFS1.patch
Normal file
307
0056-Support-big-endian-UFS1.patch
Normal file
@ -0,0 +1,307 @@
|
||||
From b4ec418af5d77275f3b3cf5e7566eaa4ecd713bd Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 8 Dec 2012 20:56:58 +0100
|
||||
Subject: [PATCH 056/364] Support big-endian UFS1.
|
||||
|
||||
* Makefile.util.def (libgrubmods): Add ufs_be.c
|
||||
* grub-core/Makefile.core.def (ufs1_be): New module.
|
||||
* grub-core/fs/ufs_be.c: New file.
|
||||
* grub-core/fs/ufs.c: Declare grub_ufs_to_le* and use them throughout
|
||||
the file.
|
||||
---
|
||||
ChangeLog | 10 ++++++
|
||||
Makefile.util.def | 1 +
|
||||
grub-core/Makefile.core.def | 5 +++
|
||||
grub-core/fs/ufs.c | 83 +++++++++++++++++++++++++++++----------------
|
||||
grub-core/fs/ufs_be.c | 2 ++
|
||||
5 files changed, 72 insertions(+), 29 deletions(-)
|
||||
create mode 100644 grub-core/fs/ufs_be.c
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index b26bfcb..d565547 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,13 @@
|
||||
+2012-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ Support big-endian UFS1.
|
||||
+
|
||||
+ * Makefile.util.def (libgrubmods): Add ufs_be.c
|
||||
+ * grub-core/Makefile.core.def (ufs1_be): New module.
|
||||
+ * grub-core/fs/ufs_be.c: New file.
|
||||
+ * grub-core/fs/ufs.c: Declare grub_ufs_to_le* and use them throughout
|
||||
+ the file.
|
||||
+
|
||||
2012-11-28 Leif Lindholm <leif.lindholm@arm.com>
|
||||
|
||||
* include/grub/types.h: Fix functionality unaffecting typo in
|
||||
diff --git a/Makefile.util.def b/Makefile.util.def
|
||||
index 8324ede..01f7456 100644
|
||||
--- a/Makefile.util.def
|
||||
+++ b/Makefile.util.def
|
||||
@@ -90,6 +90,7 @@ library = {
|
||||
common = grub-core/fs/udf.c;
|
||||
common = grub-core/fs/ufs2.c;
|
||||
common = grub-core/fs/ufs.c;
|
||||
+ common = grub-core/fs/ufs_be.c;
|
||||
common = grub-core/fs/xfs.c;
|
||||
common = grub-core/fs/zfs/zfscrypt.c;
|
||||
common = grub-core/fs/zfs/zfs.c;
|
||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
||||
index 7a7b97a..6752429 100644
|
||||
--- a/grub-core/Makefile.core.def
|
||||
+++ b/grub-core/Makefile.core.def
|
||||
@@ -1181,6 +1181,11 @@ module = {
|
||||
};
|
||||
|
||||
module = {
|
||||
+ name = ufs1_be;
|
||||
+ common = fs/ufs_be.c;
|
||||
+};
|
||||
+
|
||||
+module = {
|
||||
name = ufs2;
|
||||
common = fs/ufs2.c;
|
||||
};
|
||||
diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
|
||||
index bd0cd1f..3f2dba1 100644
|
||||
--- a/grub-core/fs/ufs.c
|
||||
+++ b/grub-core/fs/ufs.c
|
||||
@@ -49,18 +49,30 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
#define GRUB_UFS_VOLNAME_LEN 32
|
||||
|
||||
+#ifdef MODE_BIGENDIAN
|
||||
+#define grub_ufs_to_cpu16 grub_be_to_cpu16
|
||||
+#define grub_ufs_to_cpu32 grub_be_to_cpu32
|
||||
+#define grub_ufs_to_cpu64 grub_be_to_cpu64
|
||||
+#define grub_cpu_to_ufs32_compile_time grub_cpu_to_be32_compile_time
|
||||
+#else
|
||||
+#define grub_ufs_to_cpu16 grub_le_to_cpu16
|
||||
+#define grub_ufs_to_cpu32 grub_le_to_cpu32
|
||||
+#define grub_ufs_to_cpu64 grub_le_to_cpu64
|
||||
+#define grub_cpu_to_ufs32_compile_time grub_cpu_to_le32_compile_time
|
||||
+#endif
|
||||
+
|
||||
/* Calculate in which group the inode can be found. */
|
||||
-#define UFS_BLKSZ(sblock) (grub_le_to_cpu32 (sblock->bsize))
|
||||
+#define UFS_BLKSZ(sblock) (grub_ufs_to_cpu32 (sblock->bsize))
|
||||
#define UFS_LOG_BLKSZ(sblock) (data->log2_blksz)
|
||||
|
||||
#ifdef MODE_UFS2
|
||||
-#define INODE_ENDIAN(data,field,bits1,bits2) grub_le_to_cpu##bits2 (data->inode.field)
|
||||
+#define INODE_ENDIAN(data,field,bits1,bits2) grub_ufs_to_cpu##bits2 (data->inode.field)
|
||||
#else
|
||||
-#define INODE_ENDIAN(data,field,bits1,bits2) grub_le_to_cpu##bits1 (data->inode.field)
|
||||
+#define INODE_ENDIAN(data,field,bits1,bits2) grub_ufs_to_cpu##bits1 (data->inode.field)
|
||||
#endif
|
||||
|
||||
-#define INODE_SIZE(data) grub_le_to_cpu64 (data->inode.size)
|
||||
-#define INODE_MODE(data) grub_le_to_cpu16 (data->inode.mode)
|
||||
+#define INODE_SIZE(data) grub_ufs_to_cpu64 (data->inode.size)
|
||||
+#define INODE_MODE(data) grub_ufs_to_cpu16 (data->inode.mode)
|
||||
#ifdef MODE_UFS2
|
||||
#define LOG_INODE_BLKSZ 3
|
||||
#else
|
||||
@@ -234,7 +246,7 @@ grub_ufs_get_file_block (struct grub_ufs_data *data, grub_disk_addr_t blk)
|
||||
if (blk < GRUB_UFS_DIRBLKS)
|
||||
return INODE_DIRBLOCKS (data, blk);
|
||||
|
||||
- log2_blksz = grub_le_to_cpu32 (data->sblock.log2_blksz);
|
||||
+ log2_blksz = grub_ufs_to_cpu32 (data->sblock.log2_blksz);
|
||||
|
||||
blk -= GRUB_UFS_DIRBLKS;
|
||||
|
||||
@@ -366,7 +378,7 @@ grub_ufs_read_file (struct grub_ufs_data *data,
|
||||
{
|
||||
data->disk->read_hook = read_hook;
|
||||
grub_disk_read (data->disk,
|
||||
- blknr << grub_le_to_cpu32 (data->sblock.log2_blksz),
|
||||
+ blknr << grub_ufs_to_cpu32 (data->sblock.log2_blksz),
|
||||
skipfirst, blockend, buf);
|
||||
data->disk->read_hook = 0;
|
||||
if (grub_errno)
|
||||
@@ -389,17 +401,17 @@ grub_ufs_read_inode (struct grub_ufs_data *data, int ino, char *inode)
|
||||
struct grub_ufs_sblock *sblock = &data->sblock;
|
||||
|
||||
/* Determine the group the inode is in. */
|
||||
- int group = ino / grub_le_to_cpu32 (sblock->ino_per_group);
|
||||
+ int group = ino / grub_ufs_to_cpu32 (sblock->ino_per_group);
|
||||
|
||||
/* Determine the inode within the group. */
|
||||
- int grpino = ino % grub_le_to_cpu32 (sblock->ino_per_group);
|
||||
+ int grpino = ino % grub_ufs_to_cpu32 (sblock->ino_per_group);
|
||||
|
||||
/* The first block of the group. */
|
||||
- int grpblk = group * (grub_le_to_cpu32 (sblock->frags_per_group));
|
||||
+ int grpblk = group * (grub_ufs_to_cpu32 (sblock->frags_per_group));
|
||||
|
||||
#ifndef MODE_UFS2
|
||||
- grpblk += grub_le_to_cpu32 (sblock->cylg_offset)
|
||||
- * (group & (~grub_le_to_cpu32 (sblock->cylg_mask)));
|
||||
+ grpblk += grub_ufs_to_cpu32 (sblock->cylg_offset)
|
||||
+ * (group & (~grub_ufs_to_cpu32 (sblock->cylg_mask)));
|
||||
#endif
|
||||
|
||||
if (!inode)
|
||||
@@ -409,8 +421,8 @@ grub_ufs_read_inode (struct grub_ufs_data *data, int ino, char *inode)
|
||||
}
|
||||
|
||||
grub_disk_read (data->disk,
|
||||
- ((grub_le_to_cpu32 (sblock->inoblk_offs) + grpblk)
|
||||
- << grub_le_to_cpu32 (data->sblock.log2_blksz))
|
||||
+ ((grub_ufs_to_cpu32 (sblock->inoblk_offs) + grpblk)
|
||||
+ << grub_ufs_to_cpu32 (data->sblock.log2_blksz))
|
||||
+ grpino / UFS_INODE_PER_BLOCK,
|
||||
(grpino % UFS_INODE_PER_BLOCK)
|
||||
* sizeof (struct grub_ufs_inode),
|
||||
@@ -501,7 +513,7 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
|
||||
#ifdef MODE_UFS2
|
||||
namelen = dirent.namelen_bsd;
|
||||
#else
|
||||
- namelen = grub_le_to_cpu16 (dirent.namelen);
|
||||
+ namelen = grub_ufs_to_cpu16 (dirent.namelen);
|
||||
#endif
|
||||
{
|
||||
char filename[namelen + 1];
|
||||
@@ -515,7 +527,7 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
|
||||
if (!grub_strcmp (name, filename))
|
||||
{
|
||||
dirino = data->ino;
|
||||
- grub_ufs_read_inode (data, grub_le_to_cpu32 (dirent.ino), 0);
|
||||
+ grub_ufs_read_inode (data, grub_ufs_to_cpu32 (dirent.ino), 0);
|
||||
|
||||
if ((INODE_MODE(data) & GRUB_UFS_ATTR_TYPE)
|
||||
== GRUB_UFS_ATTR_LNK)
|
||||
@@ -547,7 +559,7 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
|
||||
}
|
||||
}
|
||||
|
||||
- pos += grub_le_to_cpu16 (dirent.direntlen);
|
||||
+ pos += grub_ufs_to_cpu16 (dirent.direntlen);
|
||||
} while (pos < INODE_SIZE (data));
|
||||
|
||||
grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("file `%s' not found"), path);
|
||||
@@ -576,12 +588,12 @@ grub_ufs_mount (grub_disk_t disk)
|
||||
|
||||
/* No need to byteswap bsize in this check. It works the same on both
|
||||
endiannesses. */
|
||||
- if (grub_le_to_cpu32 (data->sblock.magic) == GRUB_UFS_MAGIC
|
||||
+ if (data->sblock.magic == grub_cpu_to_ufs32_compile_time (GRUB_UFS_MAGIC)
|
||||
&& data->sblock.bsize != 0
|
||||
&& ((data->sblock.bsize & (data->sblock.bsize - 1)) == 0))
|
||||
{
|
||||
for (data->log2_blksz = 0;
|
||||
- (1U << data->log2_blksz) < grub_le_to_cpu32 (data->sblock.bsize);
|
||||
+ (1U << data->log2_blksz) < grub_ufs_to_cpu32 (data->sblock.bsize);
|
||||
data->log2_blksz++);
|
||||
|
||||
data->disk = disk;
|
||||
@@ -652,7 +664,7 @@ grub_ufs_dir (grub_device_t device, const char *path,
|
||||
#ifdef MODE_UFS2
|
||||
namelen = dirent.namelen_bsd;
|
||||
#else
|
||||
- namelen = grub_le_to_cpu16 (dirent.namelen);
|
||||
+ namelen = grub_ufs_to_cpu16 (dirent.namelen);
|
||||
#endif
|
||||
|
||||
{
|
||||
@@ -667,18 +679,19 @@ grub_ufs_dir (grub_device_t device, const char *path,
|
||||
break;
|
||||
|
||||
filename[namelen] = '\0';
|
||||
- grub_ufs_read_inode (data, dirent.ino, (char *) &inode);
|
||||
+ grub_ufs_read_inode (data, grub_ufs_to_cpu32 (dirent.ino),
|
||||
+ (char *) &inode);
|
||||
|
||||
- info.dir = ((grub_le_to_cpu16 (inode.mode) & GRUB_UFS_ATTR_TYPE)
|
||||
+ info.dir = ((grub_ufs_to_cpu16 (inode.mode) & GRUB_UFS_ATTR_TYPE)
|
||||
== GRUB_UFS_ATTR_DIR);
|
||||
- info.mtime = grub_le_to_cpu64 (inode.mtime);
|
||||
+ info.mtime = grub_ufs_to_cpu64 (inode.mtime);
|
||||
info.mtimeset = 1;
|
||||
|
||||
if (hook (filename, &info))
|
||||
break;
|
||||
}
|
||||
|
||||
- pos += grub_le_to_cpu16 (dirent.direntlen);
|
||||
+ pos += grub_ufs_to_cpu16 (dirent.direntlen);
|
||||
}
|
||||
|
||||
fail:
|
||||
@@ -773,8 +786,8 @@ grub_ufs_uuid (grub_device_t device, char **uuid)
|
||||
data = grub_ufs_mount (disk);
|
||||
if (data && (data->sblock.uuidhi != 0 || data->sblock.uuidlow != 0))
|
||||
*uuid = grub_xasprintf ("%08x%08x",
|
||||
- (unsigned) grub_le_to_cpu32 (data->sblock.uuidhi),
|
||||
- (unsigned) grub_le_to_cpu32 (data->sblock.uuidlow));
|
||||
+ (unsigned) grub_ufs_to_cpu32 (data->sblock.uuidhi),
|
||||
+ (unsigned) grub_ufs_to_cpu32 (data->sblock.uuidlow));
|
||||
else
|
||||
*uuid = NULL;
|
||||
|
||||
@@ -799,10 +812,10 @@ grub_ufs_mtime (grub_device_t device, grub_int32_t *tm)
|
||||
*tm = 0;
|
||||
else
|
||||
{
|
||||
- *tm = grub_le_to_cpu32 (data->sblock.mtime);
|
||||
+ *tm = grub_ufs_to_cpu32 (data->sblock.mtime);
|
||||
#ifdef MODE_UFS2
|
||||
- if (*tm < (grub_int64_t) grub_le_to_cpu64 (data->sblock.mtime2))
|
||||
- *tm = grub_le_to_cpu64 (data->sblock.mtime2);
|
||||
+ if (*tm < (grub_int64_t) grub_ufs_to_cpu64 (data->sblock.mtime2))
|
||||
+ *tm = grub_ufs_to_cpu64 (data->sblock.mtime2);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -820,8 +833,12 @@ static struct grub_fs grub_ufs_fs =
|
||||
#ifdef MODE_UFS2
|
||||
.name = "ufs2",
|
||||
#else
|
||||
+#ifdef MODE_BIGENDIAN
|
||||
+ .name = "ufs1_be",
|
||||
+#else
|
||||
.name = "ufs1",
|
||||
#endif
|
||||
+#endif
|
||||
.dir = grub_ufs_dir,
|
||||
.open = grub_ufs_open,
|
||||
.read = grub_ufs_read,
|
||||
@@ -839,8 +856,12 @@ static struct grub_fs grub_ufs_fs =
|
||||
#ifdef MODE_UFS2
|
||||
GRUB_MOD_INIT(ufs2)
|
||||
#else
|
||||
+#ifdef MODE_BIGENDIAN
|
||||
+GRUB_MOD_INIT(ufs1_be)
|
||||
+#else
|
||||
GRUB_MOD_INIT(ufs1)
|
||||
#endif
|
||||
+#endif
|
||||
{
|
||||
grub_fs_register (&grub_ufs_fs);
|
||||
my_mod = mod;
|
||||
@@ -849,8 +870,12 @@ GRUB_MOD_INIT(ufs1)
|
||||
#ifdef MODE_UFS2
|
||||
GRUB_MOD_FINI(ufs2)
|
||||
#else
|
||||
+#ifdef MODE_BIGENDIAN
|
||||
+GRUB_MOD_FINI(ufs1_be)
|
||||
+#else
|
||||
GRUB_MOD_FINI(ufs1)
|
||||
#endif
|
||||
+#endif
|
||||
{
|
||||
grub_fs_unregister (&grub_ufs_fs);
|
||||
}
|
||||
diff --git a/grub-core/fs/ufs_be.c b/grub-core/fs/ufs_be.c
|
||||
new file mode 100644
|
||||
index 0000000..a58f75a
|
||||
--- /dev/null
|
||||
+++ b/grub-core/fs/ufs_be.c
|
||||
@@ -0,0 +1,2 @@
|
||||
+#define MODE_BIGENDIAN 1
|
||||
+#include "ufs.c"
|
||||
--
|
||||
1.8.1.4
|
||||
|
79
0057-Fix-big-endian-mtime.patch
Normal file
79
0057-Fix-big-endian-mtime.patch
Normal file
@ -0,0 +1,79 @@
|
||||
From 32776fea2049a8b8198fdd59d49e18b4f8916d28 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 8 Dec 2012 21:14:08 +0100
|
||||
Subject: [PATCH 057/364] Fix big-endian mtime.
|
||||
|
||||
* grub-core/fs/ufs.c (grub_ufs_inode): Split improperly attached
|
||||
together sec and usec.
|
||||
(grub_ufs_dir): Use correct byteswapping for UFS time.
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
grub-core/fs/ufs.c | 19 +++++++++++++------
|
||||
2 files changed, 21 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index d565547..9c6dde5 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,13 @@
|
||||
2012-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ Fix big-endian mtime.
|
||||
+
|
||||
+ * grub-core/fs/ufs.c (grub_ufs_inode): Split improperly attached
|
||||
+ together sec and usec.
|
||||
+ (grub_ufs_dir): Use correct byteswapping for UFS time.
|
||||
+
|
||||
+2012-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
Support big-endian UFS1.
|
||||
|
||||
* Makefile.util.def (libgrubmods): Add ufs_be.c
|
||||
diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
|
||||
index 3f2dba1..c862336 100644
|
||||
--- a/grub-core/fs/ufs.c
|
||||
+++ b/grub-core/fs/ufs.c
|
||||
@@ -151,9 +151,9 @@ struct grub_ufs_inode
|
||||
grub_uint64_t mtime;
|
||||
grub_uint64_t ctime;
|
||||
grub_uint64_t create_time;
|
||||
- grub_uint32_t atime_sec;
|
||||
- grub_uint32_t mtime_sec;
|
||||
- grub_uint32_t ctime_sec;
|
||||
+ grub_uint32_t atime_usec;
|
||||
+ grub_uint32_t mtime_usec;
|
||||
+ grub_uint32_t ctime_usec;
|
||||
grub_uint32_t create_time_sec;
|
||||
grub_uint32_t gen;
|
||||
grub_uint32_t kernel_flags;
|
||||
@@ -181,9 +181,12 @@ struct grub_ufs_inode
|
||||
grub_uint16_t uid;
|
||||
grub_uint16_t gid;
|
||||
grub_uint64_t size;
|
||||
- grub_uint64_t atime;
|
||||
- grub_uint64_t mtime;
|
||||
- grub_uint64_t ctime;
|
||||
+ grub_uint32_t atime;
|
||||
+ grub_uint32_t atime_usec;
|
||||
+ grub_uint32_t mtime;
|
||||
+ grub_uint32_t mtime_usec;
|
||||
+ grub_uint32_t ctime;
|
||||
+ grub_uint32_t ctime_usec;
|
||||
union
|
||||
{
|
||||
struct
|
||||
@@ -684,7 +687,11 @@ grub_ufs_dir (grub_device_t device, const char *path,
|
||||
|
||||
info.dir = ((grub_ufs_to_cpu16 (inode.mode) & GRUB_UFS_ATTR_TYPE)
|
||||
== GRUB_UFS_ATTR_DIR);
|
||||
+#ifdef MODE_UFS2
|
||||
info.mtime = grub_ufs_to_cpu64 (inode.mtime);
|
||||
+#else
|
||||
+ info.mtime = grub_ufs_to_cpu32 (inode.mtime);
|
||||
+#endif
|
||||
info.mtimeset = 1;
|
||||
|
||||
if (hook (filename, &info))
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 5361431d3faa4ddbbd5d5c6a1fa10e0cebc60623 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 09:22:40 +0100
|
||||
Subject: [PATCH 058/364] * grub-core/fs/ufs.c (grub_ufs_dir): Stop if
|
||||
direntlen is 0 to avoid infinite loop on corrupted FS.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/fs/ufs.c | 3 +++
|
||||
2 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 9c6dde5..0b1596a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/fs/ufs.c (grub_ufs_dir): Stop if direntlen is 0 to avoid
|
||||
+ infinite loop on corrupted FS.
|
||||
+
|
||||
2012-12-08 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
Fix big-endian mtime.
|
||||
diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
|
||||
index c862336..74a4a40 100644
|
||||
--- a/grub-core/fs/ufs.c
|
||||
+++ b/grub-core/fs/ufs.c
|
||||
@@ -664,6 +664,9 @@ grub_ufs_dir (grub_device_t device, const char *path,
|
||||
(char *) &dirent) < 0)
|
||||
break;
|
||||
|
||||
+ if (dirent.direntlen == 0)
|
||||
+ break;
|
||||
+
|
||||
#ifdef MODE_UFS2
|
||||
namelen = dirent.namelen_bsd;
|
||||
#else
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,52 @@
|
||||
From d2634650c732823bd304e0413f84d383c2689117 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 11:12:38 +0100
|
||||
Subject: [PATCH 059/364] * util/getroot.c
|
||||
(convert_system_partition_to_system_disk): Support nbd disks.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/getroot.c | 12 ++++++++++++
|
||||
2 files changed, 17 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0b1596a..547f739 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * util/getroot.c (convert_system_partition_to_system_disk): Support
|
||||
+ nbd disks.
|
||||
+
|
||||
+2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/ufs.c (grub_ufs_dir): Stop if direntlen is 0 to avoid
|
||||
infinite loop on corrupted FS.
|
||||
|
||||
diff --git a/util/getroot.c b/util/getroot.c
|
||||
index c2a25c9..24ce6aa 100644
|
||||
--- a/util/getroot.c
|
||||
+++ b/util/getroot.c
|
||||
@@ -1796,6 +1796,18 @@ convert_system_partition_to_system_disk (const char *os_dev, struct stat *st,
|
||||
return path;
|
||||
}
|
||||
|
||||
+ if (strncmp ("nbd", p, 3) == 0
|
||||
+ && p[3] >= '0' && p[3] <= '9')
|
||||
+ {
|
||||
+ char *ptr = p + 3;
|
||||
+ while (*ptr >= '0' && *ptr <= '9')
|
||||
+ ptr++;
|
||||
+ if (*ptr)
|
||||
+ *is_part = 1;
|
||||
+ *ptr = 0;
|
||||
+ return path;
|
||||
+ }
|
||||
+
|
||||
/* If this is an IDE, SCSI or Virtio disk. */
|
||||
if (strncmp ("vdisk", p, 5) == 0
|
||||
&& p[5] >= 'a' && p[5] <= 'z')
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From 18c470fb212991eea8749327b7baa44ebefc4215 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir Testov <vladimir.testov@rosalab.ru>
|
||||
Date: Mon, 10 Dec 2012 11:45:00 +0100
|
||||
Subject: [PATCH 060/364] * util/grub-mkfont.c (argp_parser): Fix a typo
|
||||
which prevented --asce from working.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-mkfont.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 547f739..4204678 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Vladimir Testov <vladimir.testov@rosalab.ru>
|
||||
+
|
||||
+ * util/grub-mkfont.c (argp_parser): Fix a typo which prevented --asce
|
||||
+ from working.
|
||||
+
|
||||
2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* util/getroot.c (convert_system_partition_to_system_disk): Support
|
||||
diff --git a/util/grub-mkfont.c b/util/grub-mkfont.c
|
||||
index 4e2c5e4..83fb2d2 100644
|
||||
--- a/util/grub-mkfont.c
|
||||
+++ b/util/grub-mkfont.c
|
||||
@@ -1101,7 +1101,7 @@ argp_parser (int key, char *arg, struct argp_state *state)
|
||||
arguments->font_info.desc = strtoul (arg, NULL, 0);
|
||||
break;
|
||||
|
||||
- case 'e':
|
||||
+ case 'c':
|
||||
arguments->font_info.asce = strtoul (arg, NULL, 0);
|
||||
break;
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
148
0061-grub-core-term-gfxterm.c-grub_virtual_screen_setup-G.patch
Normal file
148
0061-grub-core-term-gfxterm.c-grub_virtual_screen_setup-G.patch
Normal file
@ -0,0 +1,148 @@
|
||||
From c54df09cdb44ab19f9f7d5ece0f6568f4c19e46f Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 16:07:33 +0100
|
||||
Subject: [PATCH 061/364] * grub-core/term/gfxterm.c
|
||||
(grub_virtual_screen_setup): Get font as argument rather than font
|
||||
name. All users updated. (grub_gfxterm_set_window): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/gfxmenu/view.c | 11 ++++++++++-
|
||||
grub-core/term/gfxterm.c | 18 ++++++++++--------
|
||||
include/grub/gfxterm.h | 3 ++-
|
||||
4 files changed, 28 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 4204678..7617678 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,9 @@
|
||||
+2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/term/gfxterm.c (grub_virtual_screen_setup): Get font as
|
||||
+ argument rather than font name. All users updated.
|
||||
+ (grub_gfxterm_set_window): Likewise.
|
||||
+
|
||||
2012-12-10 Vladimir Testov <vladimir.testov@rosalab.ru>
|
||||
|
||||
* util/grub-mkfont.c (argp_parser): Fix a typo which prevented --asce
|
||||
diff --git a/grub-core/gfxmenu/view.c b/grub-core/gfxmenu/view.c
|
||||
index 9023fd3..c005773 100644
|
||||
--- a/grub-core/gfxmenu/view.c
|
||||
+++ b/grub-core/gfxmenu/view.c
|
||||
@@ -361,6 +361,15 @@ grub_gfxmenu_draw_terminal_box (void)
|
||||
static void
|
||||
init_terminal (grub_gfxmenu_view_t view)
|
||||
{
|
||||
+ grub_font_t terminal_font;
|
||||
+
|
||||
+ terminal_font = grub_font_get (view->terminal_font_name);
|
||||
+ if (!terminal_font)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_FONT, "no font loaded");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
term_rect.width = view->screen.width * 7 / 10;
|
||||
term_rect.height = view->screen.height * 7 / 10;
|
||||
|
||||
@@ -375,7 +384,7 @@ init_terminal (grub_gfxmenu_view_t view)
|
||||
grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY, term_rect.x,
|
||||
term_rect.y,
|
||||
term_rect.width, term_rect.height,
|
||||
- view->double_repaint, view->terminal_font_name, 3);
|
||||
+ view->double_repaint, terminal_font, 3);
|
||||
grub_gfxterm_decorator_hook = grub_gfxmenu_draw_terminal_box;
|
||||
}
|
||||
|
||||
diff --git a/grub-core/term/gfxterm.c b/grub-core/term/gfxterm.c
|
||||
index c995b84..12567d1 100644
|
||||
--- a/grub-core/term/gfxterm.c
|
||||
+++ b/grub-core/term/gfxterm.c
|
||||
@@ -201,7 +201,7 @@ grub_virtual_screen_free (void)
|
||||
static grub_err_t
|
||||
grub_virtual_screen_setup (unsigned int x, unsigned int y,
|
||||
unsigned int width, unsigned int height,
|
||||
- const char *font_name)
|
||||
+ grub_font_t font)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@@ -209,10 +209,7 @@ grub_virtual_screen_setup (unsigned int x, unsigned int y,
|
||||
grub_virtual_screen_free ();
|
||||
|
||||
/* Initialize with default data. */
|
||||
- virtual_screen.font = grub_font_get (font_name);
|
||||
- if (!virtual_screen.font)
|
||||
- return grub_error (GRUB_ERR_BAD_FONT,
|
||||
- "no font loaded");
|
||||
+ virtual_screen.font = font;
|
||||
virtual_screen.width = width;
|
||||
virtual_screen.height = height;
|
||||
virtual_screen.offset_x = x;
|
||||
@@ -282,7 +279,7 @@ grub_err_t
|
||||
grub_gfxterm_set_window (struct grub_video_render_target *target,
|
||||
int x, int y, int width, int height,
|
||||
int double_repaint,
|
||||
- const char *font_name, int border_width)
|
||||
+ grub_font_t font, int border_width)
|
||||
{
|
||||
/* Clean up any prior instance. */
|
||||
destroy_window ();
|
||||
@@ -294,7 +291,7 @@ grub_gfxterm_set_window (struct grub_video_render_target *target,
|
||||
if (grub_virtual_screen_setup (border_width, border_width,
|
||||
width - 2 * border_width,
|
||||
height - 2 * border_width,
|
||||
- font_name)
|
||||
+ font)
|
||||
!= GRUB_ERR_NONE)
|
||||
{
|
||||
return grub_errno;
|
||||
@@ -321,6 +318,7 @@ grub_gfxterm_fullscreen (void)
|
||||
grub_video_color_t color;
|
||||
grub_err_t err;
|
||||
int double_redraw;
|
||||
+ grub_font_t font;
|
||||
|
||||
err = grub_video_get_info (&mode_info);
|
||||
/* Figure out what mode we ended up. */
|
||||
@@ -346,12 +344,16 @@ grub_gfxterm_fullscreen (void)
|
||||
if (! font_name)
|
||||
font_name = ""; /* Allow fallback to any font. */
|
||||
|
||||
+ font = grub_font_get (font_name);
|
||||
+ if (!font)
|
||||
+ return grub_error (GRUB_ERR_BAD_FONT, "no font loaded");
|
||||
+
|
||||
grub_gfxterm_decorator_hook = NULL;
|
||||
|
||||
return grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY,
|
||||
0, 0, mode_info.width, mode_info.height,
|
||||
double_redraw,
|
||||
- font_name, DEFAULT_BORDER_WIDTH);
|
||||
+ font, DEFAULT_BORDER_WIDTH);
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
diff --git a/include/grub/gfxterm.h b/include/grub/gfxterm.h
|
||||
index 3fc8d92..361f73e 100644
|
||||
--- a/include/grub/gfxterm.h
|
||||
+++ b/include/grub/gfxterm.h
|
||||
@@ -23,12 +23,13 @@
|
||||
#include <grub/types.h>
|
||||
#include <grub/term.h>
|
||||
#include <grub/video.h>
|
||||
+#include <grub/font.h>
|
||||
|
||||
grub_err_t
|
||||
EXPORT_FUNC (grub_gfxterm_set_window) (struct grub_video_render_target *target,
|
||||
int x, int y, int width, int height,
|
||||
int double_repaint,
|
||||
- const char *font_name, int border_width);
|
||||
+ grub_font_t font, int border_width);
|
||||
|
||||
typedef void (*grub_gfxterm_repaint_callback_t)(int x, int y,
|
||||
int width, int height);
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,87 @@
|
||||
From 592fe36daf0064866bbee740383cbf7bd2156639 Mon Sep 17 00:00:00 2001
|
||||
From: "Dr. Tilmann Bubeck" <t.bubeck@reinform.de>
|
||||
Date: Mon, 10 Dec 2012 16:14:12 +0100
|
||||
Subject: [PATCH 062/364] * grub-core/gfxmenu/view.c (init_terminal):
|
||||
Avoid making terminal window too small.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/gfxmenu/view.c | 31 +++++++++++++++++++++++++++----
|
||||
2 files changed, 32 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 7617678..ce822ee 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Dr. Tilmann Bubeck <t.bubeck@reinform.de>
|
||||
+
|
||||
+ * grub-core/gfxmenu/view.c (init_terminal): Avoid making terminal
|
||||
+ window too small.
|
||||
+
|
||||
2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/term/gfxterm.c (grub_virtual_screen_setup): Get font as
|
||||
diff --git a/grub-core/gfxmenu/view.c b/grub-core/gfxmenu/view.c
|
||||
index c005773..1918ea4 100644
|
||||
--- a/grub-core/gfxmenu/view.c
|
||||
+++ b/grub-core/gfxmenu/view.c
|
||||
@@ -361,8 +361,14 @@ grub_gfxmenu_draw_terminal_box (void)
|
||||
static void
|
||||
init_terminal (grub_gfxmenu_view_t view)
|
||||
{
|
||||
+ const int border_width = 3;
|
||||
+
|
||||
grub_font_t terminal_font;
|
||||
|
||||
+ unsigned int line_width;
|
||||
+
|
||||
+ struct grub_font_glyph *glyph;
|
||||
+
|
||||
terminal_font = grub_font_get (view->terminal_font_name);
|
||||
if (!terminal_font)
|
||||
{
|
||||
@@ -370,11 +376,27 @@ init_terminal (grub_gfxmenu_view_t view)
|
||||
return;
|
||||
}
|
||||
|
||||
- term_rect.width = view->screen.width * 7 / 10;
|
||||
+ glyph = grub_font_get_glyph (terminal_font, 'M');
|
||||
+
|
||||
+ line_width = ((glyph ? glyph->device_width : 8) * 80 + 2 * border_width);
|
||||
+
|
||||
+ if (view->screen.width <= line_width)
|
||||
+ /* The screen is too small. Use all space, except a small border
|
||||
+ to show the user, it is a window and not full screen: */
|
||||
+ term_rect.width = view->screen.width - 6 * border_width;
|
||||
+ else
|
||||
+ {
|
||||
+ /* The screen is big enough. Try 70% of the screen width: */
|
||||
+ term_rect.width = view->screen.width * 7 / 10;
|
||||
+ /* Make sure, that we use at least the line_width: */
|
||||
+ if ( term_rect.width < line_width )
|
||||
+ term_rect.width = line_width;
|
||||
+ }
|
||||
+
|
||||
term_rect.height = view->screen.height * 7 / 10;
|
||||
|
||||
- term_rect.x = view->screen.x + view->screen.width * (10 - 7) / 10 / 2;
|
||||
- term_rect.y = view->screen.y + view->screen.height * (10 - 7) / 10 / 2;
|
||||
+ term_rect.x = view->screen.x + (view->screen.width - term_rect.width) / 2;
|
||||
+ term_rect.y = view->screen.y + (view->screen.height - term_rect.height) / 2;
|
||||
|
||||
term_view = view;
|
||||
|
||||
@@ -384,7 +406,8 @@ init_terminal (grub_gfxmenu_view_t view)
|
||||
grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY, term_rect.x,
|
||||
term_rect.y,
|
||||
term_rect.width, term_rect.height,
|
||||
- view->double_repaint, terminal_font, 3);
|
||||
+ view->double_repaint, terminal_font,
|
||||
+ border_width);
|
||||
grub_gfxterm_decorator_hook = grub_gfxmenu_draw_terminal_box;
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,75 @@
|
||||
From acfa4335f7ed7310e7ee2da1f68443785f7f7913 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Mon, 10 Dec 2012 16:23:16 +0100
|
||||
Subject: [PATCH 063/364] * grub-core/kern/ieee1275/init.c
|
||||
(grub_machine_get_bootlocation): Use dynamic allocation for the bootpath
|
||||
buffer.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/kern/ieee1275/init.c | 21 +++++++++++++++++----
|
||||
2 files changed, 22 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index ce822ee..8bd581e 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
+
|
||||
+ * grub-core/kern/ieee1275/init.c (grub_machine_get_bootlocation): Use
|
||||
+ dynamic allocation for the bootpath buffer.
|
||||
+
|
||||
2012-12-10 Dr. Tilmann Bubeck <t.bubeck@reinform.de>
|
||||
|
||||
* grub-core/gfxmenu/view.c (init_terminal): Avoid making terminal
|
||||
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||
index 7d03a8a..14dcdf0 100644
|
||||
--- a/grub-core/kern/ieee1275/init.c
|
||||
+++ b/grub-core/kern/ieee1275/init.c
|
||||
@@ -82,18 +82,30 @@ void (*grub_ieee1275_net_config) (const char *dev,
|
||||
void
|
||||
grub_machine_get_bootlocation (char **device, char **path)
|
||||
{
|
||||
- char bootpath[64]; /* XXX check length */
|
||||
+ char *bootpath;
|
||||
+ grub_ssize_t bootpath_size;
|
||||
char *filename;
|
||||
char *type;
|
||||
-
|
||||
- if (grub_ieee1275_get_property (grub_ieee1275_chosen, "bootpath", &bootpath,
|
||||
- sizeof (bootpath), 0))
|
||||
+
|
||||
+ 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);
|
||||
+ 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';
|
||||
+
|
||||
/* Transform an OF device path to a GRUB path. */
|
||||
|
||||
type = grub_ieee1275_get_device_type (bootpath);
|
||||
@@ -132,6 +144,7 @@ grub_machine_get_bootlocation (char **device, char **path)
|
||||
*path = filename;
|
||||
}
|
||||
}
|
||||
+ grub_free (bootpath);
|
||||
}
|
||||
|
||||
/* Claim some available memory in the first /memory node. */
|
||||
--
|
||||
1.8.1.4
|
||||
|
38
0064-util-grub-install.in-Remove-stale-TODO.patch
Normal file
38
0064-util-grub-install.in-Remove-stale-TODO.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From b21a644e810f7c20844b828150d24d58ad0b776e Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Borzenkov <arvidjaar@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 17:00:56 +0100
|
||||
Subject: [PATCH 064/364] * util/grub-install.in: Remove stale TODO.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
util/grub-install.in | 2 --
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 8bd581e..0b57abf 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2012-12-10 Andrey Borzenkov <arvidjaar@gmail.com>
|
||||
+
|
||||
+ * util/grub-install.in: Remove stale TODO.
|
||||
+
|
||||
2012-12-10 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
|
||||
* grub-core/kern/ieee1275/init.c (grub_machine_get_bootlocation): Use
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
index 56be98f..a2cf07a 100644
|
||||
--- a/util/grub-install.in
|
||||
+++ b/util/grub-install.in
|
||||
@@ -486,8 +486,6 @@ if [ x"$grub_modinfo_platform" = xefi ]; then
|
||||
*)
|
||||
efi_file=grub.efi ;;
|
||||
esac
|
||||
- # TODO: We should also use efibootmgr, if available, to add a Boot
|
||||
- # entry for ourselves.
|
||||
fi
|
||||
efidir="$efidir/EFI/$efi_distributor"
|
||||
mkdir -p "$efidir" || exit 1
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -1,19 +1,32 @@
|
||||
From 9436d0324b98e71c8ab55b09b4248a617cd463a8 Mon Sep 17 00:00:00 2001
|
||||
From 28e8ed1fc8a89e3d4c71be6b27166b26b4e61570 Mon Sep 17 00:00:00 2001
|
||||
From: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
Date: Wed, 7 Nov 2012 16:22:33 -0200
|
||||
Subject: [PATCH] Follow the symbolic link (ieee1275)
|
||||
Date: Mon, 10 Dec 2012 17:07:01 +0100
|
||||
Subject: [PATCH 065/364] * util/grub-install.in: Follow the symbolic
|
||||
link parameter added to the file command.
|
||||
|
||||
If the device used is a symlink, the file command must "follow
|
||||
the link" in order to check the real device.
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-install.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0b57abf..e522078 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
+
|
||||
+ * util/grub-install.in: Follow the symbolic link parameter added
|
||||
+ to the file command.
|
||||
+
|
||||
2012-12-10 Andrey Borzenkov <arvidjaar@gmail.com>
|
||||
|
||||
* util/grub-install.in: Remove stale TODO.
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
index 69a97ad..19dc3b4 100644
|
||||
index a2cf07a..9dc4e0b 100644
|
||||
--- a/util/grub-install.in
|
||||
+++ b/util/grub-install.in
|
||||
@@ -750,7 +750,7 @@ elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ]
|
||||
@@ -748,7 +748,7 @@ elif [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-ieee1275" ]
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -23,5 +36,5 @@ index 69a97ad..19dc3b4 100644
|
||||
gettext "Failed to copy Grub to the PReP partition." 1>&2
|
||||
echo 1>&2
|
||||
--
|
||||
1.7.10.4
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,54 @@
|
||||
From 08a1459a9534fa2337744a32dda511d496e9d6cf Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 19:15:51 +0100
|
||||
Subject: [PATCH 066/364] * grub-core/disk/cryptodisk.c
|
||||
(grub_cmd_cryptomount): Strip brackets around device name if
|
||||
necessarry.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/disk/cryptodisk.c | 12 +++++++++++-
|
||||
2 files changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index e522078..8d7d988 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/disk/cryptodisk.c (grub_cmd_cryptomount): Strip brackets
|
||||
+ around device name if necessarry.
|
||||
+
|
||||
2012-12-10 Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
|
||||
|
||||
* util/grub-install.in: Follow the symbolic link parameter added
|
||||
diff --git a/grub-core/disk/cryptodisk.c b/grub-core/disk/cryptodisk.c
|
||||
index 1ac906d..3de3b86 100644
|
||||
--- a/grub-core/disk/cryptodisk.c
|
||||
+++ b/grub-core/disk/cryptodisk.c
|
||||
@@ -928,10 +928,20 @@ grub_cmd_cryptomount (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
grub_err_t err;
|
||||
grub_disk_t disk;
|
||||
grub_cryptodisk_t dev;
|
||||
+ char *devname;
|
||||
+ char *devlast;
|
||||
|
||||
search_uuid = NULL;
|
||||
check_boot = state[2].set;
|
||||
- disk = grub_disk_open (args[0]);
|
||||
+ devname = args[0];
|
||||
+ if (devname[0] == '(' && *(devlast = &devname[grub_strlen (devname) - 1]) == ')')
|
||||
+ {
|
||||
+ *devlast = '\0';
|
||||
+ disk = grub_disk_open (devname + 1);
|
||||
+ *devlast = ')';
|
||||
+ }
|
||||
+ else
|
||||
+ disk = grub_disk_open (devname);
|
||||
if (!disk)
|
||||
return grub_errno;
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,86 @@
|
||||
From 80fa6c9eaeb13ed950d44bae4890c5b2da7ea6f1 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 10 Dec 2012 22:22:23 +0100
|
||||
Subject: [PATCH 067/364] * docs/grub.texi (Network): Update
|
||||
instructions on generating netboot image.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
docs/grub.texi | 35 ++++++++++++++++++-----------------
|
||||
2 files changed, 23 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 8d7d988..04ffaec 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * docs/grub.texi (Network): Update instructions on generating netboot
|
||||
+ image.
|
||||
+
|
||||
+2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/disk/cryptodisk.c (grub_cmd_cryptomount): Strip brackets
|
||||
around device name if necessarry.
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index b0e7f59..39d9614 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -2080,34 +2080,35 @@ The following properties are supported by all components:
|
||||
@node Network
|
||||
@chapter Booting GRUB from the network
|
||||
|
||||
-The following instructions only work on PC BIOS systems where the Preboot
|
||||
-eXecution Environment (PXE) is available.
|
||||
+The following instructions don't work for *-emu, i386-qemu, i386-coreboot,
|
||||
+i386-multiboot, mips_loongson, mips-arc and mips_qemu_mips
|
||||
|
||||
-To generate a PXE boot image, run:
|
||||
+To generate a netbootable directory, run:
|
||||
|
||||
@example
|
||||
@group
|
||||
-grub-mkimage --format=i386-pc-pxe --output=grub.pxe --prefix='(pxe)/boot/grub' pxe pxecmd
|
||||
+grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/<platform>
|
||||
@end group
|
||||
@end example
|
||||
|
||||
-Copy @file{grub.pxe}, @file{/boot/grub/*.mod}, and @file{/boot/grub/*.lst}
|
||||
-to the PXE (TFTP) server, ensuring that @file{*.mod} and @file{*.lst} are
|
||||
-accessible via the @file{/boot/grub/} path from the TFTP server root. Set
|
||||
-the DHCP server configuration to offer @file{grub.pxe} as the boot file (the
|
||||
-@samp{filename} option in ISC dhcpd).
|
||||
+E.g. for i386-pc:
|
||||
|
||||
-You can also use the @command{grub-mknetdir} utility to generate an image
|
||||
-and a GRUB directory tree, rather than copying files around manually.
|
||||
+@example
|
||||
+@group
|
||||
+grub-mknetdir --net-directory=/srv/tftp --subdir=/boot/grub -d /usr/lib/grub/i386-pc
|
||||
+@end group
|
||||
+@end example
|
||||
+
|
||||
+Then follow instructions printed out by grub-mknetdir on configuring your DHCP
|
||||
+server.
|
||||
|
||||
After GRUB has started, files on the TFTP server will be accessible via the
|
||||
-@samp{(pxe)} device.
|
||||
+@samp{(tftp)} device.
|
||||
|
||||
-The server and gateway IP address can be controlled by changing the
|
||||
-@samp{(pxe)} device name to @samp{(pxe:@var{server-ip})} or
|
||||
-@samp{(pxe:@var{server-ip}:@var{gateway-ip})}. Note that this should be
|
||||
-changed both in the prefix and in any references to the device name in the
|
||||
-configuration file.
|
||||
+The server IP address can be controlled by changing the
|
||||
+@samp{(tftp)} device name to @samp{(tftp,@var{server-ip})}. Note that
|
||||
+this should be changed both in the prefix and in any references to the
|
||||
+device name in the configuration file.
|
||||
|
||||
GRUB provides several environment variables which may be used to inspect or
|
||||
change the behaviour of the PXE device:
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From 34cb801ec4d1999babf5f7fe65cd70a149746137 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Tue, 11 Dec 2012 17:40:35 +0100
|
||||
Subject: [PATCH 068/364] * util/grub.d/20_linux_xen.in: Addmissing
|
||||
assignment to machine. Reported by: Eriks Latosheks <foresterlv>.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub.d/20_linux_xen.in | 2 ++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 04ffaec..9104a46 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2012-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * util/grub.d/20_linux_xen.in: Addmissing assignment to machine.
|
||||
+ Reported by: Eriks Latosheks <foresterlv>.
|
||||
+
|
||||
2012-12-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* docs/grub.texi (Network): Update instructions on generating netboot
|
||||
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
|
||||
index d4d0110..ac05ee4 100644
|
||||
--- a/util/grub.d/20_linux_xen.in
|
||||
+++ b/util/grub.d/20_linux_xen.in
|
||||
@@ -174,6 +174,8 @@ boot_device_id=
|
||||
|
||||
title_correction_code=
|
||||
|
||||
+machine=`uname -m`
|
||||
+
|
||||
case "$machine" in
|
||||
i?86) GENKERNEL_ARCH="x86" ;;
|
||||
mips|mips64) GENKERNEL_ARCH="mips" ;;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,66 @@
|
||||
From d09689a5a2863043d007c1acb9bf0a8d1d3b776d Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 28 Dec 2012 06:43:35 +0000
|
||||
Subject: [PATCH 069/364] Backport gnulib fixes for C11. Fixes Savannah bug
|
||||
#37738.
|
||||
|
||||
* grub-core/gnulib/stdio.in.h (gets): Warn on use only if
|
||||
HAVE_RAW_DECL_GETS.
|
||||
* m4/stdio_h.m4 (gl_STDIO_H): Check for gets.
|
||||
---
|
||||
ChangeLog | 8 ++++++++
|
||||
grub-core/gnulib/stdio.in.h | 6 ++++--
|
||||
m4/stdio_h.m4 | 2 +-
|
||||
3 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 9104a46..0f04f5c 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ Backport gnulib fixes for C11. Fixes Savannah bug #37738.
|
||||
+
|
||||
+ * grub-core/gnulib/stdio.in.h (gets): Warn on use only if
|
||||
+ HAVE_RAW_DECL_GETS.
|
||||
+ * m4/stdio_h.m4 (gl_STDIO_H): Check for gets.
|
||||
+
|
||||
2012-12-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* util/grub.d/20_linux_xen.in: Addmissing assignment to machine.
|
||||
diff --git a/grub-core/gnulib/stdio.in.h b/grub-core/gnulib/stdio.in.h
|
||||
index 80b9dbf..a8b00c6 100644
|
||||
--- a/grub-core/gnulib/stdio.in.h
|
||||
+++ b/grub-core/gnulib/stdio.in.h
|
||||
@@ -138,10 +138,12 @@ _GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
|
||||
#endif
|
||||
|
||||
/* It is very rare that the developer ever has full control of stdin,
|
||||
- so any use of gets warrants an unconditional warning. Assume it is
|
||||
- always declared, since it is required by C89. */
|
||||
+ so any use of gets warrants an unconditional warning; besides, C11
|
||||
+ removed it. */
|
||||
#undef gets
|
||||
+#if HAVE_RAW_DECL_GETS
|
||||
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||||
+#endif
|
||||
|
||||
#if @GNULIB_FOPEN@
|
||||
# if @REPLACE_FOPEN@
|
||||
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
|
||||
index f5650cd..8458bec 100644
|
||||
--- a/m4/stdio_h.m4
|
||||
+++ b/m4/stdio_h.m4
|
||||
@@ -37,7 +37,7 @@ AC_DEFUN([gl_STDIO_H],
|
||||
dnl corresponding gnulib module is not in use, and which is not
|
||||
dnl guaranteed by C89.
|
||||
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
|
||||
- ]], [dprintf fpurge fseeko ftello getdelim getline popen renameat
|
||||
+ ]], [dprintf fpurge fseeko ftello getdelim getline gets popen renameat
|
||||
snprintf tmpfile vdprintf vsnprintf])
|
||||
])
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
516
0070-Apply-program-name-transformations-at-build-time-rat.patch
Normal file
516
0070-Apply-program-name-transformations-at-build-time-rat.patch
Normal file
@ -0,0 +1,516 @@
|
||||
From 6db544ab2cdff7e5821558d150ac848c28c3fc93 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 28 Dec 2012 06:57:17 +0000
|
||||
Subject: [PATCH 070/364] Apply program name transformations at build-time
|
||||
rather than at run-time. Fixes Debian bug #696465.
|
||||
|
||||
* acinclude.m4 (grub_TRANSFORM): New macro.
|
||||
* configure.ac: Create output variables with transformed names for
|
||||
most programs.
|
||||
* util/bash-completion.d/grub-completion.bash.in: Use
|
||||
pre-transformed variables for program names.
|
||||
* util/grub-install.in: Likewise.
|
||||
* util/grub-kbdcomp.in: Likewise.
|
||||
* util/grub-mkconfig.in: Likewise.
|
||||
* util/grub-mkconfig_lib.in: Likewise.
|
||||
* util/grub-mknetdir.in: Likewise.
|
||||
* util/grub-mkrescue.in: Likewise.
|
||||
* util/grub-mkstandalone.in: Likewise.
|
||||
* util/grub-reboot.in: Likewise.
|
||||
* util/grub-set-default.in: Likewise.
|
||||
* util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
|
||||
* tests/util/grub-shell-tester.in: Remove unused assignment.
|
||||
* tests/util/grub-shell.in: Likewise.
|
||||
* util/grub.d/00_header.in: Likewise.
|
||||
---
|
||||
ChangeLog | 24 ++++++++++++++++++++++++
|
||||
acinclude.m4 | 6 ++++++
|
||||
configure.ac | 16 ++++++++++++++++
|
||||
tests/util/grub-shell-tester.in | 2 --
|
||||
tests/util/grub-shell.in | 2 --
|
||||
util/bash-completion.d/grub-completion.bash.in | 24 ++++++++++++------------
|
||||
util/grub-install.in | 14 ++++++--------
|
||||
util/grub-kbdcomp.in | 4 +---
|
||||
util/grub-mkconfig.in | 7 +++----
|
||||
util/grub-mkconfig_lib.in | 6 ++----
|
||||
util/grub-mknetdir.in | 4 +---
|
||||
util/grub-mkrescue.in | 4 +---
|
||||
util/grub-mkstandalone.in | 4 +---
|
||||
util/grub-reboot.in | 4 +---
|
||||
util/grub-set-default.in | 4 +---
|
||||
util/grub.d/00_header.in | 2 --
|
||||
util/powerpc/ieee1275/grub-mkrescue.in | 4 +---
|
||||
17 files changed, 76 insertions(+), 55 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0f04f5c..b8bd215 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,29 @@
|
||||
2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ Apply program name transformations at build-time rather than at
|
||||
+ run-time. Fixes Debian bug #696465.
|
||||
+
|
||||
+ * acinclude.m4 (grub_TRANSFORM): New macro.
|
||||
+ * configure.ac: Create output variables with transformed names for
|
||||
+ most programs.
|
||||
+ * util/bash-completion.d/grub-completion.bash.in: Use
|
||||
+ pre-transformed variables for program names.
|
||||
+ * util/grub-install.in: Likewise.
|
||||
+ * util/grub-kbdcomp.in: Likewise.
|
||||
+ * util/grub-mkconfig.in: Likewise.
|
||||
+ * util/grub-mkconfig_lib.in: Likewise.
|
||||
+ * util/grub-mknetdir.in: Likewise.
|
||||
+ * util/grub-mkrescue.in: Likewise.
|
||||
+ * util/grub-mkstandalone.in: Likewise.
|
||||
+ * util/grub-reboot.in: Likewise.
|
||||
+ * util/grub-set-default.in: Likewise.
|
||||
+ * util/powerpc/ieee1275/grub-mkrescue.in: Likewise.
|
||||
+ * tests/util/grub-shell-tester.in: Remove unused assignment.
|
||||
+ * tests/util/grub-shell.in: Likewise.
|
||||
+ * util/grub.d/00_header.in: Likewise.
|
||||
+
|
||||
+2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
Backport gnulib fixes for C11. Fixes Savannah bug #37738.
|
||||
|
||||
* grub-core/gnulib/stdio.in.h (gets): Warn on use only if
|
||||
diff --git a/acinclude.m4 b/acinclude.m4
|
||||
index 0eb2e2a..49a1a75 100644
|
||||
--- a/acinclude.m4
|
||||
+++ b/acinclude.m4
|
||||
@@ -452,3 +452,9 @@ else
|
||||
AC_MSG_RESULT([no])
|
||||
[fi]
|
||||
])
|
||||
+
|
||||
+dnl Create an output variable with the transformed name of a GRUB utility
|
||||
+dnl program.
|
||||
+AC_DEFUN([grub_TRANSFORM],[dnl
|
||||
+AC_SUBST(AS_TR_SH([$1]), [`AS_ECHO([$1]) | sed "$program_transform_name"`])dnl
|
||||
+])
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ea3830a..a41f117 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -50,6 +50,22 @@ AC_CONFIG_HEADER([config-util.h])
|
||||
|
||||
# Program name transformations
|
||||
AC_ARG_PROGRAM
|
||||
+grub_TRANSFORM([grub-bios-setup])
|
||||
+grub_TRANSFORM([grub-editenv])
|
||||
+grub_TRANSFORM([grub-install])
|
||||
+grub_TRANSFORM([grub-mkconfig])
|
||||
+grub_TRANSFORM([grub-mkfont])
|
||||
+grub_TRANSFORM([grub-mkimage])
|
||||
+grub_TRANSFORM([grub-mklayout])
|
||||
+grub_TRANSFORM([grub-mkpasswd-pbkdf2])
|
||||
+grub_TRANSFORM([grub-mkrelpath])
|
||||
+grub_TRANSFORM([grub-mkrescue])
|
||||
+grub_TRANSFORM([grub-probe])
|
||||
+grub_TRANSFORM([grub-reboot])
|
||||
+grub_TRANSFORM([grub-script-check])
|
||||
+grub_TRANSFORM([grub-set-default])
|
||||
+grub_TRANSFORM([grub-setup])
|
||||
+grub_TRANSFORM([grub-sparc64-setup])
|
||||
|
||||
# Optimization flag. Allow user to override.
|
||||
if test "x$TARGET_CFLAGS" = x; then
|
||||
diff --git a/tests/util/grub-shell-tester.in b/tests/util/grub-shell-tester.in
|
||||
index 80c8830..5adce0a 100644
|
||||
--- a/tests/util/grub-shell-tester.in
|
||||
+++ b/tests/util/grub-shell-tester.in
|
||||
@@ -18,8 +18,6 @@ set -e
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
diff --git a/tests/util/grub-shell.in b/tests/util/grub-shell.in
|
||||
index f4fa23a..04e64da 100644
|
||||
--- a/tests/util/grub-shell.in
|
||||
+++ b/tests/util/grub-shell.in
|
||||
@@ -18,8 +18,6 @@ set -e
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
diff --git a/util/bash-completion.d/grub-completion.bash.in b/util/bash-completion.d/grub-completion.bash.in
|
||||
index 64d49fe..5f4b249 100644
|
||||
--- a/util/bash-completion.d/grub-completion.bash.in
|
||||
+++ b/util/bash-completion.d/grub-completion.bash.in
|
||||
@@ -165,12 +165,12 @@ _grub_set_entry () {
|
||||
fi
|
||||
}
|
||||
|
||||
-__grub_set_default_program=$( echo grub-set-default | sed "@program_transform_name@" )
|
||||
+__grub_set_default_program="@grub_set_default@"
|
||||
have ${__grub_set_default_program} && \
|
||||
complete -F _grub_set_entry -o filenames ${__grub_set_default_program}
|
||||
unset __grub_set_default_program
|
||||
|
||||
-__grub_reboot_program=$( echo grub-reboot | sed "@program_transform_name@" )
|
||||
+__grub_reboot_program="@grub_reboot@"
|
||||
have ${__grub_reboot_program} && \
|
||||
complete -F _grub_set_entry -o filenames ${__grub_reboot_program}
|
||||
unset __grub_reboot_program
|
||||
@@ -197,7 +197,7 @@ _grub_editenv () {
|
||||
create list set unset"
|
||||
}
|
||||
|
||||
-__grub_editenv_program=$( echo grub-editenv | sed "@program_transform_name@" )
|
||||
+__grub_editenv_program="@grub_editenv@"
|
||||
have ${__grub_editenv_program} && \
|
||||
complete -F _grub_editenv -o filenames ${__grub_editenv_program}
|
||||
unset __grub_editenv_program
|
||||
@@ -218,7 +218,7 @@ _grub_mkconfig () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_mkconfig_program=$( echo grub-mkconfig | sed "@program_transform_name@" )
|
||||
+__grub_mkconfig_program="@grub_mkconfig@"
|
||||
have ${__grub_mkconfig_program} && \
|
||||
complete -F _grub_mkconfig -o filenames ${__grub_mkconfig_program}
|
||||
unset __grub_mkconfig_program
|
||||
@@ -252,7 +252,7 @@ _grub_setup () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_setup_program=$( echo grub-setup | sed "@program_transform_name@" )
|
||||
+__grub_setup_program="@grub_setup@"
|
||||
have ${__grub_setup_program} && \
|
||||
complete -F _grub_setup -o filenames ${__grub_setup_program}
|
||||
unset __grub_setup_program
|
||||
@@ -298,7 +298,7 @@ _grub_install () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_install_program=$( echo grub-install | sed "@program_transform_name@" )
|
||||
+__grub_install_program="@grub_install@"
|
||||
have ${__grub_install_program} && \
|
||||
complete -F _grub_install -o filenames ${__grub_install_program}
|
||||
unset __grub_install_program
|
||||
@@ -320,7 +320,7 @@ _grub_mkfont () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_mkfont_program=$( echo grub-mkfont | sed "@program_transform_name@" )
|
||||
+__grub_mkfont_program="@grub_mkfont@"
|
||||
have ${__grub_mkfont_program} && \
|
||||
complete -F _grub_mkfont -o filenames ${__grub_mkfont_program}
|
||||
unset __grub_mkfont_program
|
||||
@@ -351,7 +351,7 @@ _grub_mkrescue () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_mkrescue_program=$( echo grub-mkrescue | sed "@program_transform_name@" )
|
||||
+__grub_mkrescue_program="@grub_mkrescue@"
|
||||
have ${__grub_mkrescue_program} && \
|
||||
complete -F _grub_mkrescue -o filenames ${__grub_mkrescue_program}
|
||||
unset __grub_mkrescue_program
|
||||
@@ -393,7 +393,7 @@ _grub_mkimage () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_mkimage_program=$( echo grub-mkimage | sed "@program_transform_name@" )
|
||||
+__grub_mkimage_program="@grub_mkimage@"
|
||||
have ${__grub_mkimage_program} && \
|
||||
complete -F _grub_mkimage -o filenames ${__grub_mkimage_program}
|
||||
unset __grub_mkimage_program
|
||||
@@ -415,7 +415,7 @@ _grub_mkpasswd_pbkdf2 () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_mkpasswd_pbkdf2_program=$( echo grub-mkpasswd-pbkdf2 | sed "@program_transform_name@" )
|
||||
+__grub_mkpasswd_pbkdf2_program="@grub_mkpasswd_pbkdf2@"
|
||||
have ${__grub_mkpasswd_pbkdf2_program} && \
|
||||
complete -F _grub_mkpasswd_pbkdf2 -o filenames ${__grub_mkpasswd_pbkdf2_program}
|
||||
unset __grub_mkpasswd_pbkdf2_program
|
||||
@@ -453,7 +453,7 @@ _grub_probe () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_probe_program=$( echo grub-probe | sed "@program_transform_name@" )
|
||||
+__grub_probe_program="@grub_probe@"
|
||||
have ${__grub_probe_program} && \
|
||||
complete -F _grub_probe -o filenames ${__grub_probe_program}
|
||||
unset __grub_probe_program
|
||||
@@ -475,7 +475,7 @@ _grub_script_check () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_script_check_program=$( echo grub-script-check | sed "@program_transform_name@" )
|
||||
+__grub_script_check_program="@grub_script_check@"
|
||||
have ${__grub_script_check_program} && \
|
||||
complete -F _grub_script_check -o filenames ${__grub_script_check_program}
|
||||
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
index 9dc4e0b..218bbd9 100644
|
||||
--- a/util/grub-install.in
|
||||
+++ b/util/grub-install.in
|
||||
@@ -17,8 +17,6 @@
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -44,10 +42,10 @@ localedir="@datadir@/locale"
|
||||
|
||||
self="`basename $0`"
|
||||
|
||||
-grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`"
|
||||
-grub_probe="${sbindir}/`echo grub-probe | sed ${transform}`"
|
||||
-grub_editenv="${bindir}/`echo grub-editenv | sed ${transform}`"
|
||||
-grub_mkrelpath="${bindir}/`echo grub-mkrelpath | sed ${transform}`"
|
||||
+grub_mkimage="${bindir}/@grub_mkimage@"
|
||||
+grub_probe="${sbindir}/@grub_probe@"
|
||||
+grub_editenv="${bindir}/@grub_editenv@"
|
||||
+grub_mkrelpath="${bindir}/@grub_mkrelpath@"
|
||||
rootdir=
|
||||
bootdir=
|
||||
grubdir="`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`"
|
||||
@@ -347,11 +345,11 @@ else
|
||||
fi
|
||||
|
||||
if test "x$grub_setup" = x && [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ]; then
|
||||
- grub_setup="${sbindir}/`echo grub-bios-setup | sed ${transform}`"
|
||||
+ grub_setup="${sbindir}/@grub_bios_setup@"
|
||||
fi
|
||||
|
||||
if test "x$grub_setup" = x && [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "sparc64-ieee1275" ]; then
|
||||
- grub_setup="${sbindir}/`echo grub-sparc64-setup | sed ${transform}`"
|
||||
+ grub_setup="${sbindir}/@grub_sparc64_setup@"
|
||||
fi
|
||||
|
||||
if test "x$install_device" = x && ([ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ] \
|
||||
diff --git a/util/grub-kbdcomp.in b/util/grub-kbdcomp.in
|
||||
index 29f0456..715c483 100644
|
||||
--- a/util/grub-kbdcomp.in
|
||||
+++ b/util/grub-kbdcomp.in
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
bindir="@bindir@"
|
||||
@@ -11,7 +9,7 @@ if [ "x$pkgdatadir" = x ]; then
|
||||
pkgdatadir="${datadir}/@PACKAGE@"
|
||||
fi
|
||||
|
||||
-grub_mklayout="${bindir}/`echo grub-mklayout | sed ${transform}`"
|
||||
+grub_mklayout="${bindir}/@grub_mklayout@"
|
||||
|
||||
ckbcomp_options=""
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 516be86..4263367 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -17,7 +17,6 @@ set -e
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -39,9 +38,9 @@ grub_mkconfig_dir="${sysconfdir}"/grub.d
|
||||
|
||||
self=`basename $0`
|
||||
|
||||
-grub_probe="${sbindir}/`echo grub-probe | sed "${transform}"`"
|
||||
-grub_editenv="${bindir}/`echo grub-editenv | sed "${transform}"`"
|
||||
-grub_script_check="${bindir}/`echo grub-script-check | sed "${transform}"`"
|
||||
+grub_probe="${sbindir}/@grub_probe@"
|
||||
+grub_editenv="${bindir}/@grub_editenv@"
|
||||
+grub_script_check="${bindir}/@grub_script_check@"
|
||||
|
||||
export TEXTDOMAIN=@PACKAGE@
|
||||
export TEXTDOMAINDIR="@localedir@"
|
||||
diff --git a/util/grub-mkconfig_lib.in b/util/grub-mkconfig_lib.in
|
||||
index 3574839..e560dd7 100644
|
||||
--- a/util/grub-mkconfig_lib.in
|
||||
+++ b/util/grub-mkconfig_lib.in
|
||||
@@ -14,8 +14,6 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -25,10 +23,10 @@ sbindir="@sbindir@"
|
||||
pkgdatadir="${datadir}/@PACKAGE@"
|
||||
|
||||
if test "x$grub_probe" = x; then
|
||||
- grub_probe="${sbindir}/`echo grub-probe | sed "${transform}"`"
|
||||
+ grub_probe="${sbindir}/@grub_probe@"
|
||||
fi
|
||||
if test "x$grub_mkrelpath" = x; then
|
||||
- grub_mkrelpath="${bindir}/`echo grub-mkrelpath | sed "${transform}"`"
|
||||
+ grub_mkrelpath="${bindir}/@grub_mkrelpath@"
|
||||
fi
|
||||
|
||||
if which gettext >/dev/null 2>/dev/null; then
|
||||
diff --git a/util/grub-mknetdir.in b/util/grub-mknetdir.in
|
||||
index d1ad763..e235af3 100644
|
||||
--- a/util/grub-mknetdir.in
|
||||
+++ b/util/grub-mknetdir.in
|
||||
@@ -17,8 +17,6 @@
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -36,7 +34,7 @@ fi
|
||||
|
||||
self=`basename $0`
|
||||
|
||||
-grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`"
|
||||
+grub_mkimage="${bindir}/@grub_mkimage@"
|
||||
rootdir=/srv/tftp
|
||||
modules=
|
||||
|
||||
diff --git a/util/grub-mkrescue.in b/util/grub-mkrescue.in
|
||||
index f71099e..d279a9d 100644
|
||||
--- a/util/grub-mkrescue.in
|
||||
+++ b/util/grub-mkrescue.in
|
||||
@@ -19,8 +19,6 @@ set -e
|
||||
|
||||
# Initialize some variables.
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -49,7 +47,7 @@ efi64_dir="${libdir}/@PACKAGE@/x86_64-efi"
|
||||
ia64_dir="${libdir}/@PACKAGE@/ia64-efi"
|
||||
rom_directory=
|
||||
override_dir=
|
||||
-grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`"
|
||||
+grub_mkimage="${bindir}/@grub_mkimage@"
|
||||
|
||||
xorriso=xorriso
|
||||
|
||||
diff --git a/util/grub-mkstandalone.in b/util/grub-mkstandalone.in
|
||||
index 87a3b42..78b83e0 100644
|
||||
--- a/util/grub-mkstandalone.in
|
||||
+++ b/util/grub-mkstandalone.in
|
||||
@@ -19,8 +19,6 @@ set -e
|
||||
|
||||
# Initialize some variables.
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
@@ -40,7 +38,7 @@ self=`basename $0`
|
||||
source_directory=
|
||||
compression=auto
|
||||
format=
|
||||
-grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`"
|
||||
+grub_mkimage="${bindir}/@grub_mkimage@"
|
||||
source=
|
||||
|
||||
export TEXTDOMAIN=@PACKAGE@
|
||||
diff --git a/util/grub-reboot.in b/util/grub-reboot.in
|
||||
index 93dbe6c..7516a03 100644
|
||||
--- a/util/grub-reboot.in
|
||||
+++ b/util/grub-reboot.in
|
||||
@@ -17,8 +17,6 @@
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
bindir=@bindir@
|
||||
@@ -32,7 +30,7 @@ fi
|
||||
|
||||
self=`basename $0`
|
||||
|
||||
-grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}`
|
||||
+grub_editenv=${bindir}/@grub_editenv@
|
||||
rootdir=
|
||||
bootdir=
|
||||
grubdir=`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`
|
||||
diff --git a/util/grub-set-default.in b/util/grub-set-default.in
|
||||
index 3d890be..443e56f 100644
|
||||
--- a/util/grub-set-default.in
|
||||
+++ b/util/grub-set-default.in
|
||||
@@ -17,8 +17,6 @@
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
bindir=@bindir@
|
||||
@@ -32,7 +30,7 @@ fi
|
||||
|
||||
self=`basename $0`
|
||||
|
||||
-grub_editenv=${bindir}/`echo grub-editenv | sed ${transform}`
|
||||
+grub_editenv=${bindir}/@grub_editenv@
|
||||
rootdir=
|
||||
bootdir=
|
||||
grubdir=`echo "/@bootdirname@/@grubdirname@" | sed 's,//*,/,g'`
|
||||
diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
|
||||
index 765bfdc..3da5d12 100644
|
||||
--- a/util/grub.d/00_header.in
|
||||
+++ b/util/grub.d/00_header.in
|
||||
@@ -17,8 +17,6 @@ set -e
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
datarootdir="@datarootdir@"
|
||||
diff --git a/util/powerpc/ieee1275/grub-mkrescue.in b/util/powerpc/ieee1275/grub-mkrescue.in
|
||||
index b3b88f0..2615cab 100644
|
||||
--- a/util/powerpc/ieee1275/grub-mkrescue.in
|
||||
+++ b/util/powerpc/ieee1275/grub-mkrescue.in
|
||||
@@ -18,8 +18,6 @@ set -e
|
||||
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Initialize some variables.
|
||||
-transform="@program_transform_name@"
|
||||
-
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
bindir="@bindir@"
|
||||
@@ -36,7 +34,7 @@ fi
|
||||
|
||||
self=`basename $0`
|
||||
|
||||
-grub_mkimage="${bindir}/`echo grub-mkimage | sed ${transform}`"
|
||||
+grub_mkimage="${bindir}/@grub_mkimage@"
|
||||
|
||||
export TEXTDOMAIN=@PACKAGE@
|
||||
export TEXTDOMAINDIR="@localedir@"
|
||||
--
|
||||
1.8.1.4
|
||||
|
25
0071-neater-gnulib-backport.patch
Normal file
25
0071-neater-gnulib-backport.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 25b73b33cdaafb3f21c5014b090a71f8449653c5 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 28 Dec 2012 07:13:34 +0000
|
||||
Subject: [PATCH 071/364] neater gnulib backport
|
||||
|
||||
---
|
||||
m4/stdio_h.m4 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
|
||||
index 8458bec..d3edb42 100644
|
||||
--- a/m4/stdio_h.m4
|
||||
+++ b/m4/stdio_h.m4
|
||||
@@ -35,7 +35,7 @@ AC_DEFUN([gl_STDIO_H],
|
||||
|
||||
dnl Check for declarations of anything we want to poison if the
|
||||
dnl corresponding gnulib module is not in use, and which is not
|
||||
- dnl guaranteed by C89.
|
||||
+ dnl guaranteed by both C89 and C11.
|
||||
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
|
||||
]], [dprintf fpurge fseeko ftello getdelim getline gets popen renameat
|
||||
snprintf tmpfile vdprintf vsnprintf])
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,42 @@
|
||||
From 2572b7c6ff8be58b10b3b9d13e35b50a535ee2ac Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Fri, 28 Dec 2012 07:21:17 +0000
|
||||
Subject: [PATCH 072/364] * util/grub-mkconfig.in: Accept
|
||||
GRUB_TERMINAL_OUTPUT=vga_text. Fixes Savannah bug #37821.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub-mkconfig.in | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index b8bd215..3bca6fd 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * util/grub-mkconfig.in: Accept GRUB_TERMINAL_OUTPUT=vga_text.
|
||||
+ Fixes Savannah bug #37821.
|
||||
+
|
||||
+2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
Apply program name transformations at build-time rather than at
|
||||
run-time. Fixes Debian bug #696465.
|
||||
|
||||
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
|
||||
index 4263367..8decc1d 100644
|
||||
--- a/util/grub-mkconfig.in
|
||||
+++ b/util/grub-mkconfig.in
|
||||
@@ -158,7 +158,7 @@ fi
|
||||
for x in ${GRUB_TERMINAL_OUTPUT}; do
|
||||
case "x${x}" in
|
||||
xgfxterm) ;;
|
||||
- xconsole | xserial | xofconsole)
|
||||
+ xconsole | xserial | xofconsole | xvga_text)
|
||||
# make sure all our children behave in conformance with ascii..
|
||||
export LANG=C;;
|
||||
*) echo "Invalid output terminal \"${GRUB_TERMINAL_OUTPUT}\"" >&2 ; exit 1 ;;
|
||||
--
|
||||
1.8.1.4
|
||||
|
126
0073-grub-core-bus-usb-ehci.c-grub_ehci_pci_iter-Remove-i.patch
Normal file
126
0073-grub-core-bus-usb-ehci.c-grub_ehci_pci_iter-Remove-i.patch
Normal file
@ -0,0 +1,126 @@
|
||||
From a0e1ddf87544a8371fff110c451576016ca81fb3 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Sun, 30 Dec 2012 09:57:58 +0000
|
||||
Subject: [PATCH 073/364] * grub-core/bus/usb/ehci.c (grub_ehci_pci_iter):
|
||||
Remove incorrect __attribute__ ((unused)). * grub-core/video/bochs.c
|
||||
(find_card): Likewise. * grub-core/video/cirrus.c (find_card): Likewise. *
|
||||
grub-core/video/radeon_fuloong2e.c (find_card): Likewise. *
|
||||
grub-core/video/sis315pro.c (find_card): Likewise. * grub-core/video/sm712.c
|
||||
(find_card): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 10 ++++++++++
|
||||
grub-core/bus/usb/ehci.c | 3 +--
|
||||
grub-core/video/bochs.c | 2 +-
|
||||
grub-core/video/cirrus.c | 2 +-
|
||||
grub-core/video/radeon_fuloong2e.c | 4 ++--
|
||||
grub-core/video/sis315pro.c | 4 ++--
|
||||
grub-core/video/sm712.c | 4 ++--
|
||||
7 files changed, 19 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 3bca6fd..36f1bff 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,13 @@
|
||||
+2012-12-30 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * grub-core/bus/usb/ehci.c (grub_ehci_pci_iter): Remove incorrect
|
||||
+ __attribute__ ((unused)).
|
||||
+ * grub-core/video/bochs.c (find_card): Likewise.
|
||||
+ * grub-core/video/cirrus.c (find_card): Likewise.
|
||||
+ * grub-core/video/radeon_fuloong2e.c (find_card): Likewise.
|
||||
+ * grub-core/video/sis315pro.c (find_card): Likewise.
|
||||
+ * grub-core/video/sm712.c (find_card): Likewise.
|
||||
+
|
||||
2012-12-28 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* util/grub-mkconfig.in: Accept GRUB_TERMINAL_OUTPUT=vga_text.
|
||||
diff --git a/grub-core/bus/usb/ehci.c b/grub-core/bus/usb/ehci.c
|
||||
index d99a4be..dc5bf71 100644
|
||||
--- a/grub-core/bus/usb/ehci.c
|
||||
+++ b/grub-core/bus/usb/ehci.c
|
||||
@@ -455,8 +455,7 @@ grub_ehci_reset (struct grub_ehci *e)
|
||||
|
||||
/* PCI iteration function... */
|
||||
static int NESTED_FUNC_ATTR
|
||||
-grub_ehci_pci_iter (grub_pci_device_t dev,
|
||||
- grub_pci_id_t pciid __attribute__ ((unused)))
|
||||
+grub_ehci_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_uint8_t release;
|
||||
grub_uint32_t class_code;
|
||||
diff --git a/grub-core/video/bochs.c b/grub-core/video/bochs.c
|
||||
index 79cae65..f6db137 100644
|
||||
--- a/grub-core/video/bochs.c
|
||||
+++ b/grub-core/video/bochs.c
|
||||
@@ -210,7 +210,7 @@ grub_video_bochs_setup (unsigned int width, unsigned int height,
|
||||
int pitch, bytes_per_pixel;
|
||||
grub_size_t page_size; /* The size of a page in bytes. */
|
||||
|
||||
- auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
|
||||
+ auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_pci_address_t addr;
|
||||
diff --git a/grub-core/video/cirrus.c b/grub-core/video/cirrus.c
|
||||
index 7fad50e..e711119 100644
|
||||
--- a/grub-core/video/cirrus.c
|
||||
+++ b/grub-core/video/cirrus.c
|
||||
@@ -245,7 +245,7 @@ grub_video_cirrus_setup (unsigned int width, unsigned int height,
|
||||
int found = 0;
|
||||
int pitch, bytes_per_pixel;
|
||||
|
||||
- auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
|
||||
+ auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_pci_address_t addr;
|
||||
diff --git a/grub-core/video/radeon_fuloong2e.c b/grub-core/video/radeon_fuloong2e.c
|
||||
index 32f66c7..45a68ed 100644
|
||||
--- a/grub-core/video/radeon_fuloong2e.c
|
||||
+++ b/grub-core/video/radeon_fuloong2e.c
|
||||
@@ -69,8 +69,8 @@ grub_video_radeon_fuloong2e_setup (unsigned int width, unsigned int height,
|
||||
int found = 0;
|
||||
|
||||
#ifndef TEST
|
||||
- auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
|
||||
- int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)))
|
||||
+ auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
+ int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_pci_address_t addr;
|
||||
grub_uint32_t class;
|
||||
diff --git a/grub-core/video/sis315pro.c b/grub-core/video/sis315pro.c
|
||||
index 5d06daa..d213877 100644
|
||||
--- a/grub-core/video/sis315pro.c
|
||||
+++ b/grub-core/video/sis315pro.c
|
||||
@@ -99,8 +99,8 @@ grub_video_sis315pro_setup (unsigned int width, unsigned int height,
|
||||
unsigned i;
|
||||
|
||||
#ifndef TEST
|
||||
- auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
|
||||
- int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)))
|
||||
+ auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
+ int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_pci_address_t addr;
|
||||
grub_uint32_t class;
|
||||
diff --git a/grub-core/video/sm712.c b/grub-core/video/sm712.c
|
||||
index 5f22c40..d780983 100644
|
||||
--- a/grub-core/video/sm712.c
|
||||
+++ b/grub-core/video/sm712.c
|
||||
@@ -370,8 +370,8 @@ grub_video_sm712_setup (unsigned int width, unsigned int height,
|
||||
grub_err_t err;
|
||||
int found = 0;
|
||||
|
||||
- auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)));
|
||||
- int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid __attribute__ ((unused)))
|
||||
+ auto int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid);
|
||||
+ int NESTED_FUNC_ATTR find_card (grub_pci_device_t dev, grub_pci_id_t pciid)
|
||||
{
|
||||
grub_pci_address_t addr;
|
||||
grub_uint32_t class;
|
||||
--
|
||||
1.8.1.4
|
||||
|
817
0074-Remove-several-trivially-unnecessary-uses-of-nested-.patch
Normal file
817
0074-Remove-several-trivially-unnecessary-uses-of-nested-.patch
Normal file
@ -0,0 +1,817 @@
|
||||
From a3564dd3f793d2677584a93284966b6b9f14ebdb Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Mon, 31 Dec 2012 17:31:38 +0000
|
||||
Subject: [PATCH 074/364] Remove several trivially-unnecessary uses of nested
|
||||
functions.
|
||||
|
||||
* grub-core/commands/i386/pc/sendkey.c
|
||||
(grub_cmd_sendkey: find_key_code, find_ascii_code): Make static
|
||||
instead of nested.
|
||||
* grub-core/commands/legacycfg.c (legacy_file: getline): Likewise.
|
||||
Rename to ...
|
||||
(legacy_file_getline): ... this.
|
||||
* grub-core/commands/loadenv.c (grub_cmd_load_env: set_var):
|
||||
Likewise.
|
||||
* grub-core/kern/corecmd.c (grub_core_cmd_set: print_env): Likewise.
|
||||
* grub-core/kern/fs.c (grub_fs_probe: dummy_func): Likewise. Rename
|
||||
to ...
|
||||
(probe_dummy_iter): ... this.
|
||||
* grub-core/kern/i386/coreboot/mmap.c
|
||||
(grub_linuxbios_table_iterate: check_signature): Likewise.
|
||||
* grub-core/kern/parser.c (grub_parser_split_cmdline:
|
||||
check_varstate): Likewise. Mark inline.
|
||||
* grub-core/lib/arg.c (find_short: fnd_short): Likewise. Pass
|
||||
an additional parameter.
|
||||
(find_long: fnd_long): Likewise. Pass two additional parameters.
|
||||
* grub-core/lib/crc.c (init_crc32c_table: reflect): Likewise.
|
||||
* grub-core/lib/crc64.c (init_crc64_table: reflect): Likewise.
|
||||
* grub-core/lib/ieee1275/cmos.c (grub_cmos_find_port: hook):
|
||||
Likewise. Rename to ...
|
||||
(grub_cmos_find_port_iter): ... this.
|
||||
* grub-core/lib/ieee1275/datetime.c (find_rtc: hook): Likewise.
|
||||
Rename to ...
|
||||
(find_rtc_iter): ... this.
|
||||
|
||||
* grub-core/normal/menu_entry.c (run): Fold nested editor_getsource
|
||||
function directly into the function body, since it is only called
|
||||
once.
|
||||
---
|
||||
ChangeLog | 36 ++++++++++++++++
|
||||
grub-core/commands/i386/pc/sendkey.c | 65 ++++++++++++++--------------
|
||||
grub-core/commands/legacycfg.c | 20 ++++-----
|
||||
grub-core/commands/loadenv.c | 15 ++++---
|
||||
grub-core/kern/corecmd.c | 16 +++----
|
||||
grub-core/kern/fs.c | 20 ++++-----
|
||||
grub-core/kern/i386/coreboot/mmap.c | 19 +++++----
|
||||
grub-core/kern/parser.c | 20 ++++-----
|
||||
grub-core/lib/arg.c | 58 +++++++++++++------------
|
||||
grub-core/lib/crc.c | 31 +++++++-------
|
||||
grub-core/lib/crc64.c | 31 +++++++-------
|
||||
grub-core/lib/ieee1275/cmos.c | 82 ++++++++++++++++++------------------
|
||||
grub-core/lib/ieee1275/datetime.c | 27 ++++++------
|
||||
grub-core/normal/menu_entry.c | 50 +++++++++-------------
|
||||
14 files changed, 264 insertions(+), 226 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 36f1bff..8723bfa 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,39 @@
|
||||
+2012-12-31 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ Remove several trivially-unnecessary uses of nested functions.
|
||||
+
|
||||
+ * grub-core/commands/i386/pc/sendkey.c
|
||||
+ (grub_cmd_sendkey: find_key_code, find_ascii_code): Make static
|
||||
+ instead of nested.
|
||||
+ * grub-core/commands/legacycfg.c (legacy_file: getline): Likewise.
|
||||
+ Rename to ...
|
||||
+ (legacy_file_getline): ... this.
|
||||
+ * grub-core/commands/loadenv.c (grub_cmd_load_env: set_var):
|
||||
+ Likewise.
|
||||
+ * grub-core/kern/corecmd.c (grub_core_cmd_set: print_env): Likewise.
|
||||
+ * grub-core/kern/fs.c (grub_fs_probe: dummy_func): Likewise. Rename
|
||||
+ to ...
|
||||
+ (probe_dummy_iter): ... this.
|
||||
+ * grub-core/kern/i386/coreboot/mmap.c
|
||||
+ (grub_linuxbios_table_iterate: check_signature): Likewise.
|
||||
+ * grub-core/kern/parser.c (grub_parser_split_cmdline:
|
||||
+ check_varstate): Likewise. Mark inline.
|
||||
+ * grub-core/lib/arg.c (find_short: fnd_short): Likewise. Pass
|
||||
+ an additional parameter.
|
||||
+ (find_long: fnd_long): Likewise. Pass two additional parameters.
|
||||
+ * grub-core/lib/crc.c (init_crc32c_table: reflect): Likewise.
|
||||
+ * grub-core/lib/crc64.c (init_crc64_table: reflect): Likewise.
|
||||
+ * grub-core/lib/ieee1275/cmos.c (grub_cmos_find_port: hook):
|
||||
+ Likewise. Rename to ...
|
||||
+ (grub_cmos_find_port_iter): ... this.
|
||||
+ * grub-core/lib/ieee1275/datetime.c (find_rtc: hook): Likewise.
|
||||
+ Rename to ...
|
||||
+ (find_rtc_iter): ... this.
|
||||
+
|
||||
+ * grub-core/normal/menu_entry.c (run): Fold nested editor_getsource
|
||||
+ function directly into the function body, since it is only called
|
||||
+ once.
|
||||
+
|
||||
2012-12-30 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/bus/usb/ehci.c (grub_ehci_pci_iter): Remove incorrect
|
||||
diff --git a/grub-core/commands/i386/pc/sendkey.c b/grub-core/commands/i386/pc/sendkey.c
|
||||
index 17f648d..d985cb3 100644
|
||||
--- a/grub-core/commands/i386/pc/sendkey.c
|
||||
+++ b/grub-core/commands/i386/pc/sendkey.c
|
||||
@@ -286,47 +286,48 @@ grub_sendkey_preboot (int noret __attribute__ ((unused)))
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
-static grub_err_t
|
||||
-grub_cmd_sendkey (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
+/* Helper for grub_cmd_sendkey. */
|
||||
+static int
|
||||
+find_key_code (char *key)
|
||||
{
|
||||
- struct grub_arg_list *state = ctxt->state;
|
||||
-
|
||||
- auto int find_key_code (char *key);
|
||||
- auto int find_ascii_code (char *key);
|
||||
+ unsigned i;
|
||||
|
||||
- int find_key_code (char *key)
|
||||
+ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||
{
|
||||
- unsigned i;
|
||||
+ if (keysym_table[i].unshifted_name
|
||||
+ && grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||
+ return keysym_table[i].keycode;
|
||||
+ else if (keysym_table[i].shifted_name
|
||||
+ && grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||
+ return keysym_table[i].keycode;
|
||||
+ }
|
||||
|
||||
- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||
- {
|
||||
- if (keysym_table[i].unshifted_name
|
||||
- && grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||
- return keysym_table[i].keycode;
|
||||
- else if (keysym_table[i].shifted_name
|
||||
- && grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||
- return keysym_table[i].keycode;
|
||||
- }
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
- return 0;
|
||||
- }
|
||||
+/* Helper for grub_cmd_sendkey. */
|
||||
+static int
|
||||
+find_ascii_code (char *key)
|
||||
+{
|
||||
+ unsigned i;
|
||||
|
||||
- int find_ascii_code (char *key)
|
||||
+ for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||
{
|
||||
- unsigned i;
|
||||
+ if (keysym_table[i].unshifted_name
|
||||
+ && grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||
+ return keysym_table[i].unshifted_ascii;
|
||||
+ else if (keysym_table[i].shifted_name
|
||||
+ && grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||
+ return keysym_table[i].shifted_ascii;
|
||||
+ }
|
||||
|
||||
- for (i = 0; i < sizeof (keysym_table) / sizeof (keysym_table[0]); i++)
|
||||
- {
|
||||
- if (keysym_table[i].unshifted_name
|
||||
- && grub_strcmp (key, keysym_table[i].unshifted_name) == 0)
|
||||
- return keysym_table[i].unshifted_ascii;
|
||||
- else if (keysym_table[i].shifted_name
|
||||
- && grub_strcmp (key, keysym_table[i].shifted_name) == 0)
|
||||
- return keysym_table[i].shifted_ascii;
|
||||
- }
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
- return 0;
|
||||
- }
|
||||
+static grub_err_t
|
||||
+grub_cmd_sendkey (grub_extcmd_context_t ctxt, int argc, char **args)
|
||||
+{
|
||||
+ struct grub_arg_list *state = ctxt->state;
|
||||
|
||||
andmask = 0xffffffff;
|
||||
ormask = 0;
|
||||
diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
|
||||
index 5293acc..e34eed4 100644
|
||||
--- a/grub-core/commands/legacycfg.c
|
||||
+++ b/grub-core/commands/legacycfg.c
|
||||
@@ -35,6 +35,14 @@
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
+/* Helper for legacy_file. */
|
||||
+static grub_err_t
|
||||
+legacy_file_getline (char **line, int cont __attribute__ ((unused)))
|
||||
+{
|
||||
+ *line = 0;
|
||||
+ return GRUB_ERR_NONE;
|
||||
+}
|
||||
+
|
||||
static grub_err_t
|
||||
legacy_file (const char *filename)
|
||||
{
|
||||
@@ -43,14 +51,6 @@ legacy_file (const char *filename)
|
||||
grub_menu_t menu;
|
||||
char *suffix = grub_strdup ("");
|
||||
|
||||
- auto grub_err_t getline (char **line, int cont);
|
||||
- grub_err_t getline (char **line,
|
||||
- int cont __attribute__ ((unused)))
|
||||
- {
|
||||
- *line = 0;
|
||||
- return GRUB_ERR_NONE;
|
||||
- }
|
||||
-
|
||||
if (!suffix)
|
||||
return grub_errno;
|
||||
|
||||
@@ -134,7 +134,7 @@ legacy_file (const char *filename)
|
||||
|
||||
if (parsed && !entryname)
|
||||
{
|
||||
- grub_normal_parse_line (parsed, getline);
|
||||
+ grub_normal_parse_line (parsed, legacy_file_getline);
|
||||
grub_print_error ();
|
||||
grub_free (parsed);
|
||||
parsed = NULL;
|
||||
@@ -180,7 +180,7 @@ legacy_file (const char *filename)
|
||||
grub_free (args);
|
||||
}
|
||||
|
||||
- grub_normal_parse_line (suffix, getline);
|
||||
+ grub_normal_parse_line (suffix, legacy_file_getline);
|
||||
grub_print_error ();
|
||||
grub_free (suffix);
|
||||
grub_free (entrysrc);
|
||||
diff --git a/grub-core/commands/loadenv.c b/grub-core/commands/loadenv.c
|
||||
index 18ebb7e..9a35550 100644
|
||||
--- a/grub-core/commands/loadenv.c
|
||||
+++ b/grub-core/commands/loadenv.c
|
||||
@@ -114,6 +114,14 @@ read_envblk_file (grub_file_t file)
|
||||
return envblk;
|
||||
}
|
||||
|
||||
+/* Helper for grub_cmd_load_env. */
|
||||
+static int
|
||||
+set_var (const char *name, const char *value)
|
||||
+{
|
||||
+ grub_env_set (name, value);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static grub_err_t
|
||||
grub_cmd_load_env (grub_extcmd_context_t ctxt,
|
||||
int argc __attribute__ ((unused)),
|
||||
@@ -123,13 +131,6 @@ grub_cmd_load_env (grub_extcmd_context_t ctxt,
|
||||
grub_file_t file;
|
||||
grub_envblk_t envblk;
|
||||
|
||||
- auto int set_var (const char *name, const char *value);
|
||||
- int set_var (const char *name, const char *value)
|
||||
- {
|
||||
- grub_env_set (name, value);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
file = open_envblk_file ((state[0].set) ? state[0].arg : 0);
|
||||
if (! file)
|
||||
return grub_errno;
|
||||
diff --git a/grub-core/kern/corecmd.c b/grub-core/kern/corecmd.c
|
||||
index eec575c..43240e9 100644
|
||||
--- a/grub-core/kern/corecmd.c
|
||||
+++ b/grub-core/kern/corecmd.c
|
||||
@@ -28,6 +28,14 @@
|
||||
#include <grub/command.h>
|
||||
#include <grub/i18n.h>
|
||||
|
||||
+/* Helper for grub_core_cmd_set. */
|
||||
+static int
|
||||
+print_env (struct grub_env_var *env)
|
||||
+{
|
||||
+ grub_printf ("%s=%s\n", env->name, env->value);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* set ENVVAR=VALUE */
|
||||
static grub_err_t
|
||||
grub_core_cmd_set (struct grub_command *cmd __attribute__ ((unused)),
|
||||
@@ -36,14 +44,6 @@ grub_core_cmd_set (struct grub_command *cmd __attribute__ ((unused)),
|
||||
char *var;
|
||||
char *val;
|
||||
|
||||
- auto int print_env (struct grub_env_var *env);
|
||||
-
|
||||
- int print_env (struct grub_env_var *env)
|
||||
- {
|
||||
- grub_printf ("%s=%s\n", env->name, env->value);
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
if (argc < 1)
|
||||
{
|
||||
grub_env_iterate (print_env);
|
||||
diff --git a/grub-core/kern/fs.c b/grub-core/kern/fs.c
|
||||
index 51d89d1..7e150f2 100644
|
||||
--- a/grub-core/kern/fs.c
|
||||
+++ b/grub-core/kern/fs.c
|
||||
@@ -32,18 +32,18 @@ grub_fs_t grub_fs_list = 0;
|
||||
|
||||
grub_fs_autoload_hook_t grub_fs_autoload_hook = 0;
|
||||
|
||||
+/* Helper for grub_fs_probe. */
|
||||
+static int
|
||||
+probe_dummy_iter (const char *filename __attribute__ ((unused)),
|
||||
+ const struct grub_dirhook_info *info __attribute__ ((unused)))
|
||||
+ {
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
grub_fs_t
|
||||
grub_fs_probe (grub_device_t device)
|
||||
{
|
||||
grub_fs_t p;
|
||||
- auto int dummy_func (const char *filename,
|
||||
- const struct grub_dirhook_info *info);
|
||||
-
|
||||
- int dummy_func (const char *filename __attribute__ ((unused)),
|
||||
- const struct grub_dirhook_info *info __attribute__ ((unused)))
|
||||
- {
|
||||
- return 1;
|
||||
- }
|
||||
|
||||
if (device->disk)
|
||||
{
|
||||
@@ -69,7 +69,7 @@ grub_fs_probe (grub_device_t device)
|
||||
}
|
||||
else
|
||||
#endif
|
||||
- (p->dir) (device, "/", dummy_func);
|
||||
+ (p->dir) (device, "/", probe_dummy_iter);
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
return p;
|
||||
|
||||
@@ -93,7 +93,7 @@ grub_fs_probe (grub_device_t device)
|
||||
{
|
||||
p = grub_fs_list;
|
||||
|
||||
- (p->dir) (device, "/", dummy_func);
|
||||
+ (p->dir) (device, "/", probe_dummy_iter);
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
{
|
||||
count--;
|
||||
diff --git a/grub-core/kern/i386/coreboot/mmap.c b/grub-core/kern/i386/coreboot/mmap.c
|
||||
index 8b0b202..8e15683 100644
|
||||
--- a/grub-core/kern/i386/coreboot/mmap.c
|
||||
+++ b/grub-core/kern/i386/coreboot/mmap.c
|
||||
@@ -22,21 +22,22 @@
|
||||
#include <grub/err.h>
|
||||
#include <grub/misc.h>
|
||||
|
||||
+/* Helper for grub_linuxbios_table_iterate. */
|
||||
+static int
|
||||
+check_signature (grub_linuxbios_table_header_t tbl_header)
|
||||
+{
|
||||
+ if (! grub_memcmp (tbl_header->signature, "LBIO", 4))
|
||||
+ return 1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static grub_err_t
|
||||
grub_linuxbios_table_iterate (int (*hook) (grub_linuxbios_table_item_t))
|
||||
{
|
||||
grub_linuxbios_table_header_t table_header;
|
||||
grub_linuxbios_table_item_t table_item;
|
||||
|
||||
- auto int check_signature (grub_linuxbios_table_header_t);
|
||||
- int check_signature (grub_linuxbios_table_header_t tbl_header)
|
||||
- {
|
||||
- if (! grub_memcmp (tbl_header->signature, "LBIO", 4))
|
||||
- return 1;
|
||||
-
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
/* Assuming table_header is aligned to its size (8 bytes). */
|
||||
|
||||
for (table_header = (grub_linuxbios_table_header_t) 0x500;
|
||||
diff --git a/grub-core/kern/parser.c b/grub-core/kern/parser.c
|
||||
index 9213caa..d1be53e 100644
|
||||
--- a/grub-core/kern/parser.c
|
||||
+++ b/grub-core/kern/parser.c
|
||||
@@ -96,6 +96,16 @@ grub_parser_cmdline_state (grub_parser_state_t state, char c, char *result)
|
||||
}
|
||||
|
||||
|
||||
+/* Helper for grub_parser_split_cmdline. */
|
||||
+static inline int
|
||||
+check_varstate (grub_parser_state_t s)
|
||||
+{
|
||||
+ return (s == GRUB_PARSER_STATE_VARNAME
|
||||
+ || s == GRUB_PARSER_STATE_VARNAME2
|
||||
+ || s == GRUB_PARSER_STATE_QVARNAME
|
||||
+ || s == GRUB_PARSER_STATE_QVARNAME2);
|
||||
+}
|
||||
+
|
||||
grub_err_t
|
||||
grub_parser_split_cmdline (const char *cmdline, grub_reader_getline_t getline,
|
||||
int *argc, char ***argv)
|
||||
@@ -111,16 +121,6 @@ grub_parser_split_cmdline (const char *cmdline, grub_reader_getline_t getline,
|
||||
char *args;
|
||||
int i;
|
||||
|
||||
- auto int check_varstate (grub_parser_state_t s);
|
||||
-
|
||||
- int check_varstate (grub_parser_state_t s)
|
||||
- {
|
||||
- return (s == GRUB_PARSER_STATE_VARNAME
|
||||
- || s == GRUB_PARSER_STATE_VARNAME2
|
||||
- || s == GRUB_PARSER_STATE_QVARNAME
|
||||
- || s == GRUB_PARSER_STATE_QVARNAME2);
|
||||
- }
|
||||
-
|
||||
auto void add_var (grub_parser_state_t newstate);
|
||||
|
||||
void add_var (grub_parser_state_t newstate)
|
||||
diff --git a/grub-core/lib/arg.c b/grub-core/lib/arg.c
|
||||
index b341885..a2d9416 100644
|
||||
--- a/grub-core/lib/arg.c
|
||||
+++ b/grub-core/lib/arg.c
|
||||
@@ -34,25 +34,26 @@ static const struct grub_arg_option help_options[] =
|
||||
{0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
+/* Helper for find_short. */
|
||||
static struct grub_arg_option *
|
||||
-find_short (const struct grub_arg_option *options, char c)
|
||||
+fnd_short (const struct grub_arg_option *opt, char c)
|
||||
{
|
||||
- struct grub_arg_option *found = 0;
|
||||
- auto struct grub_arg_option *fnd_short (const struct grub_arg_option *opt);
|
||||
-
|
||||
- struct grub_arg_option *fnd_short (const struct grub_arg_option *opt)
|
||||
+ while (opt->doc)
|
||||
{
|
||||
- while (opt->doc)
|
||||
- {
|
||||
- if (opt->shortarg == c)
|
||||
- return (struct grub_arg_option *) opt;
|
||||
- opt++;
|
||||
- }
|
||||
- return 0;
|
||||
+ if (opt->shortarg == c)
|
||||
+ return (struct grub_arg_option *) opt;
|
||||
+ opt++;
|
||||
}
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct grub_arg_option *
|
||||
+find_short (const struct grub_arg_option *options, char c)
|
||||
+{
|
||||
+ struct grub_arg_option *found = 0;
|
||||
|
||||
if (options)
|
||||
- found = fnd_short (options);
|
||||
+ found = fnd_short (options, c);
|
||||
|
||||
if (! found)
|
||||
{
|
||||
@@ -74,29 +75,30 @@ find_short (const struct grub_arg_option *options, char c)
|
||||
return found;
|
||||
}
|
||||
|
||||
+/* Helper for find_long. */
|
||||
static struct grub_arg_option *
|
||||
-find_long (const struct grub_arg_option *options, const char *s, int len)
|
||||
+fnd_long (const struct grub_arg_option *opt, const char *s, int len)
|
||||
{
|
||||
- struct grub_arg_option *found = 0;
|
||||
- auto struct grub_arg_option *fnd_long (const struct grub_arg_option *opt);
|
||||
-
|
||||
- struct grub_arg_option *fnd_long (const struct grub_arg_option *opt)
|
||||
+ while (opt->doc)
|
||||
{
|
||||
- while (opt->doc)
|
||||
- {
|
||||
- if (opt->longarg && ! grub_strncmp (opt->longarg, s, len) &&
|
||||
- opt->longarg[len] == '\0')
|
||||
- return (struct grub_arg_option *) opt;
|
||||
- opt++;
|
||||
- }
|
||||
- return 0;
|
||||
+ if (opt->longarg && ! grub_strncmp (opt->longarg, s, len) &&
|
||||
+ opt->longarg[len] == '\0')
|
||||
+ return (struct grub_arg_option *) opt;
|
||||
+ opt++;
|
||||
}
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct grub_arg_option *
|
||||
+find_long (const struct grub_arg_option *options, const char *s, int len)
|
||||
+{
|
||||
+ struct grub_arg_option *found = 0;
|
||||
|
||||
if (options)
|
||||
- found = fnd_long (options);
|
||||
+ found = fnd_long (options, s, len);
|
||||
|
||||
if (! found)
|
||||
- found = fnd_long (help_options);
|
||||
+ found = fnd_long (help_options, s, len);
|
||||
|
||||
return found;
|
||||
}
|
||||
diff --git a/grub-core/lib/crc.c b/grub-core/lib/crc.c
|
||||
index ffc3ef3..bf97cc6 100644
|
||||
--- a/grub-core/lib/crc.c
|
||||
+++ b/grub-core/lib/crc.c
|
||||
@@ -22,25 +22,26 @@
|
||||
|
||||
static grub_uint32_t crc32c_table [256];
|
||||
|
||||
-static void
|
||||
-init_crc32c_table (void)
|
||||
+/* Helper for init_crc32c_table. */
|
||||
+static grub_uint32_t
|
||||
+reflect (grub_uint32_t ref, int len)
|
||||
{
|
||||
- auto grub_uint32_t reflect (grub_uint32_t ref, int len);
|
||||
- grub_uint32_t reflect (grub_uint32_t ref, int len)
|
||||
- {
|
||||
- grub_uint32_t result = 0;
|
||||
- int i;
|
||||
-
|
||||
- for (i = 1; i <= len; i++)
|
||||
- {
|
||||
- if (ref & 1)
|
||||
- result |= 1 << (len - i);
|
||||
- ref >>= 1;
|
||||
- }
|
||||
+ grub_uint32_t result = 0;
|
||||
+ int i;
|
||||
|
||||
- return result;
|
||||
+ for (i = 1; i <= len; i++)
|
||||
+ {
|
||||
+ if (ref & 1)
|
||||
+ result |= 1 << (len - i);
|
||||
+ ref >>= 1;
|
||||
}
|
||||
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+init_crc32c_table (void)
|
||||
+{
|
||||
grub_uint32_t polynomial = 0x1edc6f41;
|
||||
int i, j;
|
||||
|
||||
diff --git a/grub-core/lib/crc64.c b/grub-core/lib/crc64.c
|
||||
index 4b1c92c..4960f3f 100644
|
||||
--- a/grub-core/lib/crc64.c
|
||||
+++ b/grub-core/lib/crc64.c
|
||||
@@ -25,25 +25,26 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
static grub_uint64_t crc64_table [256];
|
||||
|
||||
-static void
|
||||
-init_crc64_table (void)
|
||||
+/* Helper for init_crc64_table. */
|
||||
+static grub_uint64_t
|
||||
+reflect (grub_uint64_t ref, int len)
|
||||
{
|
||||
- auto grub_uint64_t reflect (grub_uint64_t ref, int len);
|
||||
- grub_uint64_t reflect (grub_uint64_t ref, int len)
|
||||
- {
|
||||
- grub_uint64_t result = 0;
|
||||
- int i;
|
||||
+ grub_uint64_t result = 0;
|
||||
+ int i;
|
||||
|
||||
- for (i = 1; i <= len; i++)
|
||||
- {
|
||||
- if (ref & 1)
|
||||
- result |= 1ULL << (len - i);
|
||||
- ref >>= 1;
|
||||
- }
|
||||
-
|
||||
- return result;
|
||||
+ for (i = 1; i <= len; i++)
|
||||
+ {
|
||||
+ if (ref & 1)
|
||||
+ result |= 1ULL << (len - i);
|
||||
+ ref >>= 1;
|
||||
}
|
||||
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+init_crc64_table (void)
|
||||
+{
|
||||
grub_uint64_t polynomial = 0x42f0e1eba9ea3693ULL;
|
||||
int i, j;
|
||||
|
||||
diff --git a/grub-core/lib/ieee1275/cmos.c b/grub-core/lib/ieee1275/cmos.c
|
||||
index fa57db9..328d70a 100644
|
||||
--- a/grub-core/lib/ieee1275/cmos.c
|
||||
+++ b/grub-core/lib/ieee1275/cmos.c
|
||||
@@ -23,51 +23,53 @@
|
||||
#include <grub/misc.h>
|
||||
|
||||
volatile grub_uint8_t *grub_cmos_port = 0;
|
||||
-grub_err_t
|
||||
-grub_cmos_find_port (void)
|
||||
+
|
||||
+/* Helper for grub_cmos_find_port. */
|
||||
+static int
|
||||
+grub_cmos_find_port_iter (struct grub_ieee1275_devalias *alias)
|
||||
{
|
||||
- auto int hook (struct grub_ieee1275_devalias *alias);
|
||||
- int hook (struct grub_ieee1275_devalias *alias)
|
||||
- {
|
||||
- grub_ieee1275_phandle_t dev;
|
||||
- grub_uint32_t addr[2];
|
||||
- grub_ssize_t actual;
|
||||
- /* Enough to check if it's "m5819" */
|
||||
- char compat[100];
|
||||
- if (grub_ieee1275_finddevice (alias->path, &dev))
|
||||
- return 0;
|
||||
- if (grub_ieee1275_get_property (dev, "compatible", compat, sizeof (compat),
|
||||
- 0))
|
||||
- return 0;
|
||||
- if (grub_strcmp (compat, "m5819") != 0)
|
||||
- return 0;
|
||||
- if (grub_ieee1275_get_integer_property (dev, "address",
|
||||
- addr, sizeof (addr), &actual))
|
||||
- return 0;
|
||||
- if (actual == 4)
|
||||
- {
|
||||
- grub_cmos_port = (volatile grub_uint8_t *) (grub_addr_t) addr[0];
|
||||
- return 1;
|
||||
- }
|
||||
+ grub_ieee1275_phandle_t dev;
|
||||
+ grub_uint32_t addr[2];
|
||||
+ grub_ssize_t actual;
|
||||
+ /* Enough to check if it's "m5819" */
|
||||
+ char compat[100];
|
||||
+ if (grub_ieee1275_finddevice (alias->path, &dev))
|
||||
+ return 0;
|
||||
+ if (grub_ieee1275_get_property (dev, "compatible", compat, sizeof (compat),
|
||||
+ 0))
|
||||
+ return 0;
|
||||
+ if (grub_strcmp (compat, "m5819") != 0)
|
||||
+ return 0;
|
||||
+ if (grub_ieee1275_get_integer_property (dev, "address",
|
||||
+ addr, sizeof (addr), &actual))
|
||||
+ return 0;
|
||||
+ if (actual == 4)
|
||||
+ {
|
||||
+ grub_cmos_port = (volatile grub_uint8_t *) (grub_addr_t) addr[0];
|
||||
+ return 1;
|
||||
+ }
|
||||
|
||||
#if GRUB_CPU_SIZEOF_VOID_P == 8
|
||||
- if (actual == 8)
|
||||
- {
|
||||
- grub_cmos_port = (volatile grub_uint8_t *)
|
||||
- ((((grub_addr_t) addr[0]) << 32) | addr[1]);
|
||||
- return 1;
|
||||
- }
|
||||
+ if (actual == 8)
|
||||
+ {
|
||||
+ grub_cmos_port = (volatile grub_uint8_t *)
|
||||
+ ((((grub_addr_t) addr[0]) << 32) | addr[1]);
|
||||
+ return 1;
|
||||
+ }
|
||||
#else
|
||||
- if (actual == 8 && addr[0] == 0)
|
||||
- {
|
||||
- grub_cmos_port = (volatile grub_uint8_t *) addr[1];
|
||||
- return 1;
|
||||
- }
|
||||
+ if (actual == 8 && addr[0] == 0)
|
||||
+ {
|
||||
+ grub_cmos_port = (volatile grub_uint8_t *) addr[1];
|
||||
+ return 1;
|
||||
+ }
|
||||
#endif
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- grub_ieee1275_devices_iterate (hook);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+grub_err_t
|
||||
+grub_cmos_find_port (void)
|
||||
+{
|
||||
+ grub_ieee1275_devices_iterate (grub_cmos_find_port_iter);
|
||||
if (!grub_cmos_port)
|
||||
return grub_error (GRUB_ERR_IO, "no cmos found");
|
||||
|
||||
diff --git a/grub-core/lib/ieee1275/datetime.c b/grub-core/lib/ieee1275/datetime.c
|
||||
index 8792429..74578f1 100644
|
||||
--- a/grub-core/lib/ieee1275/datetime.c
|
||||
+++ b/grub-core/lib/ieee1275/datetime.c
|
||||
@@ -30,22 +30,23 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
static char *rtc = 0;
|
||||
static int no_ieee1275_rtc = 0;
|
||||
|
||||
+/* Helper for find_rtc. */
|
||||
+static int
|
||||
+find_rtc_iter (struct grub_ieee1275_devalias *alias)
|
||||
+{
|
||||
+ if (grub_strcmp (alias->type, "rtc") == 0)
|
||||
+ {
|
||||
+ grub_dprintf ("datetime", "Found RTC %s\n", alias->path);
|
||||
+ rtc = grub_strdup (alias->path);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
find_rtc (void)
|
||||
{
|
||||
- auto int hook (struct grub_ieee1275_devalias *alias);
|
||||
- int hook (struct grub_ieee1275_devalias *alias)
|
||||
- {
|
||||
- if (grub_strcmp (alias->type, "rtc") == 0)
|
||||
- {
|
||||
- grub_dprintf ("datetime", "Found RTC %s\n", alias->path);
|
||||
- rtc = grub_strdup (alias->path);
|
||||
- return 1;
|
||||
- }
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
- grub_ieee1275_devices_iterate (hook);
|
||||
+ grub_ieee1275_devices_iterate (find_rtc_iter);
|
||||
if (!rtc)
|
||||
no_ieee1275_rtc = 1;
|
||||
}
|
||||
diff --git a/grub-core/normal/menu_entry.c b/grub-core/normal/menu_entry.c
|
||||
index 8e2b4da..33b644b 100644
|
||||
--- a/grub-core/normal/menu_entry.c
|
||||
+++ b/grub-core/normal/menu_entry.c
|
||||
@@ -1205,32 +1205,6 @@ run (struct screen *screen)
|
||||
grub_menu_t menu = NULL;
|
||||
char *dummy[1] = { NULL };
|
||||
|
||||
- auto char * editor_getsource (void);
|
||||
- char * editor_getsource (void)
|
||||
- {
|
||||
- int i;
|
||||
- grub_size_t size = 0, tot_size = 0;
|
||||
- char *source;
|
||||
-
|
||||
- for (i = 0; i < screen->num_lines; i++)
|
||||
- tot_size += grub_get_num_of_utf8_bytes (screen->lines[i].buf,
|
||||
- screen->lines[i].len) + 1;
|
||||
-
|
||||
- source = grub_malloc (tot_size + 1);
|
||||
- if (! source)
|
||||
- return NULL;
|
||||
-
|
||||
- for (i = 0; i < screen->num_lines; i++)
|
||||
- {
|
||||
- size += grub_ucs4_to_utf8 (screen->lines[i].buf, screen->lines[i].len,
|
||||
- (grub_uint8_t *) source + size,
|
||||
- tot_size - size);
|
||||
- source[size++] = '\n';
|
||||
- }
|
||||
- source[size] = '\0';
|
||||
- return source;
|
||||
- }
|
||||
-
|
||||
grub_cls ();
|
||||
grub_printf (" ");
|
||||
grub_printf_ (N_("Booting a command list"));
|
||||
@@ -1248,9 +1222,27 @@ run (struct screen *screen)
|
||||
}
|
||||
|
||||
/* Execute the script, line for line. */
|
||||
- script = editor_getsource ();
|
||||
- if (! script)
|
||||
- return 0;
|
||||
+ {
|
||||
+ int i;
|
||||
+ grub_size_t size = 0, tot_size = 0;
|
||||
+
|
||||
+ for (i = 0; i < screen->num_lines; i++)
|
||||
+ tot_size += grub_get_num_of_utf8_bytes (screen->lines[i].buf,
|
||||
+ screen->lines[i].len) + 1;
|
||||
+
|
||||
+ script = grub_malloc (tot_size + 1);
|
||||
+ if (! script)
|
||||
+ return 0;
|
||||
+
|
||||
+ for (i = 0; i < screen->num_lines; i++)
|
||||
+ {
|
||||
+ size += grub_ucs4_to_utf8 (screen->lines[i].buf, screen->lines[i].len,
|
||||
+ (grub_uint8_t *) script + size,
|
||||
+ tot_size - size);
|
||||
+ script[size++] = '\n';
|
||||
+ }
|
||||
+ script[size] = '\0';
|
||||
+ }
|
||||
grub_script_execute_sourcecode (script, 0, dummy);
|
||||
grub_free (script);
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,73 @@
|
||||
From bf9d0c7cfcc093b873d6d4c594cd407dc6bca69c Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 2 Jan 2013 09:29:48 +0000
|
||||
Subject: [PATCH 075/364] * docs/grub.texi (configfile): Explain environment
|
||||
variable handling. (source): New section. Reported by: Arbiel Perlacremaz.
|
||||
Fixes Savannah bug #35564.
|
||||
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
docs/grub.texi | 18 +++++++++++++++++-
|
||||
2 files changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 8723bfa..68920bf 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,10 @@
|
||||
+2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * docs/grub.texi (configfile): Explain environment variable
|
||||
+ handling.
|
||||
+ (source): New section.
|
||||
+ Reported by: Arbiel Perlacremaz. Fixes Savannah bug #35564.
|
||||
+
|
||||
2012-12-31 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
Remove several trivially-unnecessary uses of nested functions.
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 39d9614..e9af377 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -3303,6 +3303,7 @@ you forget a command, you can run the command @command{help}
|
||||
* search:: Search devices by file, label, or UUID
|
||||
* sendkey:: Emulate keystrokes
|
||||
* set:: Set an environment variable
|
||||
+* source:: Read a configuration file in same context
|
||||
* true:: Do nothing, successfully
|
||||
* unset:: Unset an environment variable
|
||||
* uppermem:: Set the upper memory size
|
||||
@@ -3429,7 +3430,9 @@ If they are completely identical, nothing will be printed.
|
||||
|
||||
@deffn Command configfile file
|
||||
Load @var{file} as a configuration file. If @var{file} defines any menu
|
||||
-entries, then show a menu containing them immediately.
|
||||
+entries, then show a menu containing them immediately. Any environment
|
||||
+variable changes made by the commands in @var{file} will not be preserved
|
||||
+after @command{configfile} returns.
|
||||
@end deffn
|
||||
|
||||
|
||||
@@ -4069,6 +4072,19 @@ arguments, print all environment variables with their values.
|
||||
@end deffn
|
||||
|
||||
|
||||
+@node source
|
||||
+@subsection source
|
||||
+
|
||||
+@deffn Command source file
|
||||
+Read @var{file} as a configuration file, as if its contents had been
|
||||
+incorporated directly into the sourcing file. Unlike @command{configfile}
|
||||
+(@pxref{configfile}), this executes the contents of @var{file} without
|
||||
+changing context: any environment variable changes made by the commands in
|
||||
+@var{file} will be preserved after @command{source} returns, and the menu
|
||||
+will not be shown immediately.
|
||||
+@end deffn
|
||||
+
|
||||
+
|
||||
@node true
|
||||
@subsection true
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
70
0076-Fix-failing-printf-test.patch
Normal file
70
0076-Fix-failing-printf-test.patch
Normal file
@ -0,0 +1,70 @@
|
||||
From bd0f06eea6be3f3e2efb07069f853741867a320f Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 2 Jan 2013 12:48:31 +0000
|
||||
Subject: [PATCH 076/364] Fix failing printf test.
|
||||
|
||||
* grub-core/kern/misc.c (grub_vsnprintf_real): Parse '-', '.', and
|
||||
'$' in the correct order when collecting type information.
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
grub-core/kern/misc.c | 17 ++++++++++-------
|
||||
2 files changed, 17 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 68920bf..bb263f2 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,12 @@
|
||||
2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ Fix failing printf test.
|
||||
+
|
||||
+ * grub-core/kern/misc.c (grub_vsnprintf_real): Parse '-', '.', and
|
||||
+ '$' in the correct order when collecting type information.
|
||||
+
|
||||
+2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* docs/grub.texi (configfile): Explain environment variable
|
||||
handling.
|
||||
(source): New section.
|
||||
diff --git a/grub-core/kern/misc.c b/grub-core/kern/misc.c
|
||||
index 95d4624..c3203a0 100644
|
||||
--- a/grub-core/kern/misc.c
|
||||
+++ b/grub-core/kern/misc.c
|
||||
@@ -741,23 +741,26 @@ grub_vsnprintf_real (char *str, grub_size_t max_len, const char *fmt0, va_list a
|
||||
if (*fmt && *fmt =='-')
|
||||
fmt++;
|
||||
|
||||
- while (*fmt && grub_isdigit (*fmt))
|
||||
- fmt++;
|
||||
-
|
||||
- if (*fmt && *fmt =='.')
|
||||
- fmt++;
|
||||
+ p = fmt;
|
||||
|
||||
while (*fmt && grub_isdigit (*fmt))
|
||||
fmt++;
|
||||
|
||||
- p = fmt;
|
||||
-
|
||||
if (*fmt && *fmt == '$')
|
||||
{
|
||||
curn = grub_strtoull (p, 0, 10) - 1;
|
||||
fmt++;
|
||||
}
|
||||
|
||||
+ if (*fmt && *fmt =='-')
|
||||
+ fmt++;
|
||||
+
|
||||
+ while (*fmt && grub_isdigit (*fmt))
|
||||
+ fmt++;
|
||||
+
|
||||
+ if (*fmt && *fmt =='.')
|
||||
+ fmt++;
|
||||
+
|
||||
while (*fmt && grub_isdigit (*fmt))
|
||||
fmt++;
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,55 @@
|
||||
From 1fb2a38cdc4278a0c65e9b0cbca6fdaae3343564 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Wed, 2 Jan 2013 16:42:48 +0000
|
||||
Subject: [PATCH 077/364] * grub-core/tests/lib/test.c (grub_test_run): Return
|
||||
non-zero on test failures, so that a failing unit test correctly causes 'make
|
||||
check' to fail.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
grub-core/tests/lib/test.c | 14 +++++++++-----
|
||||
2 files changed, 15 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index bb263f2..0585437 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * grub-core/tests/lib/test.c (grub_test_run): Return non-zero on
|
||||
+ test failures, so that a failing unit test correctly causes 'make
|
||||
+ check' to fail.
|
||||
+
|
||||
+2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
Fix failing printf test.
|
||||
|
||||
* grub-core/kern/misc.c (grub_vsnprintf_real): Parse '-', '.', and
|
||||
diff --git a/grub-core/tests/lib/test.c b/grub-core/tests/lib/test.c
|
||||
index aac77e9..1d2cb8c 100644
|
||||
--- a/grub-core/tests/lib/test.c
|
||||
+++ b/grub-core/tests/lib/test.c
|
||||
@@ -225,10 +225,14 @@ grub_test_run (grub_test_t test)
|
||||
failure->line, (failure->message ? : "<no message>"));
|
||||
|
||||
if (!failure_list)
|
||||
- grub_printf ("%s: PASS\n", test->name);
|
||||
+ {
|
||||
+ grub_printf ("%s: PASS\n", test->name);
|
||||
+ return GRUB_ERR_NONE;
|
||||
+ }
|
||||
else
|
||||
- grub_printf ("%s: FAIL\n", test->name);
|
||||
-
|
||||
- free_failures ();
|
||||
- return GRUB_ERR_NONE;
|
||||
+ {
|
||||
+ grub_printf ("%s: FAIL\n", test->name);
|
||||
+ free_failures ();
|
||||
+ return GRUB_ERR_TEST_FAILURE;
|
||||
+ }
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
150
0078-docs-grub.texi-Invoking-grub-mount-New-section.patch
Normal file
150
0078-docs-grub.texi-Invoking-grub-mount-New-section.patch
Normal file
@ -0,0 +1,150 @@
|
||||
From 9a3cdbccd18ddda45d3e69de75d6c4865da72aae Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Thu, 3 Jan 2013 10:32:57 +0000
|
||||
Subject: [PATCH 078/364] * docs/grub.texi (Invoking grub-mount): New section.
|
||||
Reported by: Filipus Klutiero. Fixes Debian bug #666427.
|
||||
|
||||
---
|
||||
ChangeLog | 5 ++++
|
||||
docs/grub.texi | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 95 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 0585437..c91fe35 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-03 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * docs/grub.texi (Invoking grub-mount): New section.
|
||||
+ Reported by: Filipus Klutiero. Fixes Debian bug #666427.
|
||||
+
|
||||
2013-01-02 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/tests/lib/test.c (grub_test_run): Return non-zero on
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index e9af377..60b18b5 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -20,7 +20,7 @@
|
||||
This manual is for GNU GRUB (version @value{VERSION},
|
||||
@value{UPDATED}).
|
||||
|
||||
-Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012 Free Software Foundation, Inc.
|
||||
+Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012,2013 Free Software Foundation, Inc.
|
||||
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
@@ -37,6 +37,7 @@ Invariant Sections.
|
||||
* grub-mkconfig: (grub)Invoking grub-mkconfig. Generate GRUB configuration
|
||||
* grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2.
|
||||
* grub-mkrescue: (grub)Invoking grub-mkrescue. Make a GRUB rescue image
|
||||
+* grub-mount: (grub)Invoking grub-mount. Mount a file system using GRUB
|
||||
* grub-probe: (grub)Invoking grub-probe. Probe device information
|
||||
@end direntry
|
||||
|
||||
@@ -101,6 +102,7 @@ This edition documents version @value{VERSION}.
|
||||
* Invoking grub-mkpasswd-pbkdf2::
|
||||
Generate GRUB password hashes
|
||||
* Invoking grub-mkrescue:: Make a GRUB rescue image
|
||||
+* Invoking grub-mount:: Mount a file system using GRUB
|
||||
* Invoking grub-probe:: Probe device information for GRUB
|
||||
* Obtaining and Building GRUB:: How to obtain and build GRUB
|
||||
* Reporting bugs:: Where you should send a bug report
|
||||
@@ -4830,6 +4832,93 @@ built-in default.
|
||||
@end table
|
||||
|
||||
|
||||
+@node Invoking grub-mount
|
||||
+@chapter Invoking grub-mount
|
||||
+
|
||||
+The program @command{grub-mount} performs a read-only mount of any file
|
||||
+system or file system image that GRUB understands, using GRUB's file system
|
||||
+drivers via FUSE. (It is only available if FUSE development files were
|
||||
+present when GRUB was built.) This has a number of uses:
|
||||
+
|
||||
+@itemize @bullet
|
||||
+@item
|
||||
+It provides a convenient way to check how GRUB will view a file system at
|
||||
+boot time. You can use normal command-line tools to compare that view with
|
||||
+that of your operating system, making it easy to find bugs.
|
||||
+
|
||||
+@item
|
||||
+It offers true read-only mounts. Linux does not have these for journalling
|
||||
+file systems, because it will always attempt to replay the journal at mount
|
||||
+time; while you can temporarily mark the block device read-only to avoid
|
||||
+this, that causes the mount to fail. Since GRUB intentionally contains no
|
||||
+code for writing to file systems, it can easily provide a guaranteed
|
||||
+read-only mount mechanism.
|
||||
+
|
||||
+@item
|
||||
+It allows you to examine any file system that GRUB understands without
|
||||
+needing to load additional modules into your running kernel, which may be
|
||||
+useful in constrained environments such as installers.
|
||||
+
|
||||
+@item
|
||||
+Since it can examine file system images (contained in regular files) just as
|
||||
+easily as file systems on block devices, you can use it to inspect any file
|
||||
+system image that GRUB understands with only enough privileges to use FUSE,
|
||||
+even if nobody has yet written a FUSE module specifically for that file
|
||||
+system type.
|
||||
+@end itemize
|
||||
+
|
||||
+Using @command{grub-mount} is normally as simple as:
|
||||
+
|
||||
+@example
|
||||
+grub-mount /dev/sda1 /mnt
|
||||
+@end example
|
||||
+
|
||||
+@command{grub-mount} must be given one or more images and a mount point as
|
||||
+non-option arguments (if it is given more than one image, it will treat them
|
||||
+as a RAID set), and also accepts the following options:
|
||||
+
|
||||
+@table @option
|
||||
+@item --help
|
||||
+Print a summary of the command-line options and exit.
|
||||
+
|
||||
+@item --version
|
||||
+Print the version number of GRUB and exit.
|
||||
+
|
||||
+@item -C
|
||||
+@itemx --crypto
|
||||
+Mount encrypted devices, prompting for a passphrase if necessary.
|
||||
+
|
||||
+@item -d @var{string}
|
||||
+@itemx --debug=@var{string}
|
||||
+Show debugging output for conditions matching @var{string}.
|
||||
+
|
||||
+@item -K prompt|@var{file}
|
||||
+@itemx --zfs-key=prompt|@var{file}
|
||||
+Load a ZFS encryption key. If you use @samp{prompt} as the argument,
|
||||
+@command{grub-mount} will read a passphrase from the terminal; otherwise, it
|
||||
+will read key material from the specified file.
|
||||
+
|
||||
+@item -r @var{device}
|
||||
+@itemx --root=@var{device}
|
||||
+Set the GRUB root device to @var{device}. You do not normally need to set
|
||||
+this; @command{grub-mount} will automatically set the root device to the
|
||||
+root of the supplied file system.
|
||||
+
|
||||
+If @var{device} is just a number, then it will be treated as a partition
|
||||
+number within the supplied image. This means that, if you have an image of
|
||||
+an entire disk in @file{disk.img}, then you can use this command to mount
|
||||
+its second partition:
|
||||
+
|
||||
+@example
|
||||
+grub-mount -r 2 disk.img mount-point
|
||||
+@end example
|
||||
+
|
||||
+@item -v
|
||||
+@itemx --verbose
|
||||
+Print verbose messages.
|
||||
+@end table
|
||||
+
|
||||
+
|
||||
@node Invoking grub-probe
|
||||
@chapter Invoking grub-probe
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
125
0079-docs-grub.texi-Invoking-grub-mkrelpath-New-section.patch
Normal file
125
0079-docs-grub.texi-Invoking-grub-mkrelpath-New-section.patch
Normal file
@ -0,0 +1,125 @@
|
||||
From 3d109c87aec982045fd78e0937589af98eb0ad38 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Thu, 3 Jan 2013 10:53:53 +0000
|
||||
Subject: [PATCH 079/364] * docs/grub.texi (Invoking grub-mkrelpath): New
|
||||
section. (Invoking grub-script-check): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
docs/grub.texi | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 63 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index c91fe35..e530ac3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2013-01-03 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * docs/grub.texi (Invoking grub-mkrelpath): New section.
|
||||
+ (Invoking grub-script-check): Likewise.
|
||||
+
|
||||
+2013-01-03 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* docs/grub.texi (Invoking grub-mount): New section.
|
||||
Reported by: Filipus Klutiero. Fixes Debian bug #666427.
|
||||
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index 60b18b5..e23cecc 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -36,9 +36,11 @@ Invariant Sections.
|
||||
* grub-install: (grub)Invoking grub-install. Install GRUB on your drive
|
||||
* grub-mkconfig: (grub)Invoking grub-mkconfig. Generate GRUB configuration
|
||||
* grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2.
|
||||
+* grub-mkrelpath: (grub)Invoking grub-mkrelpath.
|
||||
* grub-mkrescue: (grub)Invoking grub-mkrescue. Make a GRUB rescue image
|
||||
* grub-mount: (grub)Invoking grub-mount. Mount a file system using GRUB
|
||||
* grub-probe: (grub)Invoking grub-probe. Probe device information
|
||||
+* grub-script-check: (grub)Invoking grub-script-check.
|
||||
@end direntry
|
||||
|
||||
@setchapternewpage odd
|
||||
@@ -101,9 +103,11 @@ This edition documents version @value{VERSION}.
|
||||
* Invoking grub-mkconfig:: Generate a GRUB configuration file
|
||||
* Invoking grub-mkpasswd-pbkdf2::
|
||||
Generate GRUB password hashes
|
||||
+* Invoking grub-mkrelpath:: Make system path relative to its root
|
||||
* Invoking grub-mkrescue:: Make a GRUB rescue image
|
||||
* Invoking grub-mount:: Mount a file system using GRUB
|
||||
* Invoking grub-probe:: Probe device information for GRUB
|
||||
+* Invoking grub-script-check:: Check GRUB script file for syntax errors
|
||||
* Obtaining and Building GRUB:: How to obtain and build GRUB
|
||||
* Reporting bugs:: Where you should send a bug report
|
||||
* Future:: Some future plans on GRUB
|
||||
@@ -4774,6 +4778,33 @@ Length of the salt. Defaults to 64.
|
||||
@end table
|
||||
|
||||
|
||||
+@node Invoking grub-mkrelpath
|
||||
+@chapter Invoking grub-mkrelpath
|
||||
+
|
||||
+The program @command{grub-mkrelpath} makes a file system path relative to
|
||||
+the root of its containing file system. For instance, if @file{/usr} is a
|
||||
+mount point, then:
|
||||
+
|
||||
+@example
|
||||
+$ @kbd{grub-mkrelpath /usr/share/grub/unicode.pf2}
|
||||
+@samp{/share/grub/unicode.pf2}
|
||||
+@end example
|
||||
+
|
||||
+This is mainly used internally by other GRUB utilities such as
|
||||
+@command{grub-mkconfig} (@pxref{Invoking grub-mkconfig}), but may
|
||||
+occasionally also be useful for debugging.
|
||||
+
|
||||
+@command{grub-mkrelpath} accepts the following options:
|
||||
+
|
||||
+@table @option
|
||||
+@item --help
|
||||
+Print a summary of the command-line options and exit.
|
||||
+
|
||||
+@item --version
|
||||
+Print the version number of GRUB and exit.
|
||||
+@end table
|
||||
+
|
||||
+
|
||||
@node Invoking grub-mkrescue
|
||||
@chapter Invoking grub-mkrescue
|
||||
|
||||
@@ -5005,6 +5036,33 @@ Print verbose messages.
|
||||
@end table
|
||||
|
||||
|
||||
+@node Invoking grub-script-check
|
||||
+@chapter Invoking grub-script-check
|
||||
+
|
||||
+The program @command{grub-script-check} takes a GRUB script file
|
||||
+(@pxref{Shell-like scripting}) and checks it for syntax errors, similar to
|
||||
+commands such as @command{sh -n}. It may take a @var{path} as a non-option
|
||||
+argument; if none is supplied, it will read from standard input.
|
||||
+
|
||||
+@example
|
||||
+grub-script-check /boot/grub/grub.cfg
|
||||
+@end example
|
||||
+
|
||||
+@command{grub-script-check} accepts the following options:
|
||||
+
|
||||
+@table @option
|
||||
+@item --help
|
||||
+Print a summary of the command-line options and exit.
|
||||
+
|
||||
+@item --version
|
||||
+Print the version number of GRUB and exit.
|
||||
+
|
||||
+@item -v
|
||||
+@itemx --verbose
|
||||
+Print each line of input after reading it.
|
||||
+@end table
|
||||
+
|
||||
+
|
||||
@node Obtaining and Building GRUB
|
||||
@appendix How to obtain and build GRUB
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,40 @@
|
||||
From 7adc96e903f5581b38ba397a6d4d93f923b2fc5e Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 3 Jan 2013 21:27:00 +0100
|
||||
Subject: [PATCH 080/364] * grub-core/fs/iso9660.c
|
||||
(grub_iso9660_susp_iterate): Avoid hang if entry->len = 0.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/fs/iso9660.c | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index e530ac3..2717f8a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/fs/iso9660.c (grub_iso9660_susp_iterate): Avoid hang if
|
||||
+ entry->len = 0.
|
||||
+
|
||||
2013-01-03 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* docs/grub.texi (Invoking grub-mkrelpath): New section.
|
||||
diff --git a/grub-core/fs/iso9660.c b/grub-core/fs/iso9660.c
|
||||
index cd4acc8..547e156 100644
|
||||
--- a/grub-core/fs/iso9660.c
|
||||
+++ b/grub-core/fs/iso9660.c
|
||||
@@ -295,7 +295,7 @@ grub_iso9660_susp_iterate (grub_fshelp_node_t node, grub_off_t off,
|
||||
if (load_sua ())
|
||||
return grub_errno;
|
||||
|
||||
- for (; (char *) entry < (char *) sua + sua_size - 1;
|
||||
+ for (; (char *) entry < (char *) sua + sua_size - 1 && entry->len > 0;
|
||||
entry = (struct grub_iso9660_susp_entry *)
|
||||
((char *) entry + entry->len))
|
||||
{
|
||||
--
|
||||
1.8.1.4
|
||||
|
56
0081-configure.ac-Extend-Wno-trampolines-to-host.patch
Normal file
56
0081-configure.ac-Extend-Wno-trampolines-to-host.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 242ce139276b9de1e5f960070e433111a3ab5194 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 3 Jan 2013 21:34:34 +0100
|
||||
Subject: [PATCH 081/364] * configure.ac: Extend -Wno-trampolines to
|
||||
host.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
configure.ac | 17 +++++++++++++++++
|
||||
2 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 2717f8a..087b5c3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * configure.ac: Extend -Wno-trampolines to host.
|
||||
+
|
||||
+2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/iso9660.c (grub_iso9660_susp_iterate): Avoid hang if
|
||||
entry->len = 0.
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a41f117..dde954e 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -358,6 +358,23 @@ AC_CHECK_HEADER([util.h], [
|
||||
])
|
||||
AC_SUBST([LIBUTIL])
|
||||
|
||||
+AC_CACHE_CHECK([whether -Wno-trampolines work], [grub_cv_host_cc_wnotrampolines], [
|
||||
+ SAVED_CFLAGS="$CFLAGS"
|
||||
+ # Test for -Wtrampolines rather than -Wno-trampolines to reduce confusion
|
||||
+ # in the event of later failures (since -Wno-* is always accepted, but
|
||||
+ # produces a diagnostic if something else is wrong).
|
||||
+ CFLAGS="$HOST_CFLAGS -Wtrampolines"
|
||||
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
||||
+int va_arg_func (int fixed, va_list args);]], [[]])],
|
||||
+ [grub_cv_host_cc_wnotrampolines=yes],
|
||||
+ [grub_cv_host_cc_wnotrampolines=no])
|
||||
+ CFLAGS="$SAVED_CFLAGS"
|
||||
+])
|
||||
+
|
||||
+if test x"$grub_host_cv_cc_wnotrampolines" = xyes ; then
|
||||
+ HOST_CFLAGS="$HOST_CFLAGS -Wno-trampolines"
|
||||
+fi
|
||||
+
|
||||
#
|
||||
# Check for host and build compilers.
|
||||
#
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,58 @@
|
||||
From 98701532f45165422f45b8cdf405a7f0abf03fba Mon Sep 17 00:00:00 2001
|
||||
From: Yuta Satoh <nigoro>
|
||||
Date: Thu, 3 Jan 2013 23:06:07 +0100
|
||||
Subject: [PATCH 082/364] * util/grub.d/10_kfreebsd.in: Fix improper
|
||||
references to grub-probe by ${grub_probe}
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
util/grub.d/10_kfreebsd.in | 6 +++---
|
||||
2 files changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 087b5c3..936af2f 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-03 Yuta Satoh <nigoro>
|
||||
+
|
||||
+ * util/grub.d/10_kfreebsd.in: Fix improper references to grub-probe by
|
||||
+ ${grub_probe}
|
||||
+
|
||||
2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* configure.ac: Extend -Wno-trampolines to host.
|
||||
diff --git a/util/grub.d/10_kfreebsd.in b/util/grub.d/10_kfreebsd.in
|
||||
index 260dda8..2a48b52 100644
|
||||
--- a/util/grub.d/10_kfreebsd.in
|
||||
+++ b/util/grub.d/10_kfreebsd.in
|
||||
@@ -54,7 +54,7 @@ load_kfreebsd_module ()
|
||||
fi
|
||||
|
||||
if [ -z "${prepare_module_dir_cache}" ]; then
|
||||
- prepare_module_dir_cache="$(prepare_grub_to_access_device $(grub-probe -t device "${module_dir}") | grub_add_tab)"
|
||||
+ prepare_module_dir_cache="$(prepare_grub_to_access_device $(${grub_probe} -t device "${module_dir}") | grub_add_tab)"
|
||||
fi
|
||||
|
||||
printf '%s\n' "${prepare_module_dir_cache}"
|
||||
@@ -112,7 +112,7 @@ EOF
|
||||
|
||||
load_kfreebsd_module acpi true
|
||||
|
||||
- for abstraction in dummy $(grub-probe -t abstraction --device ${GRUB_DEVICE}) ; do
|
||||
+ for abstraction in dummy $(${grub_probe} -t abstraction --device ${GRUB_DEVICE}) ; do
|
||||
case $abstraction in
|
||||
lvm) load_kfreebsd_module geom_linux_lvm false ;;
|
||||
esac
|
||||
@@ -179,7 +179,7 @@ while [ "x$list" != "x" ] ; do
|
||||
case ${GRUB_FS} in
|
||||
zfs)
|
||||
# zpool name
|
||||
- kfreebsd_device=$(grub-probe -t fs_label --device ${GRUB_DEVICE})
|
||||
+ kfreebsd_device=$(${grub_probe} -t fs_label --device ${GRUB_DEVICE})
|
||||
# filesystem name (empty string for the main filesystem)
|
||||
kfreebsd_device="${kfreebsd_device}$(${grub_mkrelpath} / | sed -e "s,/*@$,,")"
|
||||
;;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,46 @@
|
||||
From 40951063e5fd8c4ae34b942039d38bfe69ffecb3 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 3 Jan 2013 23:19:19 +0100
|
||||
Subject: [PATCH 083/364] * util/grub.d/10_kfreebsd.in: Correct the
|
||||
patch to zpool.cache as it's always in /boot/zfs. Reported by: Yuta
|
||||
Satoh.
|
||||
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
util/grub.d/10_kfreebsd.in | 4 ++--
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 936af2f..a28a1f7 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,9 @@
|
||||
+2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * util/grub.d/10_kfreebsd.in: Correct the patch to zpool.cache as it's
|
||||
+ always in /boot/zfs.
|
||||
+ Reported by: Yuta Satoh.
|
||||
+
|
||||
2013-01-03 Yuta Satoh <nigoro>
|
||||
|
||||
* util/grub.d/10_kfreebsd.in: Fix improper references to grub-probe by
|
||||
diff --git a/util/grub.d/10_kfreebsd.in b/util/grub.d/10_kfreebsd.in
|
||||
index 2a48b52..c123ceb 100644
|
||||
--- a/util/grub.d/10_kfreebsd.in
|
||||
+++ b/util/grub.d/10_kfreebsd.in
|
||||
@@ -122,10 +122,10 @@ EOF
|
||||
zfs)
|
||||
load_kfreebsd_module opensolaris false
|
||||
|
||||
- ls "${dirname}/zfs/zpool.cache" > /dev/null
|
||||
+ ls "/boot/zfs/zpool.cache" > /dev/null
|
||||
printf '%s\n' "${prepare_boot_cache}"
|
||||
sed "s/^/$submenu_indentation/" << EOF
|
||||
- kfreebsd_module ${rel_dirname}/zfs/zpool.cache type=/boot/zfs/zpool.cache
|
||||
+ kfreebsd_module $(make_system_path_relative_to_its_root /boot)/zfs/zpool.cache type=/boot/zfs/zpool.cache
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,75 @@
|
||||
From d064a7c4f3cc8a5faba4d4bc4f4ba82677c7b1d7 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 5 Jan 2013 15:10:46 +0100
|
||||
Subject: [PATCH 084/364] * grub-core/disk/diskfilter.c
|
||||
(grub_diskfilter_write): Call grub_error properly. *
|
||||
grub-core/disk/ieee1275/nand.c (grub_nand_write): Likewise. *
|
||||
grub-core/disk/loopback.c (grub_loopback_write): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
grub-core/disk/diskfilter.c | 3 ++-
|
||||
grub-core/disk/ieee1275/nand.c | 3 ++-
|
||||
grub-core/disk/loopback.c | 3 ++-
|
||||
4 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index a28a1f7..f15e098 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,10 @@
|
||||
+2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/disk/diskfilter.c (grub_diskfilter_write): Call
|
||||
+ grub_error properly.
|
||||
+ * grub-core/disk/ieee1275/nand.c (grub_nand_write): Likewise.
|
||||
+ * grub-core/disk/loopback.c (grub_loopback_write): Likewise.
|
||||
+
|
||||
2013-01-03 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* util/grub.d/10_kfreebsd.in: Correct the patch to zpool.cache as it's
|
||||
diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
|
||||
index ce4c706..4117b20 100644
|
||||
--- a/grub-core/disk/diskfilter.c
|
||||
+++ b/grub-core/disk/diskfilter.c
|
||||
@@ -831,7 +831,8 @@ grub_diskfilter_write (grub_disk_t disk __attribute ((unused)),
|
||||
grub_size_t size __attribute ((unused)),
|
||||
const char *buf __attribute ((unused)))
|
||||
{
|
||||
- return GRUB_ERR_NOT_IMPLEMENTED_YET;
|
||||
+ return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
+ "diskfilter writes are not supported");
|
||||
}
|
||||
|
||||
struct grub_diskfilter_vg *
|
||||
diff --git a/grub-core/disk/ieee1275/nand.c b/grub-core/disk/ieee1275/nand.c
|
||||
index ad30852..3474b3e 100644
|
||||
--- a/grub-core/disk/ieee1275/nand.c
|
||||
+++ b/grub-core/disk/ieee1275/nand.c
|
||||
@@ -203,7 +203,8 @@ grub_nand_write (grub_disk_t disk __attribute ((unused)),
|
||||
grub_size_t size __attribute ((unused)),
|
||||
const char *buf __attribute ((unused)))
|
||||
{
|
||||
- return GRUB_ERR_NOT_IMPLEMENTED_YET;
|
||||
+ return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
+ "nand write is not supported");
|
||||
}
|
||||
|
||||
static struct grub_disk_dev grub_nand_dev =
|
||||
diff --git a/grub-core/disk/loopback.c b/grub-core/disk/loopback.c
|
||||
index f3b19ef..fffd1bb 100644
|
||||
--- a/grub-core/disk/loopback.c
|
||||
+++ b/grub-core/disk/loopback.c
|
||||
@@ -206,7 +206,8 @@ grub_loopback_write (grub_disk_t disk __attribute ((unused)),
|
||||
grub_size_t size __attribute ((unused)),
|
||||
const char *buf __attribute ((unused)))
|
||||
{
|
||||
- return GRUB_ERR_NOT_IMPLEMENTED_YET;
|
||||
+ return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
+ "loopback write is not supported");
|
||||
}
|
||||
|
||||
static struct grub_disk_dev grub_loopback_dev =
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,93 @@
|
||||
From 3ba196532002293027a6a3e96f8eb1960c70e00c Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 5 Jan 2013 16:53:04 +0100
|
||||
Subject: [PATCH 085/364] * grub-core/fs/nilfs2.c
|
||||
(-grub_nilfs2_palloc_groups_per_desc_block): Rename to ...
|
||||
(grub_nilfs2_palloc_log_groups_per_desc_block): ... this. Return log of
|
||||
groups_per_block. All users updated.
|
||||
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
grub-core/fs/nilfs2.c | 20 ++++++++++++--------
|
||||
2 files changed, 19 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index f15e098..ea191b3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,12 @@
|
||||
2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/fs/nilfs2.c (-grub_nilfs2_palloc_groups_per_desc_block):
|
||||
+ Rename to ...
|
||||
+ (grub_nilfs2_palloc_log_groups_per_desc_block): ... this. Return log
|
||||
+ of groups_per_block. All users updated.
|
||||
+
|
||||
+2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/disk/diskfilter.c (grub_diskfilter_write): Call
|
||||
grub_error properly.
|
||||
* grub-core/disk/ieee1275/nand.c (grub_nand_write): Likewise.
|
||||
diff --git a/grub-core/fs/nilfs2.c b/grub-core/fs/nilfs2.c
|
||||
index f36c513..5b34486 100644
|
||||
--- a/grub-core/fs/nilfs2.c
|
||||
+++ b/grub-core/fs/nilfs2.c
|
||||
@@ -214,6 +214,8 @@ struct grub_nilfs2_palloc_group_desc
|
||||
grub_uint32_t pg_nfrees;
|
||||
};
|
||||
|
||||
+#define LOG_SIZE_GROUP_DESC 2
|
||||
+
|
||||
#define LOG_NILFS_DAT_ENTRY_SIZE 5
|
||||
struct grub_nilfs2_dat_entry
|
||||
{
|
||||
@@ -311,10 +313,12 @@ grub_nilfs2_palloc_group (struct grub_nilfs2_data *data,
|
||||
}
|
||||
|
||||
static inline grub_uint32_t
|
||||
-grub_nilfs2_palloc_groups_per_desc_block (struct grub_nilfs2_data *data)
|
||||
+grub_nilfs2_palloc_log_groups_per_desc_block (struct grub_nilfs2_data *data)
|
||||
{
|
||||
- return NILFS2_BLOCK_SIZE (data) /
|
||||
- sizeof (struct grub_nilfs2_palloc_group_desc);
|
||||
+ return LOG2_BLOCK_SIZE (data) - LOG_SIZE_GROUP_DESC;
|
||||
+
|
||||
+ COMPILE_TIME_ASSERT (sizeof (struct grub_nilfs2_palloc_group_desc)
|
||||
+ == (1 << LOG_SIZE_GROUP_DESC));
|
||||
}
|
||||
|
||||
static inline grub_uint32_t
|
||||
@@ -338,8 +342,8 @@ static inline grub_uint32_t
|
||||
grub_nilfs2_blocks_per_desc_block_log (struct grub_nilfs2_data *data,
|
||||
unsigned long log_entry_size)
|
||||
{
|
||||
- return grub_nilfs2_palloc_groups_per_desc_block (data) *
|
||||
- grub_nilfs2_blocks_per_group_log (data, log_entry_size) + 1;
|
||||
+ return(grub_nilfs2_blocks_per_group_log (data, log_entry_size)
|
||||
+ << grub_nilfs2_palloc_log_groups_per_desc_block (data)) + 1;
|
||||
}
|
||||
|
||||
static inline grub_uint32_t
|
||||
@@ -348,7 +352,7 @@ grub_nilfs2_palloc_desc_block_offset_log (struct grub_nilfs2_data *data,
|
||||
unsigned long log_entry_size)
|
||||
{
|
||||
grub_uint32_t desc_block =
|
||||
- group / grub_nilfs2_palloc_groups_per_desc_block (data);
|
||||
+ group >> grub_nilfs2_palloc_log_groups_per_desc_block (data);
|
||||
return desc_block * grub_nilfs2_blocks_per_desc_block_log (data,
|
||||
log_entry_size);
|
||||
}
|
||||
@@ -358,8 +362,8 @@ grub_nilfs2_palloc_bitmap_block_offset (struct grub_nilfs2_data *data,
|
||||
unsigned long group,
|
||||
unsigned long log_entry_size)
|
||||
{
|
||||
- unsigned long desc_offset = group %
|
||||
- grub_nilfs2_palloc_groups_per_desc_block (data);
|
||||
+ unsigned long desc_offset = group
|
||||
+ & ((1 << grub_nilfs2_palloc_log_groups_per_desc_block (data)) - 1);
|
||||
|
||||
return grub_nilfs2_palloc_desc_block_offset_log (data, group, log_entry_size)
|
||||
+ 1
|
||||
--
|
||||
1.8.1.4
|
||||
|
330
0086-grub-core-fs-ntfs.c-Eliminate-useless-divisions-in-f.patch
Normal file
330
0086-grub-core-fs-ntfs.c-Eliminate-useless-divisions-in-f.patch
Normal file
@ -0,0 +1,330 @@
|
||||
From aa380d4323bcc4dae0f8bafdd074466f8bc5bcf5 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 5 Jan 2013 17:36:04 +0100
|
||||
Subject: [PATCH 086/364] * grub-core/fs/ntfs.c: Eliminate useless
|
||||
divisions in favor of shifts. * grub-core/fs/ntfscomp.c: Likewise. *
|
||||
include/grub/ntfs.h (grub_ntfs_data): Replace spc with log_spc.
|
||||
(grub_ntfs_comp): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 7 +++++++
|
||||
grub-core/fs/ntfs.c | 47 ++++++++++++++++++++++++-----------------------
|
||||
grub-core/fs/ntfscomp.c | 39 ++++++++++++++++++++-------------------
|
||||
include/grub/ntfs.h | 6 ++++--
|
||||
4 files changed, 55 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index ea191b3..88fd763 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,12 @@
|
||||
2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/fs/ntfs.c: Eliminate useless divisions in favor of shifts.
|
||||
+ * grub-core/fs/ntfscomp.c: Likewise.
|
||||
+ * include/grub/ntfs.h (grub_ntfs_data): Replace spc with log_spc.
|
||||
+ (grub_ntfs_comp): Likewise.
|
||||
+
|
||||
+2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/nilfs2.c (-grub_nilfs2_palloc_groups_per_desc_block):
|
||||
Rename to ...
|
||||
(grub_nilfs2_palloc_log_groups_per_desc_block): ... this. Return log
|
||||
diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
|
||||
index b9762b6..6004e1f 100644
|
||||
--- a/grub-core/fs/ntfs.c
|
||||
+++ b/grub-core/fs/ntfs.c
|
||||
@@ -391,7 +391,7 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
grub_memset (&cc, 0, sizeof (cc));
|
||||
ctx = &cc;
|
||||
ctx->attr = at;
|
||||
- ctx->comp.spc = at->mft->data->spc;
|
||||
+ ctx->comp.log_spc = at->mft->data->log_spc;
|
||||
ctx->comp.disk = at->mft->data->disk;
|
||||
|
||||
if (pa[8] == 0)
|
||||
@@ -440,11 +440,11 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
at->save_pos = 1;
|
||||
}
|
||||
|
||||
- vcn = ctx->target_vcn = (ofs >> GRUB_NTFS_COM_LOG_LEN) * (GRUB_NTFS_COM_SEC / ctx->comp.spc);
|
||||
+ vcn = ctx->target_vcn = (ofs >> GRUB_NTFS_COM_LOG_LEN) * (GRUB_NTFS_COM_SEC >> ctx->comp.log_spc);
|
||||
ctx->target_vcn &= ~0xFULL;
|
||||
}
|
||||
else
|
||||
- vcn = ctx->target_vcn = grub_divmod64 (ofs >> GRUB_NTFS_BLK_SHR, ctx->comp.spc, 0);
|
||||
+ vcn = ctx->target_vcn = ofs >> (GRUB_NTFS_BLK_SHR + ctx->comp.log_spc);
|
||||
|
||||
ctx->next_vcn = u32at (pa, 0x10);
|
||||
ctx->curr_lcn = 0;
|
||||
@@ -459,17 +459,17 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
grub_disk_addr_t st0, st1;
|
||||
grub_uint64_t m;
|
||||
|
||||
- grub_divmod64 (ofs >> GRUB_NTFS_BLK_SHR, ctx->comp.spc, &m);
|
||||
+ m = (ofs >> GRUB_NTFS_BLK_SHR) & ((1 << ctx->comp.log_spc) - 1);
|
||||
|
||||
st0 =
|
||||
- (ctx->target_vcn - ctx->curr_vcn + ctx->curr_lcn) * ctx->comp.spc + m;
|
||||
+ ((ctx->target_vcn - ctx->curr_vcn + ctx->curr_lcn) << ctx->comp.log_spc) + m;
|
||||
st1 = st0 + 1;
|
||||
if (st1 ==
|
||||
- (ctx->next_vcn - ctx->curr_vcn + ctx->curr_lcn) * ctx->comp.spc)
|
||||
+ (ctx->next_vcn - ctx->curr_vcn + ctx->curr_lcn) << ctx->comp.log_spc)
|
||||
{
|
||||
if (grub_ntfs_read_run_list (ctx))
|
||||
return grub_errno;
|
||||
- st1 = ctx->curr_lcn * ctx->comp.spc;
|
||||
+ st1 = ctx->curr_lcn << ctx->comp.log_spc;
|
||||
}
|
||||
grub_set_unaligned32 (dest, grub_cpu_to_le32 (st0));
|
||||
grub_set_unaligned32 (dest + 4, grub_cpu_to_le32 (st1));
|
||||
@@ -478,12 +478,10 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
|
||||
if (!(ctx->flags & GRUB_NTFS_RF_COMP))
|
||||
{
|
||||
- unsigned int pow;
|
||||
-
|
||||
- if (!grub_fshelp_log2blksize (ctx->comp.spc, &pow))
|
||||
- grub_fshelp_read_file (ctx->comp.disk, (grub_fshelp_node_t) ctx,
|
||||
- read_hook, ofs, len, dest,
|
||||
- grub_ntfs_read_block, ofs + len, pow, 0);
|
||||
+ grub_fshelp_read_file (ctx->comp.disk, (grub_fshelp_node_t) ctx,
|
||||
+ read_hook, ofs, len, dest,
|
||||
+ grub_ntfs_read_block, ofs + len,
|
||||
+ ctx->comp.log_spc, 0);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
@@ -515,11 +513,11 @@ read_attr (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
|
||||
/* If compression is possible make sure that we include possible
|
||||
compressed block size. */
|
||||
- if (GRUB_NTFS_COM_SEC >= at->mft->data->spc)
|
||||
+ if (GRUB_NTFS_LOG_COM_SEC >= at->mft->data->log_spc)
|
||||
vcn = ((ofs >> GRUB_NTFS_COM_LOG_LEN)
|
||||
- * (GRUB_NTFS_COM_SEC / at->mft->data->spc)) & ~0xFULL;
|
||||
+ << (GRUB_NTFS_LOG_COM_SEC - at->mft->data->log_spc)) & ~0xFULL;
|
||||
else
|
||||
- vcn = grub_divmod64 (ofs, at->mft->data->spc << GRUB_NTFS_BLK_SHR, 0);
|
||||
+ vcn = ofs >> (at->mft->data->log_spc + GRUB_NTFS_BLK_SHR);
|
||||
pa = at->attr_nxt + u16at (at->attr_nxt, 4);
|
||||
while (pa < at->attr_end)
|
||||
{
|
||||
@@ -934,6 +932,7 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
{
|
||||
struct grub_ntfs_bpb bpb;
|
||||
struct grub_ntfs_data *data = 0;
|
||||
+ grub_uint32_t spc;
|
||||
|
||||
if (!disk)
|
||||
goto fail;
|
||||
@@ -955,23 +954,25 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
|| (bpb.bytes_per_sector & (bpb.bytes_per_sector - 1)) != 0)
|
||||
goto fail;
|
||||
|
||||
- data->spc = (((grub_uint32_t) bpb.sectors_per_cluster
|
||||
- * (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector))
|
||||
- >> GRUB_NTFS_BLK_SHR);
|
||||
- if (!data->spc)
|
||||
+ spc = (((grub_uint32_t) bpb.sectors_per_cluster
|
||||
+ * (grub_uint32_t) grub_le_to_cpu16 (bpb.bytes_per_sector))
|
||||
+ >> GRUB_NTFS_BLK_SHR);
|
||||
+ if (spc == 0 || (spc & (spc - 1)))
|
||||
goto fail;
|
||||
|
||||
+ for (data->log_spc = 0; (1U << data->log_spc) < spc; data->log_spc++);
|
||||
+
|
||||
if (bpb.clusters_per_mft > 0)
|
||||
- data->mft_size = data->spc * bpb.clusters_per_mft;
|
||||
+ data->mft_size = bpb.clusters_per_mft << data->log_spc;
|
||||
else
|
||||
data->mft_size = 1 << (-bpb.clusters_per_mft - GRUB_NTFS_BLK_SHR);
|
||||
|
||||
if (bpb.clusters_per_index > 0)
|
||||
- data->idx_size = data->spc * bpb.clusters_per_index;
|
||||
+ data->idx_size = bpb.clusters_per_index << data->log_spc;
|
||||
else
|
||||
data->idx_size = 1 << (-bpb.clusters_per_index - GRUB_NTFS_BLK_SHR);
|
||||
|
||||
- data->mft_start = grub_le_to_cpu64 (bpb.mft_lcn) * data->spc;
|
||||
+ data->mft_start = grub_le_to_cpu64 (bpb.mft_lcn) << data->log_spc;
|
||||
|
||||
if ((data->mft_size > GRUB_NTFS_MAX_MFT) || (data->idx_size > GRUB_NTFS_MAX_IDX))
|
||||
goto fail;
|
||||
diff --git a/grub-core/fs/ntfscomp.c b/grub-core/fs/ntfscomp.c
|
||||
index ec359fa..9b3b75d 100644
|
||||
--- a/grub-core/fs/ntfscomp.c
|
||||
+++ b/grub-core/fs/ntfscomp.c
|
||||
@@ -33,8 +33,9 @@ decomp_nextvcn (struct grub_ntfs_comp *cc)
|
||||
if (grub_disk_read
|
||||
(cc->disk,
|
||||
(cc->comp_table[cc->comp_head].next_lcn -
|
||||
- (cc->comp_table[cc->comp_head].next_vcn - cc->cbuf_vcn)) * cc->spc, 0,
|
||||
- cc->spc << GRUB_NTFS_BLK_SHR, cc->cbuf))
|
||||
+ (cc->comp_table[cc->comp_head].next_vcn - cc->cbuf_vcn)) << cc->log_spc,
|
||||
+ 0,
|
||||
+ 1 << (cc->log_spc + GRUB_NTFS_BLK_SHR), cc->cbuf))
|
||||
return grub_errno;
|
||||
cc->cbuf_vcn++;
|
||||
if ((cc->cbuf_vcn >= cc->comp_table[cc->comp_head].next_vcn))
|
||||
@@ -46,7 +47,7 @@ decomp_nextvcn (struct grub_ntfs_comp *cc)
|
||||
static grub_err_t
|
||||
decomp_getch (struct grub_ntfs_comp *cc, unsigned char *res)
|
||||
{
|
||||
- if (cc->cbuf_ofs >= (cc->spc << GRUB_NTFS_BLK_SHR))
|
||||
+ if (cc->cbuf_ofs >= (1U << (cc->log_spc + GRUB_NTFS_BLK_SHR)))
|
||||
{
|
||||
if (decomp_nextvcn (cc))
|
||||
return grub_errno;
|
||||
@@ -159,7 +160,7 @@ decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
{
|
||||
int n;
|
||||
|
||||
- n = (cc->spc << GRUB_NTFS_BLK_SHR) - cc->cbuf_ofs;
|
||||
+ n = (1 << (cc->log_spc + GRUB_NTFS_BLK_SHR)) - cc->cbuf_ofs;
|
||||
if (n > cnt)
|
||||
n = cnt;
|
||||
if ((dest) && (n))
|
||||
@@ -178,7 +179,7 @@ decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
static grub_err_t
|
||||
read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
{
|
||||
- int cpb = GRUB_NTFS_COM_SEC / ctx->comp.spc;
|
||||
+ int log_cpb = GRUB_NTFS_LOG_COM_SEC - ctx->comp.log_spc;
|
||||
|
||||
while (num)
|
||||
{
|
||||
@@ -192,7 +193,7 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
return grub_error (GRUB_ERR_BAD_FS, "invalid compression block");
|
||||
ctx->comp.comp_head = ctx->comp.comp_tail = 0;
|
||||
ctx->comp.cbuf_vcn = ctx->target_vcn;
|
||||
- ctx->comp.cbuf_ofs = (ctx->comp.spc << GRUB_NTFS_BLK_SHR);
|
||||
+ ctx->comp.cbuf_ofs = (1 << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR));
|
||||
if (ctx->target_vcn >= ctx->next_vcn)
|
||||
{
|
||||
if (grub_ntfs_read_run_list (ctx))
|
||||
@@ -211,14 +212,14 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
}
|
||||
}
|
||||
|
||||
- nn = (16 - (unsigned) (ctx->target_vcn & 0xF)) / cpb;
|
||||
+ nn = (16 - (unsigned) (ctx->target_vcn & 0xF)) >> log_cpb;
|
||||
if (nn > num)
|
||||
nn = num;
|
||||
num -= nn;
|
||||
|
||||
if (ctx->flags & GRUB_NTFS_RF_BLNK)
|
||||
{
|
||||
- ctx->target_vcn += nn * cpb;
|
||||
+ ctx->target_vcn += nn << log_cpb;
|
||||
if (ctx->comp.comp_tail == 0)
|
||||
{
|
||||
if (buf)
|
||||
@@ -241,7 +242,7 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
}
|
||||
else
|
||||
{
|
||||
- nn *= cpb;
|
||||
+ nn <<= log_cpb;
|
||||
while ((ctx->comp.comp_head < ctx->comp.comp_tail) && (nn))
|
||||
{
|
||||
grub_disk_addr_t tt;
|
||||
@@ -258,10 +259,10 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
(ctx->comp.disk,
|
||||
(ctx->comp.comp_table[ctx->comp.comp_head].next_lcn -
|
||||
(ctx->comp.comp_table[ctx->comp.comp_head].next_vcn -
|
||||
- ctx->target_vcn)) * ctx->comp.spc, 0,
|
||||
- tt * (ctx->comp.spc << GRUB_NTFS_BLK_SHR), buf))
|
||||
+ ctx->target_vcn)) << ctx->comp.log_spc, 0,
|
||||
+ tt << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR), buf))
|
||||
return grub_errno;
|
||||
- buf += tt * (ctx->comp.spc << GRUB_NTFS_BLK_SHR);
|
||||
+ buf += tt << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR);
|
||||
}
|
||||
nn -= tt;
|
||||
if (ctx->target_vcn >=
|
||||
@@ -275,10 +276,10 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
if (grub_disk_read
|
||||
(ctx->comp.disk,
|
||||
(ctx->target_vcn - ctx->curr_vcn +
|
||||
- ctx->curr_lcn) * ctx->comp.spc, 0,
|
||||
- nn * (ctx->comp.spc << GRUB_NTFS_BLK_SHR), buf))
|
||||
+ ctx->curr_lcn) << ctx->comp.log_spc, 0,
|
||||
+ nn << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR), buf))
|
||||
return grub_errno;
|
||||
- buf += nn * (ctx->comp.spc << GRUB_NTFS_BLK_SHR);
|
||||
+ buf += nn << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR);
|
||||
}
|
||||
ctx->target_vcn += nn;
|
||||
}
|
||||
@@ -294,7 +295,7 @@ ntfscomp (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
grub_err_t ret;
|
||||
|
||||
ctx->comp.comp_head = ctx->comp.comp_tail = 0;
|
||||
- ctx->comp.cbuf = grub_malloc ((ctx->comp.spc) << GRUB_NTFS_BLK_SHR);
|
||||
+ ctx->comp.cbuf = grub_malloc (1 << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR));
|
||||
if (!ctx->comp.cbuf)
|
||||
return 0;
|
||||
|
||||
@@ -304,7 +305,7 @@ ntfscomp (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
|
||||
if ((vcn > ctx->target_vcn) &&
|
||||
(read_block
|
||||
- (ctx, NULL, ((vcn - ctx->target_vcn) * ctx->comp.spc) / GRUB_NTFS_COM_SEC)))
|
||||
+ (ctx, NULL, (vcn - ctx->target_vcn) >> (GRUB_NTFS_LOG_COM_SEC - ctx->comp.log_spc))))
|
||||
{
|
||||
ret = grub_errno;
|
||||
goto quit;
|
||||
@@ -314,7 +315,7 @@ ntfscomp (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
{
|
||||
grub_uint32_t t, n, o;
|
||||
|
||||
- t = ctx->target_vcn * (ctx->comp.spc << GRUB_NTFS_BLK_SHR);
|
||||
+ t = ctx->target_vcn << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR);
|
||||
if (read_block (ctx, at->sbuf, 1))
|
||||
{
|
||||
ret = grub_errno;
|
||||
@@ -346,7 +347,7 @@ ntfscomp (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
{
|
||||
grub_uint32_t t;
|
||||
|
||||
- t = ctx->target_vcn * (ctx->comp.spc << GRUB_NTFS_BLK_SHR);
|
||||
+ t = ctx->target_vcn << (ctx->comp.log_spc + GRUB_NTFS_BLK_SHR);
|
||||
if (read_block (ctx, at->sbuf, 1))
|
||||
{
|
||||
ret = grub_errno;
|
||||
diff --git a/include/grub/ntfs.h b/include/grub/ntfs.h
|
||||
index 0935342..cc28a01 100644
|
||||
--- a/include/grub/ntfs.h
|
||||
+++ b/include/grub/ntfs.h
|
||||
@@ -87,6 +87,7 @@ enum
|
||||
#define GRUB_NTFS_COM_LEN 4096
|
||||
#define GRUB_NTFS_COM_LOG_LEN 12
|
||||
#define GRUB_NTFS_COM_SEC (GRUB_NTFS_COM_LEN >> GRUB_NTFS_BLK_SHR)
|
||||
+#define GRUB_NTFS_LOG_COM_SEC (GRUB_NTFS_COM_LOG_LEN - GRUB_NTFS_BLK_SHR)
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -156,7 +157,7 @@ struct grub_ntfs_data
|
||||
grub_disk_t disk;
|
||||
grub_uint32_t mft_size;
|
||||
grub_uint32_t idx_size;
|
||||
- grub_uint32_t spc;
|
||||
+ int log_spc;
|
||||
grub_uint32_t mft_start;
|
||||
grub_uint64_t uuid;
|
||||
};
|
||||
@@ -172,7 +173,8 @@ struct grub_ntfs_comp
|
||||
grub_disk_t disk;
|
||||
int comp_head, comp_tail;
|
||||
struct grub_ntfs_comp_table_element comp_table[16];
|
||||
- grub_uint32_t cbuf_ofs, cbuf_vcn, spc;
|
||||
+ grub_uint32_t cbuf_ofs, cbuf_vcn;
|
||||
+ int log_spc;
|
||||
char *cbuf;
|
||||
};
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
103
0087-grub-core-fs-ext2.c-grub_ext2_read_block-Use-shifts-.patch
Normal file
103
0087-grub-core-fs-ext2.c-grub_ext2_read_block-Use-shifts-.patch
Normal file
@ -0,0 +1,103 @@
|
||||
From af8a6a082c9ac9fab22f3eff9e81b5e7085debc4 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 5 Jan 2013 18:37:34 +0100
|
||||
Subject: [PATCH 087/364] * grub-core/fs/ext2.c (grub_ext2_read_block):
|
||||
Use shifts rather than divisions.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/fs/ext2.c | 30 ++++++++++++++++--------------
|
||||
2 files changed, 21 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 88fd763..af29161 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/fs/ext2.c (grub_ext2_read_block): Use shifts rather than
|
||||
+ divisions.
|
||||
+
|
||||
+2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/fs/ntfs.c: Eliminate useless divisions in favor of shifts.
|
||||
* grub-core/fs/ntfscomp.c: Likewise.
|
||||
* include/grub/ntfs.h (grub_ntfs_data): Replace spc with log_spc.
|
||||
diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c
|
||||
index bd1ab24..cf2e2f4 100644
|
||||
--- a/grub-core/fs/ext2.c
|
||||
+++ b/grub-core/fs/ext2.c
|
||||
@@ -454,11 +454,12 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
blknr = grub_le_to_cpu32 (indir[fileblock - INDIRECT_BLOCKS]);
|
||||
}
|
||||
/* Double indirect. */
|
||||
- else if (fileblock < INDIRECT_BLOCKS + blksz / 4 * (blksz / 4 + 1))
|
||||
+ else if (fileblock < INDIRECT_BLOCKS
|
||||
+ + blksz / 4 * ((grub_disk_addr_t) blksz / 4 + 1))
|
||||
{
|
||||
- unsigned int perblock = blksz / 4;
|
||||
- unsigned int rblock = fileblock - (INDIRECT_BLOCKS
|
||||
- + blksz / 4);
|
||||
+ int log_perblock = log2_blksz + 9 - 2;
|
||||
+ grub_disk_addr_t rblock = fileblock - (INDIRECT_BLOCKS
|
||||
+ + blksz / 4);
|
||||
grub_uint32_t indir[blksz / 4];
|
||||
|
||||
if (grub_disk_read (data->disk,
|
||||
@@ -470,21 +471,22 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
|
||||
if (grub_disk_read (data->disk,
|
||||
((grub_disk_addr_t)
|
||||
- grub_le_to_cpu32 (indir[rblock / perblock]))
|
||||
+ grub_le_to_cpu32 (indir[rblock >> log_perblock]))
|
||||
<< log2_blksz,
|
||||
0, blksz, indir))
|
||||
return grub_errno;
|
||||
|
||||
|
||||
- blknr = grub_le_to_cpu32 (indir[rblock % perblock]);
|
||||
+ blknr = grub_le_to_cpu32 (indir[rblock & ((1 << log_perblock) - 1)]);
|
||||
}
|
||||
/* triple indirect. */
|
||||
- else if (fileblock < INDIRECT_BLOCKS + blksz / 4 * (blksz / 4 + 1)
|
||||
- + (blksz / 4) * (blksz / 4) * (blksz / 4 + 1))
|
||||
+ else if (fileblock < INDIRECT_BLOCKS + blksz / 4 * ((grub_disk_addr_t) blksz / 4 + 1)
|
||||
+ + ((grub_disk_addr_t) blksz / 4) * ((grub_disk_addr_t) blksz / 4)
|
||||
+ * ((grub_disk_addr_t) blksz / 4 + 1))
|
||||
{
|
||||
- unsigned int perblock = blksz / 4;
|
||||
- unsigned int rblock = fileblock - (INDIRECT_BLOCKS + blksz / 4
|
||||
- * (blksz / 4 + 1));
|
||||
+ int log_perblock = log2_blksz + 9 - 2;
|
||||
+ grub_disk_addr_t rblock = fileblock - (INDIRECT_BLOCKS + blksz / 4
|
||||
+ * (blksz / 4 + 1));
|
||||
grub_uint32_t indir[blksz / 4];
|
||||
|
||||
if (grub_disk_read (data->disk,
|
||||
@@ -496,19 +498,19 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
|
||||
if (grub_disk_read (data->disk,
|
||||
((grub_disk_addr_t)
|
||||
- grub_le_to_cpu32 (indir[(rblock / perblock) / perblock]))
|
||||
+ grub_le_to_cpu32 (indir[(rblock >> log_perblock) >> log_perblock]))
|
||||
<< log2_blksz,
|
||||
0, blksz, indir))
|
||||
return grub_errno;
|
||||
|
||||
if (grub_disk_read (data->disk,
|
||||
((grub_disk_addr_t)
|
||||
- grub_le_to_cpu32 (indir[(rblock / perblock) % perblock]))
|
||||
+ grub_le_to_cpu32 (indir[(rblock >> log_perblock) & ((1 << log_perblock) - 1)]))
|
||||
<< log2_blksz,
|
||||
0, blksz, indir))
|
||||
return grub_errno;
|
||||
|
||||
- blknr = grub_le_to_cpu32 (indir[rblock % perblock]);
|
||||
+ blknr = grub_le_to_cpu32 (indir[rblock & ((1 << log_perblock) - 1)]);
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,47 @@
|
||||
From 8c3fd8eea724a1490d29937b1d23cde259bf63cb Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Mon, 7 Jan 2013 11:27:18 +0100
|
||||
Subject: [PATCH 088/364] * grub-core/fs/minix.c (grub_minix_read_file):
|
||||
Simplify arithmetics.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++++
|
||||
grub-core/fs/minix.c | 8 ++++----
|
||||
2 files changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index af29161..cdb3f3d 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,7 @@
|
||||
+2013-01-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/fs/minix.c (grub_minix_read_file): Simplify arithmetics.
|
||||
+
|
||||
2013-01-05 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/fs/ext2.c (grub_ext2_read_block): Use shifts rather than
|
||||
diff --git a/grub-core/fs/minix.c b/grub-core/fs/minix.c
|
||||
index 1e1c13b..a622533 100644
|
||||
--- a/grub-core/fs/minix.c
|
||||
+++ b/grub-core/fs/minix.c
|
||||
@@ -261,12 +261,12 @@ grub_minix_read_file (struct grub_minix_data *data,
|
||||
/* Adjust len so it we can't read past the end of the file. */
|
||||
if (len + pos > GRUB_MINIX_INODE_SIZE (data))
|
||||
len = GRUB_MINIX_INODE_SIZE (data) - pos;
|
||||
+ if (len == 0)
|
||||
+ return 0;
|
||||
|
||||
/* Files are at most 2G/4G - 1 bytes on minixfs. Avoid 64-bit division. */
|
||||
- blockcnt = ((grub_uint32_t) ((len + pos
|
||||
- + (data->block_size << GRUB_DISK_SECTOR_BITS)
|
||||
- - 1)
|
||||
- >> GRUB_DISK_SECTOR_BITS)) / data->block_size;
|
||||
+ blockcnt = ((grub_uint32_t) ((len + pos - 1)
|
||||
+ >> GRUB_DISK_SECTOR_BITS)) / data->block_size + 1;
|
||||
posblock = (((grub_uint32_t) pos)
|
||||
/ (data->block_size << GRUB_DISK_SECTOR_BITS));
|
||||
blockoff = (((grub_uint32_t) pos)
|
||||
--
|
||||
1.8.1.4
|
||||
|
61
0089-docs-grub.texi-grub_cpu-New-subsection.patch
Normal file
61
0089-docs-grub.texi-grub_cpu-New-subsection.patch
Normal file
@ -0,0 +1,61 @@
|
||||
From 05f5634a5c5a66d535962a96635a9c153cf67e8f Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Mon, 7 Jan 2013 10:43:00 +0000
|
||||
Subject: [PATCH 089/364] * docs/grub.texi (grub_cpu): New subsection.
|
||||
(grub_platform): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
docs/grub.texi | 16 ++++++++++++++++
|
||||
2 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index cdb3f3d..097ef0d 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-07 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ * docs/grub.texi (grub_cpu): New subsection.
|
||||
+ (grub_platform): Likewise.
|
||||
+
|
||||
2013-01-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/fs/minix.c (grub_minix_read_file): Simplify arithmetics.
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index e23cecc..a92bd96 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -2674,6 +2674,8 @@ These variables have special meaning to GRUB.
|
||||
* gfxmode::
|
||||
* gfxpayload::
|
||||
* gfxterm_font::
|
||||
+* grub_cpu::
|
||||
+* grub_platform::
|
||||
* icondir::
|
||||
* lang::
|
||||
* locale_dir::
|
||||
@@ -2857,6 +2859,20 @@ If this variable is set, it names a font to use for text on the
|
||||
available font.
|
||||
|
||||
|
||||
+@node grub_cpu
|
||||
+@subsection grub_cpu
|
||||
+
|
||||
+In normal mode (@pxref{normal}), GRUB sets the @samp{grub_cpu} variable to
|
||||
+the CPU type for which GRUB was built (e.g. @samp{i386} or @samp{powerpc}).
|
||||
+
|
||||
+
|
||||
+@node grub_platform
|
||||
+@subsection grub_platform
|
||||
+
|
||||
+In normal mode (@pxref{normal}), GRUB sets the @samp{grub_platform} variable
|
||||
+to the platform for which GRUB was built (e.g. @samp{pc} or @samp{efi}).
|
||||
+
|
||||
+
|
||||
@node icondir
|
||||
@subsection icondir
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
141
0090-grub-core-io-bufio.c-grub_bufio_open-Use-grub_zalloc.patch
Normal file
141
0090-grub-core-io-bufio.c-grub_bufio_open-Use-grub_zalloc.patch
Normal file
@ -0,0 +1,141 @@
|
||||
From c86f86069fd8d600ebc4ffbd8a786c58fccff886 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Mon, 7 Jan 2013 10:45:05 +0000
|
||||
Subject: [PATCH 090/364] * grub-core/io/bufio.c (grub_bufio_open): Use
|
||||
grub_zalloc instead of explicitly zeroing elements. * grub-core/io/gzio.c
|
||||
(grub_gzio_open): Likewise. * grub-core/io/lzopio.c (grub_lzopio_open):
|
||||
Remove explicit zeroing of elements in a structure already allocated using
|
||||
grub_zalloc. * grub-core/io/xzio.c (grub_xzio_open): Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 9 +++++++++
|
||||
grub-core/io/bufio.c | 8 ++------
|
||||
grub-core/io/gzio.c | 4 +---
|
||||
grub-core/io/lzopio.c | 2 --
|
||||
grub-core/io/xzio.c | 6 ------
|
||||
5 files changed, 12 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 097ef0d..75fb85a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,14 @@
|
||||
2013-01-07 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
+ * grub-core/io/bufio.c (grub_bufio_open): Use grub_zalloc instead of
|
||||
+ explicitly zeroing elements.
|
||||
+ * grub-core/io/gzio.c (grub_gzio_open): Likewise.
|
||||
+ * grub-core/io/lzopio.c (grub_lzopio_open): Remove explicit zeroing
|
||||
+ of elements in a structure already allocated using grub_zalloc.
|
||||
+ * grub-core/io/xzio.c (grub_xzio_open): Likewise.
|
||||
+
|
||||
+2013-01-07 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
* docs/grub.texi (grub_cpu): New subsection.
|
||||
(grub_platform): Likewise.
|
||||
|
||||
diff --git a/grub-core/io/bufio.c b/grub-core/io/bufio.c
|
||||
index 2a315e2..2243827 100644
|
||||
--- a/grub-core/io/bufio.c
|
||||
+++ b/grub-core/io/bufio.c
|
||||
@@ -48,7 +48,7 @@ grub_bufio_open (grub_file_t io, int size)
|
||||
grub_file_t file;
|
||||
grub_bufio_t bufio = 0;
|
||||
|
||||
- file = (grub_file_t) grub_malloc (sizeof (*file));
|
||||
+ file = (grub_file_t) grub_zalloc (sizeof (*file));
|
||||
if (! file)
|
||||
return 0;
|
||||
|
||||
@@ -61,7 +61,7 @@ grub_bufio_open (grub_file_t io, int size)
|
||||
size = ((io->size > GRUB_BUFIO_MAX_SIZE) ? GRUB_BUFIO_MAX_SIZE :
|
||||
io->size);
|
||||
|
||||
- bufio = grub_malloc (sizeof (struct grub_bufio) + size);
|
||||
+ bufio = grub_zalloc (sizeof (struct grub_bufio) + size);
|
||||
if (! bufio)
|
||||
{
|
||||
grub_free (file);
|
||||
@@ -70,14 +70,10 @@ grub_bufio_open (grub_file_t io, int size)
|
||||
|
||||
bufio->file = io;
|
||||
bufio->block_size = size;
|
||||
- bufio->buffer_len = 0;
|
||||
- bufio->buffer_at = 0;
|
||||
|
||||
file->device = io->device;
|
||||
- file->offset = 0;
|
||||
file->size = io->size;
|
||||
file->data = bufio;
|
||||
- file->read_hook = 0;
|
||||
file->fs = &grub_bufio_fs;
|
||||
file->not_easily_seekable = io->not_easily_seekable;
|
||||
|
||||
diff --git a/grub-core/io/gzio.c b/grub-core/io/gzio.c
|
||||
index 83c0b64..59f2206 100644
|
||||
--- a/grub-core/io/gzio.c
|
||||
+++ b/grub-core/io/gzio.c
|
||||
@@ -1130,7 +1130,7 @@ grub_gzio_open (grub_file_t io)
|
||||
grub_file_t file;
|
||||
grub_gzio_t gzio = 0;
|
||||
|
||||
- file = (grub_file_t) grub_malloc (sizeof (*file));
|
||||
+ file = (grub_file_t) grub_zalloc (sizeof (*file));
|
||||
if (! file)
|
||||
return 0;
|
||||
|
||||
@@ -1144,9 +1144,7 @@ grub_gzio_open (grub_file_t io)
|
||||
gzio->file = io;
|
||||
|
||||
file->device = io->device;
|
||||
- file->offset = 0;
|
||||
file->data = gzio;
|
||||
- file->read_hook = 0;
|
||||
file->fs = &grub_gzio_fs;
|
||||
file->not_easily_seekable = 1;
|
||||
|
||||
diff --git a/grub-core/io/lzopio.c b/grub-core/io/lzopio.c
|
||||
index 77291d0..7fdb6d4 100644
|
||||
--- a/grub-core/io/lzopio.c
|
||||
+++ b/grub-core/io/lzopio.c
|
||||
@@ -428,9 +428,7 @@ grub_lzopio_open (grub_file_t io)
|
||||
lzopio->file = io;
|
||||
|
||||
file->device = io->device;
|
||||
- file->offset = 0;
|
||||
file->data = lzopio;
|
||||
- file->read_hook = 0;
|
||||
file->fs = &grub_lzopio_fs;
|
||||
file->size = GRUB_FILE_SIZE_UNKNOWN;
|
||||
file->not_easily_seekable = 1;
|
||||
diff --git a/grub-core/io/xzio.c b/grub-core/io/xzio.c
|
||||
index ae30e6f..27657d8 100644
|
||||
--- a/grub-core/io/xzio.c
|
||||
+++ b/grub-core/io/xzio.c
|
||||
@@ -186,12 +186,9 @@ grub_xzio_open (grub_file_t io)
|
||||
}
|
||||
|
||||
xzio->file = io;
|
||||
- xzio->saved_offset = 0;
|
||||
|
||||
file->device = io->device;
|
||||
- file->offset = 0;
|
||||
file->data = xzio;
|
||||
- file->read_hook = 0;
|
||||
file->fs = &grub_xzio_fs;
|
||||
file->size = GRUB_FILE_SIZE_UNKNOWN;
|
||||
file->not_easily_seekable = 1;
|
||||
@@ -210,10 +207,7 @@ grub_xzio_open (grub_file_t io)
|
||||
}
|
||||
|
||||
xzio->buf.in = xzio->inbuf;
|
||||
- xzio->buf.in_pos = 0;
|
||||
- xzio->buf.in_size = 0;
|
||||
xzio->buf.out = xzio->outbuf;
|
||||
- xzio->buf.out_pos = 0;
|
||||
xzio->buf.out_size = XZBUFSIZ;
|
||||
|
||||
/* FIXME: don't test footer on not easily seekable files. */
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,59 @@
|
||||
From 1ed52ffd389d28a8c1711fedcd9a841258c30e28 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 10 Jan 2013 08:09:26 +0100
|
||||
Subject: [PATCH 091/364] * grub-core/kern/disk.c (grub_disk_write): Fix
|
||||
sector number on 4K sector devices.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/kern/disk.c | 11 ++++++++---
|
||||
2 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 75fb85a..48d297d 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/kern/disk.c (grub_disk_write): Fix sector number on 4K
|
||||
+ sector devices.
|
||||
+
|
||||
2013-01-07 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
* grub-core/io/bufio.c (grub_bufio_open): Use grub_zalloc instead of
|
||||
diff --git a/grub-core/kern/disk.c b/grub-core/kern/disk.c
|
||||
index 1f55f90..94318af 100644
|
||||
--- a/grub-core/kern/disk.c
|
||||
+++ b/grub-core/kern/disk.c
|
||||
@@ -658,7 +658,8 @@ grub_disk_write (grub_disk_t disk, grub_disk_addr_t sector,
|
||||
|
||||
grub_disk_cache_invalidate (disk->dev->id, disk->id, sector);
|
||||
|
||||
- if ((disk->dev->write) (disk, sector, 1, tmp_buf) != GRUB_ERR_NONE)
|
||||
+ if ((disk->dev->write) (disk, transform_sector (disk, sector),
|
||||
+ 1, tmp_buf) != GRUB_ERR_NONE)
|
||||
goto finish;
|
||||
|
||||
sector += (1 << (disk->log_sector_size - GRUB_DISK_SECTOR_BITS));
|
||||
@@ -674,11 +675,15 @@ grub_disk_write (grub_disk_t disk, grub_disk_addr_t sector,
|
||||
len = size & ~((1 << disk->log_sector_size) - 1);
|
||||
n = size >> disk->log_sector_size;
|
||||
|
||||
- if ((disk->dev->write) (disk, sector, n, buf) != GRUB_ERR_NONE)
|
||||
+ if ((disk->dev->write) (disk, transform_sector (disk, sector),
|
||||
+ n, buf) != GRUB_ERR_NONE)
|
||||
goto finish;
|
||||
|
||||
while (n--)
|
||||
- grub_disk_cache_invalidate (disk->dev->id, disk->id, sector++);
|
||||
+ {
|
||||
+ grub_disk_cache_invalidate (disk->dev->id, disk->id, sector);
|
||||
+ sector += (1 << (disk->log_sector_size - GRUB_DISK_SECTOR_BITS));
|
||||
+ }
|
||||
|
||||
buf = (const char *) buf + len;
|
||||
size -= len;
|
||||
--
|
||||
1.8.1.4
|
||||
|
150
0092-Support-Apple-FAT-binaries-on-non-Apple-platforms.patch
Normal file
150
0092-Support-Apple-FAT-binaries-on-non-Apple-platforms.patch
Normal file
@ -0,0 +1,150 @@
|
||||
From 474f5d13721ed87fde38bdad282164ee84c1be0a Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Thu, 10 Jan 2013 12:50:01 +0100
|
||||
Subject: [PATCH 092/364] Support Apple FAT binaries on non-Apple
|
||||
platforms.
|
||||
|
||||
* include/grub/macho.h (GRUB_MACHO_FAT_EFI_MAGIC): New define.
|
||||
* include/grub/i386/macho.h (GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT):
|
||||
Likewise.
|
||||
* grub-core/loader/efi/chainloader.c (grub_cmd_chainloader): Parse
|
||||
Apple FAT binaries.
|
||||
---
|
||||
ChangeLog | 10 ++++++++
|
||||
grub-core/loader/efi/chainloader.c | 48 +++++++++++++++++++++++++++++++++++---
|
||||
include/grub/i386/macho.h | 5 ++++
|
||||
include/grub/macho.h | 1 +
|
||||
4 files changed, 61 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 48d297d..4567cae 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,15 @@
|
||||
2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ Support Apple FAT binaries on non-Apple platforms.
|
||||
+
|
||||
+ * include/grub/macho.h (GRUB_MACHO_FAT_EFI_MAGIC): New define.
|
||||
+ * include/grub/i386/macho.h (GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT):
|
||||
+ Likewise.
|
||||
+ * grub-core/loader/efi/chainloader.c (grub_cmd_chainloader): Parse
|
||||
+ Apple FAT binaries.
|
||||
+
|
||||
+2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/kern/disk.c (grub_disk_write): Fix sector number on 4K
|
||||
sector devices.
|
||||
|
||||
diff --git a/grub-core/loader/efi/chainloader.c b/grub-core/loader/efi/chainloader.c
|
||||
index 3f3e6e3..c0fed80 100644
|
||||
--- a/grub-core/loader/efi/chainloader.c
|
||||
+++ b/grub-core/loader/efi/chainloader.c
|
||||
@@ -35,6 +35,10 @@
|
||||
#include <grub/command.h>
|
||||
#include <grub/i18n.h>
|
||||
#include <grub/net.h>
|
||||
+#if defined (__i386__) || defined (__x86_64__)
|
||||
+#include <grub/macho.h>
|
||||
+#include <grub/i386/macho.h>
|
||||
+#endif
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
@@ -198,6 +202,7 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_efi_device_path_t *dp = 0;
|
||||
grub_efi_loaded_image_t *loaded_image;
|
||||
char *filename;
|
||||
+ void *boot_image = 0;
|
||||
grub_efi_handle_t dev_handle = 0;
|
||||
|
||||
if (argc == 0)
|
||||
@@ -278,7 +283,8 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- if (grub_file_read (file, (void *) ((grub_addr_t) address), size) != size)
|
||||
+ boot_image = (void *) ((grub_addr_t) address);
|
||||
+ if (grub_file_read (file, boot_image, size) != size)
|
||||
{
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
@@ -287,9 +293,45 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
||||
goto fail;
|
||||
}
|
||||
|
||||
+#if defined (__i386__) || defined (__x86_64__)
|
||||
+ if (size >= (grub_ssize_t) sizeof (struct grub_macho_fat_header))
|
||||
+ {
|
||||
+ struct grub_macho_fat_header *head = boot_image;
|
||||
+ if (head->magic
|
||||
+ == grub_cpu_to_le32_compile_time (GRUB_MACHO_FAT_EFI_MAGIC))
|
||||
+ {
|
||||
+ grub_uint32_t i;
|
||||
+ struct grub_macho_fat_arch *archs
|
||||
+ = (struct grub_macho_fat_arch *) (head + 1);
|
||||
+ for (i = 0; i < grub_cpu_to_le32 (head->nfat_arch); i++)
|
||||
+ {
|
||||
+ if (GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT (archs[i].cputype))
|
||||
+ break;
|
||||
+ }
|
||||
+ if (i == grub_cpu_to_le32 (head->nfat_arch))
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_OS, "no compatible arch found");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ if (grub_cpu_to_le32 (archs[i].offset)
|
||||
+ > ~grub_cpu_to_le32 (archs[i].size)
|
||||
+ || grub_cpu_to_le32 (archs[i].offset)
|
||||
+ + grub_cpu_to_le32 (archs[i].size)
|
||||
+ > (grub_size_t) size)
|
||||
+ {
|
||||
+ grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
+ filename);
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ boot_image = (char *) boot_image + grub_cpu_to_le32 (archs[i].offset);
|
||||
+ size = grub_cpu_to_le32 (archs[i].size);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
status = efi_call_6 (b->load_image, 0, grub_efi_image_handle, file_path,
|
||||
- (void *) ((grub_addr_t) address), size,
|
||||
- &image_handle);
|
||||
+ boot_image, size,
|
||||
+ &image_handle);
|
||||
if (status != GRUB_EFI_SUCCESS)
|
||||
{
|
||||
if (status == GRUB_EFI_OUT_OF_RESOURCES)
|
||||
diff --git a/include/grub/i386/macho.h b/include/grub/i386/macho.h
|
||||
index f22c211..5ee9f9e 100644
|
||||
--- a/include/grub/i386/macho.h
|
||||
+++ b/include/grub/i386/macho.h
|
||||
@@ -23,6 +23,11 @@
|
||||
|
||||
#define GRUB_MACHO_CPUTYPE_IS_HOST32(x) ((x)==0x00000007)
|
||||
#define GRUB_MACHO_CPUTYPE_IS_HOST64(x) ((x)==0x01000007)
|
||||
+#ifdef __x86_64__
|
||||
+#define GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT(x) ((x)==0x01000007)
|
||||
+#else
|
||||
+#define GRUB_MACHO_CPUTYPE_IS_HOST_CURRENT(x) ((x)==0x00000007)
|
||||
+#endif
|
||||
|
||||
struct grub_macho_thread32
|
||||
{
|
||||
diff --git a/include/grub/macho.h b/include/grub/macho.h
|
||||
index 6a98b6e..21f0714 100644
|
||||
--- a/include/grub/macho.h
|
||||
+++ b/include/grub/macho.h
|
||||
@@ -27,6 +27,7 @@ struct grub_macho_fat_header
|
||||
grub_uint32_t nfat_arch;
|
||||
} __attribute__ ((packed));
|
||||
#define GRUB_MACHO_FAT_MAGIC 0xcafebabe
|
||||
+#define GRUB_MACHO_FAT_EFI_MAGIC 0x0ef1fab9
|
||||
|
||||
typedef grub_uint32_t grub_macho_cpu_type_t;
|
||||
typedef grub_uint32_t grub_macho_cpu_subtype_t;
|
||||
--
|
||||
1.8.1.4
|
||||
|
628
0093-grub-core-fs-ntfs.c-Ue-more-appropriate-types.patch
Normal file
628
0093-grub-core-fs-ntfs.c-Ue-more-appropriate-types.patch
Normal file
@ -0,0 +1,628 @@
|
||||
From 75bd81540fab6830213d51e024b53d51f3fe6dcb Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Fri, 11 Jan 2013 07:41:05 +0100
|
||||
Subject: [PATCH 093/364] * grub-core/fs/ntfs.c: Ue more appropriate
|
||||
types. * grub-core/fs/ntfscomp.c: Likewise. * include/grub/ntfs.h:
|
||||
Likewise.
|
||||
|
||||
---
|
||||
ChangeLog | 6 +++
|
||||
grub-core/fs/ntfs.c | 140 +++++++++++++++++++++++++-----------------------
|
||||
grub-core/fs/ntfscomp.c | 16 +++---
|
||||
include/grub/ntfs.h | 20 +++----
|
||||
4 files changed, 96 insertions(+), 86 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 4567cae..41dbadd 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,11 @@
|
||||
2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/fs/ntfs.c: Ue more appropriate types.
|
||||
+ * grub-core/fs/ntfscomp.c: Likewise.
|
||||
+ * include/grub/ntfs.h: Likewise.
|
||||
+
|
||||
+2013-01-10 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
Support Apple FAT binaries on non-Apple platforms.
|
||||
|
||||
* include/grub/macho.h (GRUB_MACHO_FAT_EFI_MAGIC): New define.
|
||||
diff --git a/grub-core/fs/ntfs.c b/grub-core/fs/ntfs.c
|
||||
index 6004e1f..e7861d8 100644
|
||||
--- a/grub-core/fs/ntfs.c
|
||||
+++ b/grub-core/fs/ntfs.c
|
||||
@@ -55,10 +55,10 @@ u64at (void *ptr, grub_size_t ofs)
|
||||
grub_ntfscomp_func_t grub_ntfscomp_func;
|
||||
|
||||
static grub_err_t
|
||||
-fixup (char *buf, int len, const char *magic)
|
||||
+fixup (grub_uint8_t *buf, grub_size_t len, const grub_uint8_t *magic)
|
||||
{
|
||||
- int ss;
|
||||
- char *pu;
|
||||
+ grub_uint16_t ss;
|
||||
+ grub_uint8_t *pu;
|
||||
grub_uint16_t us;
|
||||
|
||||
COMPILE_TIME_ASSERT ((1 << GRUB_NTFS_BLK_SHR) == GRUB_DISK_SECTOR_SIZE);
|
||||
@@ -86,9 +86,9 @@ fixup (char *buf, int len, const char *magic)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static grub_err_t read_mft (struct grub_ntfs_data *data, char *buf,
|
||||
+static grub_err_t read_mft (struct grub_ntfs_data *data, grub_uint8_t *buf,
|
||||
grub_uint32_t mftno);
|
||||
-static grub_err_t read_attr (struct grub_ntfs_attr *at, char *dest,
|
||||
+static grub_err_t read_attr (struct grub_ntfs_attr *at, grub_uint8_t *dest,
|
||||
grub_disk_addr_t ofs, grub_size_t len,
|
||||
int cached,
|
||||
void
|
||||
@@ -97,7 +97,8 @@ static grub_err_t read_attr (struct grub_ntfs_attr *at, char *dest,
|
||||
unsigned offset,
|
||||
unsigned length));
|
||||
|
||||
-static grub_err_t read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
+static grub_err_t read_data (struct grub_ntfs_attr *at, grub_uint8_t *pa,
|
||||
+ grub_uint8_t *dest,
|
||||
grub_disk_addr_t ofs, grub_size_t len,
|
||||
int cached,
|
||||
void
|
||||
@@ -123,8 +124,8 @@ free_attr (struct grub_ntfs_attr *at)
|
||||
grub_free (at->sbuf);
|
||||
}
|
||||
|
||||
-static char *
|
||||
-find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
+static grub_uint8_t *
|
||||
+find_attr (struct grub_ntfs_attr *at, grub_uint8_t attr)
|
||||
{
|
||||
if (at->flags & GRUB_NTFS_AF_ALST)
|
||||
{
|
||||
@@ -133,9 +134,9 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
{
|
||||
at->attr_cur = at->attr_nxt;
|
||||
at->attr_nxt += u16at (at->attr_cur, 4);
|
||||
- if (((unsigned char) *at->attr_cur == attr) || (attr == 0))
|
||||
+ if ((*at->attr_cur == attr) || (attr == 0))
|
||||
{
|
||||
- char *new_pos;
|
||||
+ grub_uint8_t *new_pos;
|
||||
|
||||
if (at->flags & GRUB_NTFS_AF_MMFT)
|
||||
{
|
||||
@@ -148,7 +149,8 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
512, at->emft_buf + 512)))
|
||||
return NULL;
|
||||
|
||||
- if (fixup (at->emft_buf, at->mft->data->mft_size, "FILE"))
|
||||
+ if (fixup (at->emft_buf, at->mft->data->mft_size,
|
||||
+ (const grub_uint8_t *) "FILE"))
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
@@ -159,10 +161,9 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
}
|
||||
|
||||
new_pos = &at->emft_buf[u16at (at->emft_buf, 0x14)];
|
||||
- while ((unsigned char) *new_pos != 0xFF)
|
||||
+ while (*new_pos != 0xFF)
|
||||
{
|
||||
- if (((unsigned char) *new_pos ==
|
||||
- (unsigned char) *at->attr_cur)
|
||||
+ if ((*new_pos == *at->attr_cur)
|
||||
&& (u16at (new_pos, 0xE) == u16at (at->attr_cur, 0x18)))
|
||||
{
|
||||
return new_pos;
|
||||
@@ -178,18 +179,18 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
return NULL;
|
||||
}
|
||||
at->attr_cur = at->attr_nxt;
|
||||
- while ((unsigned char) *at->attr_cur != 0xFF)
|
||||
+ while (*at->attr_cur != 0xFF)
|
||||
{
|
||||
at->attr_nxt += u16at (at->attr_cur, 4);
|
||||
- if ((unsigned char) *at->attr_cur == GRUB_NTFS_AT_ATTRIBUTE_LIST)
|
||||
+ if (*at->attr_cur == GRUB_NTFS_AT_ATTRIBUTE_LIST)
|
||||
at->attr_end = at->attr_cur;
|
||||
- if (((unsigned char) *at->attr_cur == attr) || (attr == 0))
|
||||
+ if ((*at->attr_cur == attr) || (attr == 0))
|
||||
return at->attr_cur;
|
||||
at->attr_cur = at->attr_nxt;
|
||||
}
|
||||
if (at->attr_end)
|
||||
{
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
|
||||
at->emft_buf = grub_malloc (at->mft->data->mft_size << GRUB_NTFS_BLK_SHR);
|
||||
if (at->emft_buf == NULL)
|
||||
@@ -198,7 +199,7 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
pa = at->attr_end;
|
||||
if (pa[8])
|
||||
{
|
||||
- int n;
|
||||
+ grub_uint32_t n;
|
||||
|
||||
n = ((u32at (pa, 0x30) + GRUB_DISK_SECTOR_SIZE - 1)
|
||||
& (~(GRUB_DISK_SECTOR_SIZE - 1)));
|
||||
@@ -223,7 +224,7 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
at->flags |= GRUB_NTFS_AF_ALST;
|
||||
while (at->attr_nxt < at->attr_end)
|
||||
{
|
||||
- if (((unsigned char) *at->attr_nxt == attr) || (attr == 0))
|
||||
+ if ((*at->attr_nxt == attr) || (attr == 0))
|
||||
break;
|
||||
at->attr_nxt += u16at (at->attr_nxt, 4);
|
||||
}
|
||||
@@ -243,7 +244,7 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
pa = at->attr_nxt + u16at (pa, 4);
|
||||
while (pa < at->attr_end)
|
||||
{
|
||||
- if ((unsigned char) *pa != attr)
|
||||
+ if (*pa != attr)
|
||||
break;
|
||||
if (read_attr
|
||||
(at, pa + 0x10,
|
||||
@@ -260,11 +261,11 @@ find_attr (struct grub_ntfs_attr *at, unsigned char attr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
-static char *
|
||||
+static grub_uint8_t *
|
||||
locate_attr (struct grub_ntfs_attr *at, struct grub_ntfs_file *mft,
|
||||
- unsigned char attr)
|
||||
+ grub_uint8_t attr)
|
||||
{
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
|
||||
init_attr (at, mft);
|
||||
pa = find_attr (at, attr);
|
||||
@@ -288,8 +289,8 @@ locate_attr (struct grub_ntfs_attr *at, struct grub_ntfs_file *mft,
|
||||
return pa;
|
||||
}
|
||||
|
||||
-static char *
|
||||
-read_run_data (char *run, int nn, grub_disk_addr_t * val, int sig)
|
||||
+static grub_uint8_t *
|
||||
+read_run_data (grub_uint8_t *run, int nn, grub_disk_addr_t * val, int sig)
|
||||
{
|
||||
grub_disk_addr_t r, v;
|
||||
|
||||
@@ -298,7 +299,7 @@ read_run_data (char *run, int nn, grub_disk_addr_t * val, int sig)
|
||||
|
||||
while (nn--)
|
||||
{
|
||||
- r += v * (*(unsigned char *) (run++));
|
||||
+ r += v * (*(run++));
|
||||
v <<= 8;
|
||||
}
|
||||
|
||||
@@ -312,14 +313,14 @@ read_run_data (char *run, int nn, grub_disk_addr_t * val, int sig)
|
||||
grub_err_t
|
||||
grub_ntfs_read_run_list (struct grub_ntfs_rlst * ctx)
|
||||
{
|
||||
- int c1, c2;
|
||||
+ grub_uint8_t c1, c2;
|
||||
grub_disk_addr_t val;
|
||||
- char *run;
|
||||
+ grub_uint8_t *run;
|
||||
|
||||
run = ctx->cur_run;
|
||||
retry:
|
||||
- c1 = ((unsigned char) (*run) & 0xF);
|
||||
- c2 = ((unsigned char) (*run) >> 4);
|
||||
+ c1 = ((*run) & 0xF);
|
||||
+ c2 = ((*run) >> 4);
|
||||
if (!c1)
|
||||
{
|
||||
if ((ctx->attr) && (ctx->attr->flags & GRUB_NTFS_AF_ALST))
|
||||
@@ -330,7 +331,7 @@ retry:
|
||||
|
||||
save_hook = ctx->comp.disk->read_hook;
|
||||
ctx->comp.disk->read_hook = 0;
|
||||
- run = find_attr (ctx->attr, (unsigned char) *ctx->attr->attr_cur);
|
||||
+ run = find_attr (ctx->attr, *ctx->attr->attr_cur);
|
||||
ctx->comp.disk->read_hook = save_hook;
|
||||
if (run)
|
||||
{
|
||||
@@ -376,7 +377,7 @@ grub_ntfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t block)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
+read_data (struct grub_ntfs_attr *at, grub_uint8_t *pa, grub_uint8_t *dest,
|
||||
grub_disk_addr_t ofs, grub_size_t len, int cached,
|
||||
void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
|
||||
unsigned offset,
|
||||
@@ -479,7 +480,7 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
if (!(ctx->flags & GRUB_NTFS_RF_COMP))
|
||||
{
|
||||
grub_fshelp_read_file (ctx->comp.disk, (grub_fshelp_node_t) ctx,
|
||||
- read_hook, ofs, len, dest,
|
||||
+ read_hook, ofs, len, (char *) dest,
|
||||
grub_ntfs_read_block, ofs + len,
|
||||
ctx->comp.log_spc, 0);
|
||||
return grub_errno;
|
||||
@@ -492,23 +493,23 @@ read_data (struct grub_ntfs_attr *at, char *pa, char *dest,
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-read_attr (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
+read_attr (struct grub_ntfs_attr *at, grub_uint8_t *dest, grub_disk_addr_t ofs,
|
||||
grub_size_t len, int cached,
|
||||
void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
|
||||
unsigned offset,
|
||||
unsigned length))
|
||||
{
|
||||
- char *save_cur;
|
||||
- unsigned char attr;
|
||||
- char *pp;
|
||||
+ grub_uint8_t *save_cur;
|
||||
+ grub_uint8_t attr;
|
||||
+ grub_uint8_t *pp;
|
||||
grub_err_t ret;
|
||||
|
||||
save_cur = at->attr_cur;
|
||||
at->attr_nxt = at->attr_cur;
|
||||
- attr = (unsigned char) *at->attr_nxt;
|
||||
+ attr = *at->attr_nxt;
|
||||
if (at->flags & GRUB_NTFS_AF_ALST)
|
||||
{
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
grub_disk_addr_t vcn;
|
||||
|
||||
/* If compression is possible make sure that we include possible
|
||||
@@ -521,7 +522,7 @@ read_attr (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
pa = at->attr_nxt + u16at (at->attr_nxt, 4);
|
||||
while (pa < at->attr_end)
|
||||
{
|
||||
- if ((unsigned char) *pa != attr)
|
||||
+ if (*pa != attr)
|
||||
break;
|
||||
if (u32at (pa, 8) > vcn)
|
||||
break;
|
||||
@@ -541,13 +542,13 @@ read_attr (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-read_mft (struct grub_ntfs_data *data, char *buf, grub_uint32_t mftno)
|
||||
+read_mft (struct grub_ntfs_data *data, grub_uint8_t *buf, grub_uint32_t mftno)
|
||||
{
|
||||
if (read_attr
|
||||
(&data->mmft.attr, buf, mftno * ((grub_disk_addr_t) data->mft_size << GRUB_NTFS_BLK_SHR),
|
||||
data->mft_size << GRUB_NTFS_BLK_SHR, 0, 0))
|
||||
return grub_error (GRUB_ERR_BAD_FS, "read MFT 0x%X fails", mftno);
|
||||
- return fixup (buf, data->mft_size, "FILE");
|
||||
+ return fixup (buf, data->mft_size, (const grub_uint8_t *) "FILE");
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
@@ -570,7 +571,7 @@ init_file (struct grub_ntfs_file *mft, grub_uint32_t mftno)
|
||||
|
||||
if ((flag & 2) == 0)
|
||||
{
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
|
||||
pa = locate_attr (&mft->attr, mft, GRUB_NTFS_AT_DATA);
|
||||
if (pa == NULL)
|
||||
@@ -598,24 +599,25 @@ free_file (struct grub_ntfs_file *mft)
|
||||
}
|
||||
|
||||
static int
|
||||
-list_file (struct grub_ntfs_file *diro, char *pos,
|
||||
+list_file (struct grub_ntfs_file *diro, grub_uint8_t *pos,
|
||||
int NESTED_FUNC_ATTR
|
||||
(*hook) (const char *filename,
|
||||
enum grub_fshelp_filetype filetype,
|
||||
grub_fshelp_node_t node))
|
||||
{
|
||||
- char *np;
|
||||
+ grub_uint8_t *np;
|
||||
int ns;
|
||||
|
||||
while (1)
|
||||
{
|
||||
- char *ustr, namespace;
|
||||
+ grub_uint8_t namespace;
|
||||
+ char *ustr;
|
||||
|
||||
if (pos[0xC] & 2) /* end signature */
|
||||
break;
|
||||
|
||||
np = pos + 0x50;
|
||||
- ns = (unsigned char) *(np++);
|
||||
+ ns = *(np++);
|
||||
namespace = *(np++);
|
||||
|
||||
/*
|
||||
@@ -698,7 +700,7 @@ grub_ntfs_read_symlink (grub_fshelp_node_t node)
|
||||
char *buf, *end;
|
||||
grub_size_t len;
|
||||
grub_size_t i;
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
grub_size_t off;
|
||||
|
||||
mft = (struct grub_ntfs_file *) node;
|
||||
@@ -717,7 +719,7 @@ grub_ntfs_read_symlink (grub_fshelp_node_t node)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- err = read_attr (&mft->attr, (char *) &symdesc, 0,
|
||||
+ err = read_attr (&mft->attr, (grub_uint8_t *) &symdesc, 0,
|
||||
sizeof (struct symlink_descriptor), 1, 0);
|
||||
if (err)
|
||||
return NULL;
|
||||
@@ -744,7 +746,7 @@ grub_ntfs_read_symlink (grub_fshelp_node_t node)
|
||||
if (!buf16)
|
||||
return NULL;
|
||||
|
||||
- err = read_attr (&mft->attr, (char *) buf16, off, len, 1, 0);
|
||||
+ err = read_attr (&mft->attr, (grub_uint8_t *) buf16, off, len, 1, 0);
|
||||
if (err)
|
||||
return NULL;
|
||||
|
||||
@@ -781,9 +783,9 @@ grub_ntfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
enum grub_fshelp_filetype filetype,
|
||||
grub_fshelp_node_t node))
|
||||
{
|
||||
- unsigned char *bitmap;
|
||||
+ grub_uint8_t *bitmap;
|
||||
struct grub_ntfs_attr attr, *at;
|
||||
- char *cur_pos, *indx, *bmp;
|
||||
+ grub_uint8_t *cur_pos, *indx, *bmp;
|
||||
int ret = 0;
|
||||
grub_size_t bitmap_len;
|
||||
struct grub_ntfs_file *mft;
|
||||
@@ -834,7 +836,7 @@ grub_ntfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
{
|
||||
int ofs;
|
||||
|
||||
- ofs = (unsigned char) cur_pos[0xA];
|
||||
+ ofs = cur_pos[0xA];
|
||||
/* Namelen=4, Name="$I30" */
|
||||
if ((cur_pos[9] == 4) &&
|
||||
(u32at (cur_pos, ofs) == 0x490024) &&
|
||||
@@ -851,7 +853,7 @@ grub_ntfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
|
||||
if (is_resident)
|
||||
{
|
||||
- grub_memcpy (bmp, (char *) (cur_pos + u16at (cur_pos, 0x14)),
|
||||
+ grub_memcpy (bmp, cur_pos + u16at (cur_pos, 0x14),
|
||||
bitmap_len);
|
||||
}
|
||||
else
|
||||
@@ -865,7 +867,7 @@ grub_ntfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
bitmap_len = u32at (cur_pos, 0x30);
|
||||
}
|
||||
|
||||
- bitmap = (unsigned char *) bmp;
|
||||
+ bitmap = bmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -904,7 +906,8 @@ grub_ntfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
if ((read_attr
|
||||
(at, indx, i * (mft->data->idx_size << GRUB_NTFS_BLK_SHR),
|
||||
(mft->data->idx_size << GRUB_NTFS_BLK_SHR), 0, 0))
|
||||
- || (fixup (indx, mft->data->idx_size, "INDX")))
|
||||
+ || (fixup (indx, mft->data->idx_size,
|
||||
+ (const grub_uint8_t *) "INDX")))
|
||||
goto done;
|
||||
ret = list_file (mft, &indx[0x18 + u16at (indx, 0x18)], hook);
|
||||
if (ret)
|
||||
@@ -963,14 +966,15 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
for (data->log_spc = 0; (1U << data->log_spc) < spc; data->log_spc++);
|
||||
|
||||
if (bpb.clusters_per_mft > 0)
|
||||
- data->mft_size = bpb.clusters_per_mft << data->log_spc;
|
||||
+ data->mft_size = ((grub_disk_addr_t) bpb.clusters_per_mft) << data->log_spc;
|
||||
else
|
||||
- data->mft_size = 1 << (-bpb.clusters_per_mft - GRUB_NTFS_BLK_SHR);
|
||||
+ data->mft_size = 1ULL << (-bpb.clusters_per_mft - GRUB_NTFS_BLK_SHR);
|
||||
|
||||
if (bpb.clusters_per_index > 0)
|
||||
- data->idx_size = bpb.clusters_per_index << data->log_spc;
|
||||
+ data->idx_size = (((grub_disk_addr_t) bpb.clusters_per_index)
|
||||
+ << data->log_spc);
|
||||
else
|
||||
- data->idx_size = 1 << (-bpb.clusters_per_index - GRUB_NTFS_BLK_SHR);
|
||||
+ data->idx_size = 1ULL << (-bpb.clusters_per_index - GRUB_NTFS_BLK_SHR);
|
||||
|
||||
data->mft_start = grub_le_to_cpu64 (bpb.mft_lcn) << data->log_spc;
|
||||
|
||||
@@ -990,7 +994,7 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||
|
||||
data->uuid = grub_le_to_cpu64 (bpb.num_serial);
|
||||
|
||||
- if (fixup (data->mmft.buf, data->mft_size, "FILE"))
|
||||
+ if (fixup (data->mmft.buf, data->mft_size, (const grub_uint8_t *) "FILE"))
|
||||
goto fail;
|
||||
|
||||
if (!locate_attr (&data->mmft.attr, &data->mmft, GRUB_NTFS_AT_DATA))
|
||||
@@ -1130,7 +1134,8 @@ grub_ntfs_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
if (file->read_hook)
|
||||
mft->attr.save_pos = 1;
|
||||
|
||||
- read_attr (&mft->attr, buf, file->offset, len, 1, file->read_hook);
|
||||
+ read_attr (&mft->attr, (grub_uint8_t *) buf, file->offset, len, 1,
|
||||
+ file->read_hook);
|
||||
return (grub_errno) ? -1 : (grub_ssize_t) len;
|
||||
}
|
||||
|
||||
@@ -1158,7 +1163,7 @@ grub_ntfs_label (grub_device_t device, char **label)
|
||||
{
|
||||
struct grub_ntfs_data *data = 0;
|
||||
struct grub_fshelp_node *mft = 0;
|
||||
- char *pa;
|
||||
+ grub_uint8_t *pa;
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
@@ -1188,7 +1193,7 @@ grub_ntfs_label (grub_device_t device, char **label)
|
||||
pa = find_attr (&mft->attr, GRUB_NTFS_AT_VOLUME_NAME);
|
||||
if ((pa) && (pa[8] == 0) && (u32at (pa, 0x10)))
|
||||
{
|
||||
- char *buf;
|
||||
+ grub_uint8_t *buf;
|
||||
int len;
|
||||
|
||||
len = u32at (pa, 0x10) / 2;
|
||||
@@ -1199,10 +1204,9 @@ grub_ntfs_label (grub_device_t device, char **label)
|
||||
int i;
|
||||
for (i = 0; i < len; i++)
|
||||
tmp[i] = grub_le_to_cpu16 (grub_get_unaligned16 (pa + 2 * i));
|
||||
- *grub_utf16_to_utf8 ((grub_uint8_t *) buf, tmp, len) =
|
||||
- '\0';
|
||||
+ *grub_utf16_to_utf8 (buf, tmp, len) = '\0';
|
||||
}
|
||||
- *label = buf;
|
||||
+ *label = (char *) buf;
|
||||
}
|
||||
|
||||
fail:
|
||||
diff --git a/grub-core/fs/ntfscomp.c b/grub-core/fs/ntfscomp.c
|
||||
index 9b3b75d..02ea9fd 100644
|
||||
--- a/grub-core/fs/ntfscomp.c
|
||||
+++ b/grub-core/fs/ntfscomp.c
|
||||
@@ -45,21 +45,21 @@ decomp_nextvcn (struct grub_ntfs_comp *cc)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-decomp_getch (struct grub_ntfs_comp *cc, unsigned char *res)
|
||||
+decomp_getch (struct grub_ntfs_comp *cc, grub_uint8_t *res)
|
||||
{
|
||||
if (cc->cbuf_ofs >= (1U << (cc->log_spc + GRUB_NTFS_BLK_SHR)))
|
||||
{
|
||||
if (decomp_nextvcn (cc))
|
||||
return grub_errno;
|
||||
}
|
||||
- *res = (unsigned char) cc->cbuf[cc->cbuf_ofs++];
|
||||
+ *res = cc->cbuf[cc->cbuf_ofs++];
|
||||
return 0;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
decomp_get16 (struct grub_ntfs_comp *cc, grub_uint16_t * res)
|
||||
{
|
||||
- unsigned char c1 = 0, c2 = 0;
|
||||
+ grub_uint8_t c1 = 0, c2 = 0;
|
||||
|
||||
if ((decomp_getch (cc, &c1)) || (decomp_getch (cc, &c2)))
|
||||
return grub_errno;
|
||||
@@ -69,7 +69,7 @@ decomp_get16 (struct grub_ntfs_comp *cc, grub_uint16_t * res)
|
||||
|
||||
/* Decompress a block (4096 bytes) */
|
||||
static grub_err_t
|
||||
-decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
+decomp_block (struct grub_ntfs_comp *cc, grub_uint8_t *dest)
|
||||
{
|
||||
grub_uint16_t flg, cnt;
|
||||
|
||||
@@ -81,7 +81,7 @@ decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
{
|
||||
if (flg & 0x8000)
|
||||
{
|
||||
- unsigned char tag;
|
||||
+ grub_uint8_t tag;
|
||||
grub_uint32_t bits, copied;
|
||||
|
||||
bits = copied = tag = 0;
|
||||
@@ -136,7 +136,7 @@ decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
}
|
||||
else
|
||||
{
|
||||
- unsigned char ch = 0;
|
||||
+ grub_uint8_t ch = 0;
|
||||
|
||||
if (decomp_getch (cc, &ch))
|
||||
return grub_errno;
|
||||
@@ -177,7 +177,7 @@ decomp_block (struct grub_ntfs_comp *cc, char *dest)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
+read_block (struct grub_ntfs_rlst *ctx, grub_uint8_t *buf, grub_size_t num)
|
||||
{
|
||||
int log_cpb = GRUB_NTFS_LOG_COM_SEC - ctx->comp.log_spc;
|
||||
|
||||
@@ -289,7 +289,7 @@ read_block (struct grub_ntfs_rlst *ctx, char *buf, grub_size_t num)
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
-ntfscomp (struct grub_ntfs_attr *at, char *dest, grub_disk_addr_t ofs,
|
||||
+ntfscomp (struct grub_ntfs_attr *at, grub_uint8_t *dest, grub_disk_addr_t ofs,
|
||||
grub_size_t len, struct grub_ntfs_rlst *ctx, grub_disk_addr_t vcn)
|
||||
{
|
||||
grub_err_t ret;
|
||||
diff --git a/include/grub/ntfs.h b/include/grub/ntfs.h
|
||||
index cc28a01..37983c4 100644
|
||||
--- a/include/grub/ntfs.h
|
||||
+++ b/include/grub/ntfs.h
|
||||
@@ -132,17 +132,17 @@ struct grub_ntfs_bpb
|
||||
struct grub_ntfs_attr
|
||||
{
|
||||
int flags;
|
||||
- char *emft_buf, *edat_buf;
|
||||
- char *attr_cur, *attr_nxt, *attr_end;
|
||||
+ grub_uint8_t *emft_buf, *edat_buf;
|
||||
+ grub_uint8_t *attr_cur, *attr_nxt, *attr_end;
|
||||
grub_uint32_t save_pos;
|
||||
- char *sbuf;
|
||||
+ grub_uint8_t *sbuf;
|
||||
struct grub_ntfs_file *mft;
|
||||
};
|
||||
|
||||
struct grub_ntfs_file
|
||||
{
|
||||
struct grub_ntfs_data *data;
|
||||
- char *buf;
|
||||
+ grub_uint8_t *buf;
|
||||
grub_uint64_t size;
|
||||
grub_uint64_t mtime;
|
||||
grub_uint32_t ino;
|
||||
@@ -155,10 +155,10 @@ struct grub_ntfs_data
|
||||
struct grub_ntfs_file cmft;
|
||||
struct grub_ntfs_file mmft;
|
||||
grub_disk_t disk;
|
||||
- grub_uint32_t mft_size;
|
||||
- grub_uint32_t idx_size;
|
||||
+ grub_uint64_t mft_size;
|
||||
+ grub_uint64_t idx_size;
|
||||
int log_spc;
|
||||
- grub_uint32_t mft_start;
|
||||
+ grub_uint64_t mft_start;
|
||||
grub_uint64_t uuid;
|
||||
};
|
||||
|
||||
@@ -175,20 +175,20 @@ struct grub_ntfs_comp
|
||||
struct grub_ntfs_comp_table_element comp_table[16];
|
||||
grub_uint32_t cbuf_ofs, cbuf_vcn;
|
||||
int log_spc;
|
||||
- char *cbuf;
|
||||
+ grub_uint8_t *cbuf;
|
||||
};
|
||||
|
||||
struct grub_ntfs_rlst
|
||||
{
|
||||
int flags;
|
||||
grub_disk_addr_t target_vcn, curr_vcn, next_vcn, curr_lcn;
|
||||
- char *cur_run;
|
||||
+ grub_uint8_t *cur_run;
|
||||
struct grub_ntfs_attr *attr;
|
||||
struct grub_ntfs_comp comp;
|
||||
};
|
||||
|
||||
typedef grub_err_t (*grub_ntfscomp_func_t) (struct grub_ntfs_attr * at,
|
||||
- char *dest,
|
||||
+ grub_uint8_t *dest,
|
||||
grub_disk_addr_t ofs,
|
||||
grub_size_t len,
|
||||
struct grub_ntfs_rlst * ctx,
|
||||
--
|
||||
1.8.1.4
|
||||
|
44060
0094-Import-gcrypt-public-key-cryptography-and-implement-.patch
Normal file
44060
0094-Import-gcrypt-public-key-cryptography-and-implement-.patch
Normal file
File diff suppressed because it is too large
Load Diff
224
0095-Clean-up-dangling-references-to-grub-setup.patch
Normal file
224
0095-Clean-up-dangling-references-to-grub-setup.patch
Normal file
@ -0,0 +1,224 @@
|
||||
From d803dd359dd431cad08e95952f90c3f4f5acc9b7 Mon Sep 17 00:00:00 2001
|
||||
From: Colin Watson <cjwatson@ubuntu.com>
|
||||
Date: Sat, 12 Jan 2013 13:30:37 +0000
|
||||
Subject: [PATCH 095/364] Clean up dangling references to grub-setup. Fixes
|
||||
Ubuntu bug #1082045.
|
||||
|
||||
* docs/grub.texi (Images): Refer generally to grub-install rather
|
||||
than directly to grub-setup.
|
||||
(Installing GRUB using grub-install): Remove direct reference to
|
||||
grub-setup.
|
||||
(Device map) Likewise.
|
||||
(Invoking grub-install): Likewise.
|
||||
* docs/man/grub-install.h2m (SEE ALSO): Likewise.
|
||||
* docs/man/grub-mkimage.h2m (SEE ALSO): Likewise.
|
||||
* util/grub-install.in (usage): Likewise.
|
||||
|
||||
* util/bash-completion.d/grub-completion.bash.in (_grub_setup):
|
||||
Apply to grub-bios-setup and grub-sparc64-setup rather than to
|
||||
grub-setup.
|
||||
* configure.ac: Remove grub_setup output variable.
|
||||
|
||||
* docs/man/grub-bios-setup.h2m (NAME): Change name from grub-setup
|
||||
to grub-bios-setup.
|
||||
* docs/man/grub-sparc64-setup.h2m (NAME): Change name from
|
||||
grub-setup to grub-sparc64-setup.
|
||||
---
|
||||
ChangeLog | 25 +++++++++++++++++++++++++
|
||||
configure.ac | 1 -
|
||||
docs/grub.texi | 24 ++++++++++++------------
|
||||
docs/man/grub-bios-setup.h2m | 2 +-
|
||||
docs/man/grub-install.h2m | 1 -
|
||||
docs/man/grub-mkimage.h2m | 1 -
|
||||
docs/man/grub-sparc64-setup.h2m | 2 +-
|
||||
util/bash-completion.d/grub-completion.bash.in | 14 ++++++++++----
|
||||
util/grub-install.in | 4 ++--
|
||||
9 files changed, 51 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 22b18b1..61bf8e7 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,28 @@
|
||||
+2013-01-12 Colin Watson <cjwatson@ubuntu.com>
|
||||
+
|
||||
+ Clean up dangling references to grub-setup.
|
||||
+ Fixes Ubuntu bug #1082045.
|
||||
+
|
||||
+ * docs/grub.texi (Images): Refer generally to grub-install rather
|
||||
+ than directly to grub-setup.
|
||||
+ (Installing GRUB using grub-install): Remove direct reference to
|
||||
+ grub-setup.
|
||||
+ (Device map) Likewise.
|
||||
+ (Invoking grub-install): Likewise.
|
||||
+ * docs/man/grub-install.h2m (SEE ALSO): Likewise.
|
||||
+ * docs/man/grub-mkimage.h2m (SEE ALSO): Likewise.
|
||||
+ * util/grub-install.in (usage): Likewise.
|
||||
+
|
||||
+ * util/bash-completion.d/grub-completion.bash.in (_grub_setup):
|
||||
+ Apply to grub-bios-setup and grub-sparc64-setup rather than to
|
||||
+ grub-setup.
|
||||
+ * configure.ac: Remove grub_setup output variable.
|
||||
+
|
||||
+ * docs/man/grub-bios-setup.h2m (NAME): Change name from grub-setup
|
||||
+ to grub-bios-setup.
|
||||
+ * docs/man/grub-sparc64-setup.h2m (NAME): Change name from
|
||||
+ grub-setup to grub-sparc64-setup.
|
||||
+
|
||||
2013-01-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
Import gcrypt public-key cryptography and implement signature checking.
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index dde954e..92b550a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -64,7 +64,6 @@ grub_TRANSFORM([grub-probe])
|
||||
grub_TRANSFORM([grub-reboot])
|
||||
grub_TRANSFORM([grub-script-check])
|
||||
grub_TRANSFORM([grub-set-default])
|
||||
-grub_TRANSFORM([grub-setup])
|
||||
grub_TRANSFORM([grub-sparc64-setup])
|
||||
|
||||
# Optimization flag. Allow user to override.
|
||||
diff --git a/docs/grub.texi b/docs/grub.texi
|
||||
index a92bd96..e75bae9 100644
|
||||
--- a/docs/grub.texi
|
||||
+++ b/docs/grub.texi
|
||||
@@ -622,11 +622,11 @@ This install doesn't conflict with standard install as long as they are in
|
||||
separate directories.
|
||||
|
||||
Note that @command{grub-install} is actually just a shell script and the
|
||||
-real task is done by @command{grub-mkimage} and @command{grub-setup}.
|
||||
-Therefore, you may run those commands directly to install GRUB, without
|
||||
-using @command{grub-install}. Don't do that, however, unless you are very
|
||||
-familiar with the internals of GRUB. Installing a boot loader on a running
|
||||
-OS may be extremely dangerous.
|
||||
+real task is done by other tools such as @command{grub-mkimage}. Therefore,
|
||||
+you may run those commands directly to install GRUB, without using
|
||||
+@command{grub-install}. Don't do that, however, unless you are very familiar
|
||||
+with the internals of GRUB. Installing a boot loader on a running OS may be
|
||||
+extremely dangerous.
|
||||
|
||||
@node Making a GRUB bootable CD-ROM
|
||||
@section Making a GRUB bootable CD-ROM
|
||||
@@ -688,8 +688,8 @@ storage devices.
|
||||
@section The map between BIOS drives and OS devices
|
||||
|
||||
If the device map file exists, the GRUB utilities (@command{grub-probe},
|
||||
-@command{grub-setup}, etc.) read it to map BIOS drives to OS devices. This
|
||||
-file consists of lines like this:
|
||||
+etc.) read it to map BIOS drives to OS devices. This file consists of lines
|
||||
+like this:
|
||||
|
||||
@example
|
||||
(@var{device}) @var{file}
|
||||
@@ -2283,8 +2283,8 @@ bytes.
|
||||
The sole function of @file{boot.img} is to read the first sector of the core
|
||||
image from a local disk and jump to it. Because of the size restriction,
|
||||
@file{boot.img} cannot understand any file system structure, so
|
||||
-@command{grub-setup} hardcodes the location of the first sector of the core
|
||||
-image into @file{boot.img} when installing GRUB.
|
||||
+@command{grub-install} hardcodes the location of the first sector of the
|
||||
+core image into @file{boot.img} when installing GRUB.
|
||||
|
||||
@item diskboot.img
|
||||
This image is used as the first sector of the core image when booting from a
|
||||
@@ -4689,9 +4689,9 @@ GRUB.
|
||||
@node Invoking grub-install
|
||||
@chapter Invoking grub-install
|
||||
|
||||
-The program @command{grub-install} installs GRUB on your drive using
|
||||
-@command{grub-mkimage} and (on some platforms) @command{grub-setup}. You
|
||||
-must specify the device name on which you want to install GRUB, like this:
|
||||
+The program @command{grub-install} generates a GRUB core image using
|
||||
+@command{grub-mkimage} and installs it on your system. You must specify the
|
||||
+device name on which you want to install GRUB, like this:
|
||||
|
||||
@example
|
||||
grub-install @var{install_device}
|
||||
diff --git a/docs/man/grub-bios-setup.h2m b/docs/man/grub-bios-setup.h2m
|
||||
index eebe3ef..ac6ede3 100644
|
||||
--- a/docs/man/grub-bios-setup.h2m
|
||||
+++ b/docs/man/grub-bios-setup.h2m
|
||||
@@ -1,5 +1,5 @@
|
||||
[NAME]
|
||||
-grub-setup \- set up a device to boot using GRUB
|
||||
+grub-bios-setup \- set up a device to boot using GRUB
|
||||
[SEE ALSO]
|
||||
.BR grub-install (8),
|
||||
.BR grub-mkimage (1),
|
||||
diff --git a/docs/man/grub-install.h2m b/docs/man/grub-install.h2m
|
||||
index 2de371a..8cbbc87 100644
|
||||
--- a/docs/man/grub-install.h2m
|
||||
+++ b/docs/man/grub-install.h2m
|
||||
@@ -3,5 +3,4 @@ grub-install \- install GRUB to a device
|
||||
[SEE ALSO]
|
||||
.BR grub-mkconfig (8),
|
||||
.BR grub-mkimage (1),
|
||||
-.BR grub-setup (8),
|
||||
.BR grub-mkrescue (1)
|
||||
diff --git a/docs/man/grub-mkimage.h2m b/docs/man/grub-mkimage.h2m
|
||||
index ca08b0c..f0fbc2b 100644
|
||||
--- a/docs/man/grub-mkimage.h2m
|
||||
+++ b/docs/man/grub-mkimage.h2m
|
||||
@@ -2,6 +2,5 @@
|
||||
grub-mkimage \- make a bootable image of GRUB
|
||||
[SEE ALSO]
|
||||
.BR grub-install (8),
|
||||
-.BR grub-setup (8),
|
||||
.BR grub-mkrescue (1),
|
||||
.BR grub-mknetdir (8)
|
||||
diff --git a/docs/man/grub-sparc64-setup.h2m b/docs/man/grub-sparc64-setup.h2m
|
||||
index eebe3ef..18f803a 100644
|
||||
--- a/docs/man/grub-sparc64-setup.h2m
|
||||
+++ b/docs/man/grub-sparc64-setup.h2m
|
||||
@@ -1,5 +1,5 @@
|
||||
[NAME]
|
||||
-grub-setup \- set up a device to boot using GRUB
|
||||
+grub-sparc64-setup \- set up a device to boot using GRUB
|
||||
[SEE ALSO]
|
||||
.BR grub-install (8),
|
||||
.BR grub-mkimage (1),
|
||||
diff --git a/util/bash-completion.d/grub-completion.bash.in b/util/bash-completion.d/grub-completion.bash.in
|
||||
index 5f4b249..44bf135 100644
|
||||
--- a/util/bash-completion.d/grub-completion.bash.in
|
||||
+++ b/util/bash-completion.d/grub-completion.bash.in
|
||||
@@ -252,10 +252,16 @@ _grub_setup () {
|
||||
_filedir
|
||||
fi
|
||||
}
|
||||
-__grub_setup_program="@grub_setup@"
|
||||
-have ${__grub_setup_program} && \
|
||||
- complete -F _grub_setup -o filenames ${__grub_setup_program}
|
||||
-unset __grub_setup_program
|
||||
+
|
||||
+__grub_bios_setup_program="@grub_bios_setup@"
|
||||
+have ${__grub_bios_setup_program} && \
|
||||
+ complete -F _grub_setup -o filenames ${__grub_bios_setup_program}
|
||||
+unset __grub_bios_setup_program
|
||||
+
|
||||
+__grub_sparc64_setup_program="@grub_sparc64_setup@"
|
||||
+have ${__grub_sparc64_setup_program} && \
|
||||
+ complete -F _grub_setup -o filenames ${__grub_sparc64_setup_program}
|
||||
+unset __grub_sparc64_setup_program
|
||||
|
||||
|
||||
#
|
||||
diff --git a/util/grub-install.in b/util/grub-install.in
|
||||
index 218bbd9..aac27c7 100644
|
||||
--- a/util/grub-install.in
|
||||
+++ b/util/grub-install.in
|
||||
@@ -114,8 +114,8 @@ echo
|
||||
gettext "INSTALL_DEVICE must be system device filename.";echo
|
||||
echo
|
||||
|
||||
-gettext_printf "%s copies GRUB images into %s, and uses grub-setup
|
||||
-to install grub into the boot sector.\n" "$self" "$grubdir";echo
|
||||
+gettext_printf "%s copies GRUB images into %s. On some platforms, it
|
||||
+may also install GRUB into the boot sector.\n" "$self" "$grubdir";echo
|
||||
echo
|
||||
gettext "Report bugs to <bug-grub@gnu.org>."; echo
|
||||
}
|
||||
--
|
||||
1.8.1.4
|
||||
|
76
0096-autogen.sh-Do-not-try-to-delete-nonexistant-files.patch
Normal file
76
0096-autogen.sh-Do-not-try-to-delete-nonexistant-files.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From dc00947d8ca3b793b23cf0c3c3c3af24ae57e043 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 12 Jan 2013 16:14:09 +0100
|
||||
Subject: [PATCH 096/364] * autogen.sh: Do not try to delete nonexistant
|
||||
files. * util/import_gcrypth.sed: Add some missing header removals.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
autogen.sh | 12 +++++++++---
|
||||
util/import_gcrypth.sed | 11 ++++++++---
|
||||
3 files changed, 22 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 61bf8e7..d83d10a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,8 @@
|
||||
+2013-01-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * autogen.sh: Do not try to delete nonexistant files.
|
||||
+ * util/import_gcrypth.sed: Add some missing header removals.
|
||||
+
|
||||
2013-01-12 Colin Watson <cjwatson@ubuntu.com>
|
||||
|
||||
Clean up dangling references to grub-setup.
|
||||
diff --git a/autogen.sh b/autogen.sh
|
||||
index 5524083..7a4b5c8 100755
|
||||
--- a/autogen.sh
|
||||
+++ b/autogen.sh
|
||||
@@ -14,13 +14,19 @@ python util/import_unicode.py unicode/UnicodeData.txt unicode/BidiMirroring.txt
|
||||
echo "Importing libgcrypt..."
|
||||
python util/import_gcry.py grub-core/lib/libgcrypt/ grub-core
|
||||
sed -n -f util/import_gcrypth.sed < grub-core/lib/libgcrypt/src/gcrypt.h.in > include/grub/gcrypt/gcrypt.h
|
||||
-rm include/grub/gcrypt/g10lib.h
|
||||
-rm -rf grub-core/lib/libgcrypt-grub/mpi/generic
|
||||
+if [ -f include/grub/gcrypt/g10lib.h ]; then
|
||||
+ rm include/grub/gcrypt/g10lib.h
|
||||
+fi
|
||||
+if [ -d grub-core/lib/libgcrypt-grub/mpi/generic ]; then
|
||||
+ rm -rf grub-core/lib/libgcrypt-grub/mpi/generic
|
||||
+fi
|
||||
ln -s ../../../grub-core/lib/libgcrypt-grub/src/g10lib.h include/grub/gcrypt/g10lib.h
|
||||
cp -R grub-core/lib/libgcrypt/mpi/generic grub-core/lib/libgcrypt-grub/mpi/generic
|
||||
|
||||
for x in mpi-asm-defs.h mpih-add1.c mpih-sub1.c mpih-mul1.c mpih-mul2.c mpih-mul3.c mpih-lshift.c mpih-rshift.c; do
|
||||
- rm grub-core/lib/libgcrypt-grub/mpi/"$x"
|
||||
+ if [ -f grub-core/lib/libgcrypt-grub/mpi/"$x" ]; then
|
||||
+ rm grub-core/lib/libgcrypt-grub/mpi/"$x"
|
||||
+ fi
|
||||
ln -s generic/"$x" grub-core/lib/libgcrypt-grub/mpi/"$x"
|
||||
done
|
||||
|
||||
diff --git a/util/import_gcrypth.sed b/util/import_gcrypth.sed
|
||||
index 1cf31bd..dead8e6 100644
|
||||
--- a/util/import_gcrypth.sed
|
||||
+++ b/util/import_gcrypth.sed
|
||||
@@ -1,7 +1,12 @@
|
||||
/^#@INSERT_SYS_SELECT_H@/ d
|
||||
/^@FALLBACK_SOCKLEN_T@/ d
|
||||
-/^#include <stdlib\.h>/ d
|
||||
-/^#include <string\.h>/ d
|
||||
-/^#include <gpg-error\.h>/ s,#include <gpg-error.h>,#include <grub/gcrypt/gpg-error.h>,
|
||||
+/^# *include <stdlib\.h>/ d
|
||||
+/^# *include <string\.h>/ d
|
||||
+/^# *include <winsock2\.h>/ d
|
||||
+/^# *include <ws2tcpip\.h>/ d
|
||||
+/^# *include <time\.h>/ d
|
||||
+/^# *include <sys\/socket\.h>/ d
|
||||
+/^# *include <sys\/time\.h>/ d
|
||||
+/^# *include <gpg-error\.h>/ s,#include <gpg-error.h>,#include <grub/gcrypt/gpg-error.h>,
|
||||
s,_gcry_mpi_invm,gcry_mpi_invm,g
|
||||
p
|
||||
\ No newline at end of file
|
||||
--
|
||||
1.8.1.4
|
||||
|
1353
0097-Remove-autogenerated-files-from-VCS.patch
Normal file
1353
0097-Remove-autogenerated-files-from-VCS.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,41 @@
|
||||
From a718c4254f78dd96e9fa1c1e704ba337f8e009e0 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 12 Jan 2013 16:21:06 +0100
|
||||
Subject: [PATCH 098/364] * grub-core/lib/libgcrypt_wrap/mem.c
|
||||
(_gcry_log_bug): Make gcrypt bugs fatal.
|
||||
|
||||
---
|
||||
ChangeLog | 7 ++++++-
|
||||
grub-core/lib/libgcrypt_wrap/mem.c | 1 +
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index d83d10a..8a16591 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,4 +1,9 @@
|
||||
-2013-01-11 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
+ * grub-core/lib/libgcrypt_wrap/mem.c (_gcry_log_bug): Make gcrypt bugs
|
||||
+ fatal.
|
||||
+
|
||||
+2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* autogen.sh: Do not try to delete nonexistant files.
|
||||
* util/import_gcrypth.sed: Add some missing header removals.
|
||||
diff --git a/grub-core/lib/libgcrypt_wrap/mem.c b/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
index a9f0aff..64e8b62 100644
|
||||
--- a/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
+++ b/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
@@ -95,6 +95,7 @@ void _gcry_log_bug (const char *fmt, ...)
|
||||
grub_vprintf (fmt, args);
|
||||
va_end (args);
|
||||
grub_refresh ();
|
||||
+ grub_abort ();
|
||||
}
|
||||
|
||||
gcry_err_code_t
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -0,0 +1,90 @@
|
||||
From 076ad04668ff689b023166931edca6fa03530bf9 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 12 Jan 2013 16:27:37 +0100
|
||||
Subject: [PATCH 099/364] * grub-core/lib/libgcrypt_wrap/mem.c
|
||||
(gcry_x*alloc): Make out of memory fatal.
|
||||
|
||||
---
|
||||
ChangeLog | 5 +++++
|
||||
grub-core/lib/libgcrypt_wrap/mem.c | 30 +++++++++++++++++++++++++-----
|
||||
2 files changed, 30 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 8a16591..4ac0aa6 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,10 @@
|
||||
2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/lib/libgcrypt_wrap/mem.c (gcry_x*alloc): Make out of memory
|
||||
+ fatal.
|
||||
+
|
||||
+2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/lib/libgcrypt_wrap/mem.c (_gcry_log_bug): Make gcrypt bugs
|
||||
fatal.
|
||||
|
||||
diff --git a/grub-core/lib/libgcrypt_wrap/mem.c b/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
index 64e8b62..94f9d65 100644
|
||||
--- a/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
+++ b/grub-core/lib/libgcrypt_wrap/mem.c
|
||||
@@ -35,31 +35,51 @@ gcry_is_secure (const void *a __attribute__ ((unused)))
|
||||
void *
|
||||
gcry_xcalloc (size_t n, size_t m)
|
||||
{
|
||||
- return grub_zalloc (n * m);
|
||||
+ void *ret;
|
||||
+ ret = grub_zalloc (n * m);
|
||||
+ if (!ret)
|
||||
+ grub_fatal ("gcry_xcalloc failed");
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void *
|
||||
gcry_xmalloc_secure (size_t n)
|
||||
{
|
||||
- return grub_malloc (n);
|
||||
+ void *ret;
|
||||
+ ret = grub_malloc (n);
|
||||
+ if (!ret)
|
||||
+ grub_fatal ("gcry_xmalloc failed");
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void *
|
||||
gcry_xcalloc_secure (size_t n, size_t m)
|
||||
{
|
||||
- return grub_zalloc (n * m);
|
||||
+ void *ret;
|
||||
+ ret = grub_zalloc (n * m);
|
||||
+ if (!ret)
|
||||
+ grub_fatal ("gcry_xcalloc failed");
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void *
|
||||
gcry_xmalloc (size_t n)
|
||||
{
|
||||
- return grub_malloc (n);
|
||||
+ void *ret;
|
||||
+ ret = grub_malloc (n);
|
||||
+ if (!ret)
|
||||
+ grub_fatal ("gcry_xmalloc failed");
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void *
|
||||
gcry_xrealloc (void *a, size_t n)
|
||||
{
|
||||
- return grub_realloc (a, n);
|
||||
+ void *ret;
|
||||
+ ret = grub_realloc (a, n);
|
||||
+ if (!ret)
|
||||
+ grub_fatal ("gcry_xrealloc failed");
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
void
|
||||
--
|
||||
1.8.1.4
|
||||
|
351
0100-grub-core-commands-verify.c-Mark-messages-for-transl.patch
Normal file
351
0100-grub-core-commands-verify.c-Mark-messages-for-transl.patch
Normal file
@ -0,0 +1,351 @@
|
||||
From 3db3ccbf0ad7a5c4593f94ea9660552ab82f6f08 Mon Sep 17 00:00:00 2001
|
||||
From: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com>
|
||||
Date: Sat, 12 Jan 2013 16:31:17 +0100
|
||||
Subject: [PATCH 100/364] * grub-core/commands/verify.c: Mark messages
|
||||
for translating.
|
||||
|
||||
---
|
||||
ChangeLog | 4 ++
|
||||
grub-core/commands/verify.c | 93 +++++++++++++++++++++++----------------------
|
||||
2 files changed, 52 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 4ac0aa6..b527f7a 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,5 +1,9 @@
|
||||
2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
+ * grub-core/commands/verify.c: Mark messages for translating.
|
||||
+
|
||||
+2013-01-12 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
+
|
||||
* grub-core/lib/libgcrypt_wrap/mem.c (gcry_x*alloc): Make out of memory
|
||||
fatal.
|
||||
|
||||
diff --git a/grub-core/commands/verify.c b/grub-core/commands/verify.c
|
||||
index 415e4bf..66a027f 100644
|
||||
--- a/grub-core/commands/verify.c
|
||||
+++ b/grub-core/commands/verify.c
|
||||
@@ -53,7 +53,8 @@ read_packet_header (grub_file_t sig, grub_uint8_t *out_type, grub_size_t *len)
|
||||
default:
|
||||
if (grub_errno)
|
||||
return grub_errno;
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ /* TRANSLATORS: it's about GNUPG signatures. */
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
}
|
||||
|
||||
if (type == 0)
|
||||
@@ -63,12 +64,12 @@ read_packet_header (grub_file_t sig, grub_uint8_t *out_type, grub_size_t *len)
|
||||
}
|
||||
|
||||
if (!(type & 0x80))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
if (type & 0x40)
|
||||
{
|
||||
*out_type = (type & 0x3f);
|
||||
if (grub_file_read (sig, &l, sizeof (l)) != 1)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
if (l < 192)
|
||||
{
|
||||
*len = l;
|
||||
@@ -78,39 +79,39 @@ read_packet_header (grub_file_t sig, grub_uint8_t *out_type, grub_size_t *len)
|
||||
{
|
||||
*len = (l - 192) << 8;
|
||||
if (grub_file_read (sig, &l, sizeof (l)) != 1)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
*len |= l;
|
||||
return 0;
|
||||
}
|
||||
if (l == 255)
|
||||
{
|
||||
if (grub_file_read (sig, &l32, sizeof (l32)) != sizeof (l32))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
*len = grub_be_to_cpu32 (l32);
|
||||
return 0;
|
||||
}
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
}
|
||||
*out_type = ((type >> 2) & 0xf);
|
||||
switch (type & 0x3)
|
||||
{
|
||||
case 0:
|
||||
if (grub_file_read (sig, &l, sizeof (l)) != sizeof (l))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
*len = l;
|
||||
return 0;
|
||||
case 1:
|
||||
if (grub_file_read (sig, &l16, sizeof (l16)) != sizeof (l16))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
*len = grub_be_to_cpu16 (l16);
|
||||
return 0;
|
||||
case 2:
|
||||
if (grub_file_read (sig, &l32, sizeof (l32)) != sizeof (l32))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
*len = grub_be_to_cpu32 (l32);
|
||||
return 0;
|
||||
}
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
}
|
||||
|
||||
struct signature_v4_header
|
||||
@@ -210,7 +211,7 @@ grub_load_public_key (grub_file_t f)
|
||||
|
||||
if (grub_file_read (f, &v, sizeof (v)) != sizeof (v))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -218,12 +219,12 @@ grub_load_public_key (grub_file_t f)
|
||||
|
||||
if (v != 4)
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
if (grub_file_read (f, &creation_time, sizeof (creation_time)) != sizeof (creation_time))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -231,7 +232,7 @@ grub_load_public_key (grub_file_t f)
|
||||
|
||||
if (grub_file_read (f, &pk, sizeof (pk)) != sizeof (pk))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -263,19 +264,19 @@ grub_load_public_key (grub_file_t f)
|
||||
grub_uint8_t buffer[4096];
|
||||
if (grub_file_read (f, &l, sizeof (l)) != sizeof (l))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
lb = (grub_be_to_cpu16 (l) + 7) / 8;
|
||||
if (lb > sizeof (buffer) - sizeof (grub_uint16_t))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
if (grub_file_read (f, buffer + sizeof (grub_uint16_t), lb) != (grub_ssize_t) lb)
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
grub_memcpy (buffer, &l, sizeof (l));
|
||||
@@ -285,7 +286,7 @@ grub_load_public_key (grub_file_t f)
|
||||
if (gcry_mpi_scan (&sk->mpis[i], GCRYMPI_FMT_PGP,
|
||||
buffer, lb + sizeof (grub_uint16_t), 0))
|
||||
{
|
||||
- grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@@ -357,29 +358,29 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
return err;
|
||||
|
||||
if (type != 0x2)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
if (grub_file_read (sig, &v, sizeof (v)) != sizeof (v))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
if (v != 4)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
if (grub_file_read (sig, &v4, sizeof (v4)) != sizeof (v4))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
h = v4.hash;
|
||||
t = v4.type;
|
||||
pk = v4.pkeyalgo;
|
||||
|
||||
if (t != 0)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
if (h >= ARRAY_SIZE (hashes) || hashes[h] == NULL)
|
||||
return grub_error (GRUB_ERR_BAD_SIGNATURE, "unknown hash");
|
||||
|
||||
if (pk >= ARRAY_SIZE (pkalgos) || pkalgos[pk].name == NULL)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
hash = grub_crypto_lookup_md_by_name (hashes[h]);
|
||||
if (!hash)
|
||||
@@ -420,7 +421,7 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
grub_uint8_t readbuf[4096];
|
||||
r = grub_file_read (sig, readbuf, rem < (grub_ssize_t) sizeof (readbuf) ? rem : (grub_ssize_t) sizeof (readbuf));
|
||||
if (r < 0)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
if (r == 0)
|
||||
break;
|
||||
hash->write (context, readbuf, r);
|
||||
@@ -432,17 +433,17 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
hash->write (context, &headlen, sizeof (headlen));
|
||||
r = grub_file_read (sig, &unhashed_sub, sizeof (unhashed_sub));
|
||||
if (r != sizeof (unhashed_sub))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
{
|
||||
grub_uint8_t readbuf[4096];
|
||||
grub_uint8_t *ptr;
|
||||
grub_uint32_t l;
|
||||
rem = grub_be_to_cpu16 (unhashed_sub);
|
||||
if (rem > (int) sizeof (readbuf))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
r = grub_file_read (sig, readbuf, rem);
|
||||
if (r != rem)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
for (ptr = readbuf; ptr < readbuf + rem; ptr += l)
|
||||
{
|
||||
if (*ptr < 192)
|
||||
@@ -473,9 +474,9 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
hval = hash->read (context);
|
||||
|
||||
if (grub_file_read (sig, hash_start, sizeof (hash_start)) != sizeof (hash_start))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
if (grub_memcmp (hval, hash_start, sizeof (hash_start)) != 0)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
|
||||
grub_dprintf ("crypt", "@ %x\n", (int)grub_file_tell (sig));
|
||||
|
||||
@@ -486,22 +487,22 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
grub_uint8_t buffer[4096];
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
if (grub_file_read (sig, &l, sizeof (l)) != sizeof (l))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
lb = (grub_be_to_cpu16 (l) + 7) / 8;
|
||||
grub_dprintf ("crypt", "l = 0x%04x\n", grub_be_to_cpu16 (l));
|
||||
if (lb > sizeof (buffer) - sizeof (grub_uint16_t))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
if (grub_file_read (sig, buffer + sizeof (grub_uint16_t), lb) != (grub_ssize_t) lb)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
grub_memcpy (buffer, &l, sizeof (l));
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
|
||||
if (gcry_mpi_scan (&mpis[i], GCRYMPI_FMT_PGP,
|
||||
buffer, lb + sizeof (grub_uint16_t), 0))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
}
|
||||
|
||||
@@ -510,17 +511,18 @@ grub_verify_signature (grub_file_t f, grub_file_t sig,
|
||||
else
|
||||
sk = grub_crypto_pk_locate_subkey_in_trustdb (keyid);
|
||||
if (!sk)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "key not found");
|
||||
+ /* TRANSLATORS: %08x is 32-bit key id. */
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("public key %08x not found"), keyid);
|
||||
|
||||
int nbits = gcry_mpi_get_nbits (sk->mpis[1]);
|
||||
grub_dprintf ("crypt", "must be %d bits got %d bits\n", (int)nbits, (int)(8 * hash->mdlen));
|
||||
|
||||
if (gcry_mpi_scan (&hmpi, GCRYMPI_FMT_USG, hval, nbits / 8 < (int) hash->mdlen ? nbits / 8 : (int) hash->mdlen, 0))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
if (!grub_crypto_pk_dsa)
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "DSA module is not loaded");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("module `%s' isn't loaded"), "gcry_dsa");
|
||||
if (grub_crypto_pk_dsa->verify (0, hmpi, mpis, sk->mpis, 0, 0))
|
||||
- return grub_error (GRUB_ERR_BAD_SIGNATURE, "bad signature");
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("bad signature"));
|
||||
}
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
@@ -534,7 +536,7 @@ grub_cmd_trust (grub_command_t cmd __attribute__ ((unused)),
|
||||
struct grub_public_key *pk = NULL;
|
||||
|
||||
if (argc < 1)
|
||||
- return grub_error (GRUB_ERR_BAD_ARGUMENT, "one argument required");
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||
|
||||
grub_file_filter_disable_all ();
|
||||
pkf = grub_file_open (args[0]);
|
||||
@@ -563,7 +565,7 @@ grub_cmd_distrust (grub_command_t cmd __attribute__ ((unused)),
|
||||
struct grub_public_subkey *sk;
|
||||
|
||||
if (argc < 1)
|
||||
- return grub_error (GRUB_ERR_BAD_ARGUMENT, "one argument required");
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||
keyid = grub_strtoull (args[0], 0, 16);
|
||||
if (grub_errno)
|
||||
return grub_errno;
|
||||
@@ -582,7 +584,8 @@ grub_cmd_distrust (grub_command_t cmd __attribute__ ((unused)),
|
||||
*pkey = next;
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
- return grub_error (GRUB_ERR_BAD_ARGUMENT, "key %08x not found", keyid);
|
||||
+ /* TRANSLATORS: %08x is 32-bit key id. */
|
||||
+ return grub_error (GRUB_ERR_BAD_SIGNATURE, N_("public key %08x not found"), keyid);
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
@@ -596,7 +599,7 @@ grub_cmd_verify_signature (grub_command_t cmd __attribute__ ((unused)),
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
|
||||
if (argc < 2)
|
||||
- return grub_error (GRUB_ERR_BAD_ARGUMENT, "two arguments required");
|
||||
+ return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("two arguments expected"));
|
||||
|
||||
grub_dprintf ("crypt", "alive\n");
|
||||
|
||||
@@ -744,13 +747,13 @@ GRUB_MOD_INIT(verify)
|
||||
grub_env_set ("check_signatures", grub_pk_trusted ? "enforce" : "no");
|
||||
|
||||
cmd = grub_register_command ("verify_detached", grub_cmd_verify_signature,
|
||||
- "FILE SIGFILE [PKFILE]",
|
||||
+ N_("FILE SIGNATURE_FILE [PUBKEY_FILE]"),
|
||||
N_("Verify detached signature."));
|
||||
cmd_trust = grub_register_command ("trust", grub_cmd_trust,
|
||||
- "PKFILE",
|
||||
+ N_("PUBKEY_FILE"),
|
||||
N_("Add PKFILE to trusted keys."));
|
||||
cmd_distrust = grub_register_command ("distrust", grub_cmd_distrust,
|
||||
- "KEYID",
|
||||
+ N_("PUBKEY_ID"),
|
||||
N_("Remove KEYID from trusted keys."));
|
||||
}
|
||||
|
||||
--
|
||||
1.8.1.4
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user