forked from pool/grub2
Accepting request 228382 from home:michael-chang:SLE12
- add Recommends to libburnia-tools (bnc#812681) - add missing SUSE_BTRFS_SNAPSHOT_BOOTING.patch in changelog - Document peculiarities of s390 terminals in 'README.ibm3215'. - grub2-s390x-02-kexec-module-added-to-emu.patch: * Improve exit message for dry-run (and cleanup). - grub2-s390x-03-output-7-bit-ascii.patch: * Fix handling of '^C' and solitary '^'. (bnc#867258) * Exit properly with mode-reset. - grub2-s390x-04-grub2-install.patch: * Install helper script as '/usr/sbin/grub2-zipl-setup'. * Console mode may be controlled from config file. (bnc#868909) - grub2-s390x-05-grub2-mkconfig.patch: * Add 'conmode=' to command-line, if configured. (bnc#868909) * add SUSE_BTRFS_SNAPSHOT_BOOTING.patch * first usable interface on 3215 from initrd. (bnc#867258) - reflect s390x-specifics in '/etc/default/grub'. (fate#314213) * use less CPU cycles waiting for user. (bnc#868650) * first usable interface on 3215. (bnc#867258) re-zipl despite minor issues. (bnc#866867, fate#314213) to appropriate sub-packages. (fate#314213) OBS-URL: https://build.opensuse.org/request/show/228382 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=82
This commit is contained in:
parent
b05b350108
commit
f679e1b059
59
README.ibm3215
Normal file
59
README.ibm3215
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
[Disclaimer: I do not know enough (by far) about the inner workings
|
||||||
|
and secrets of these printer-consoles, so please correct me/send advice,
|
||||||
|
if there are better solutions!]
|
||||||
|
|
||||||
|
On 3215/327x things are dramatically different from everywhere else.
|
||||||
|
You'll have to live with some severe limitations:
|
||||||
|
|
||||||
|
0. Interactivity is quite limited. You'll need to "blindly" type,
|
||||||
|
most of the time, to see the effect only on "submission" ([Enter]).
|
||||||
|
In edit and shell mode it's sometimes useful to insert underlines
|
||||||
|
just to see, where the curser (AKA "point") is. (BTW, 3270 is _much_
|
||||||
|
better at displaying/refreshing grub2 screens than 3215.)
|
||||||
|
1. No cursor-movement-, alt-, meta-, and control-keys (like [ESC]).
|
||||||
|
2. To work around the lack of control-keys, the "[^][C]-sends-interrupt"-
|
||||||
|
trick is extended to translate sequences of caret followed by character
|
||||||
|
to the respective control-character. In the following this sequence
|
||||||
|
of two keystrokes is referred to as '^c' instead of that somewhat balky
|
||||||
|
[^][C]. Thus an [ESC] keypress can be generated with '^[' ("caret"
|
||||||
|
followed by "opening square bracket").
|
||||||
|
3. If a caret itself is needed, send one on it's own (i.e. a solitary [^]
|
||||||
|
followed by [Enter] -- or use '^^'.
|
||||||
|
4. No '[Enter]', because it can't be avoided on *any* input.
|
||||||
|
5. If you still need one to arrive at the application, you may either
|
||||||
|
press '[Enter]' *twice* (one empty line, sort of) or add '^j' to your
|
||||||
|
input. In menu mode '^f' works as well (see below). But using "empty
|
||||||
|
lines" does now work very reliably, so explicit control sequences
|
||||||
|
are to be preferred. This has the additional advantage, that combined
|
||||||
|
sequences can be sent, e.g. to exit from 'grub2-emu' without doing
|
||||||
|
anything, you can simply type 'cexit^j' and submit that with [Enter].
|
||||||
|
|
||||||
|
Common Substitutes:
|
||||||
|
'^j'` => [Enter] "engage"
|
||||||
|
'^[' => [ESC] "abort" / return to previous "state"
|
||||||
|
'^i' => [TAB] try completion (in edit & shell mode)
|
||||||
|
|
||||||
|
Available Keys in Menu Mode:
|
||||||
|
'^a' first entry '^e' last entry
|
||||||
|
'^p' previous entry '^n' next entry
|
||||||
|
'^g' previous page '^c' next page
|
||||||
|
'^f' boot selected entry/enter sub-menu (same as '^j')
|
||||||
|
'e' edit selected entry 'c' enter grub-shell
|
||||||
|
|
||||||
|
Available Keys in Edit Mode:
|
||||||
|
'^p' previous line '^n' next line
|
||||||
|
'^b' backward char '^f' forward char
|
||||||
|
'^a' beginning of line '^e' end of line
|
||||||
|
'^h' backspace '^d' delete
|
||||||
|
'^k' kill (to end of) line '^y' yank
|
||||||
|
'^o' open line '^l' refresh screen
|
||||||
|
'^x' boot entry '^c' enter grub-shell
|
||||||
|
|
||||||
|
Availble Keys on Command Line Mode:
|
||||||
|
'^p' previous command '^n' next command (from history)
|
||||||
|
'^a' beginning of line '^e' end of line
|
||||||
|
'^b' backward char '^f' forward char
|
||||||
|
'^h' backspace '^d' delete
|
||||||
|
'^k' kill (to end of) line '^u' discard line
|
||||||
|
'^y' yank
|
||||||
|
|
@ -7,7 +7,7 @@
|
|||||||
include/grub/emu/exec.h | 4
|
include/grub/emu/exec.h | 4
|
||||||
include/grub/emu/hostfile.h | 3
|
include/grub/emu/hostfile.h | 3
|
||||||
include/grub/emu/misc.h | 3
|
include/grub/emu/misc.h | 3
|
||||||
8 files changed, 205 insertions(+), 3 deletions(-)
|
8 files changed, 204 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
--- a/grub-core/Makefile.core.def
|
--- a/grub-core/Makefile.core.def
|
||||||
+++ b/grub-core/Makefile.core.def
|
+++ b/grub-core/Makefile.core.def
|
||||||
@ -93,7 +93,7 @@
|
|||||||
+ return rc;
|
+ return rc;
|
||||||
+ }
|
+ }
|
||||||
+ if (kexecute < 1)
|
+ if (kexecute < 1)
|
||||||
+ grub_fatal (N_("Use '--kexec' if you really want to load&restart from here."));
|
+ grub_fatal (N_("Use '"PACKAGE"-emu --kexec' to force a system restart."));
|
||||||
+
|
+
|
||||||
+ grub_printf("Performing 'systemctl kexec' (%s) ",
|
+ grub_printf("Performing 'systemctl kexec' (%s) ",
|
||||||
+ (kexecute==1) ? "do-or-die" : "just-in-case");
|
+ (kexecute==1) ? "do-or-die" : "just-in-case");
|
||||||
@ -277,15 +277,30 @@
|
|||||||
|
|
||||||
void
|
void
|
||||||
grub_util_warn (const char *fmt, ...)
|
grub_util_warn (const char *fmt, ...)
|
||||||
@@ -81,9 +82,23 @@ grub_util_error (const char *fmt, ...)
|
@@ -81,7 +82,7 @@ grub_util_error (const char *fmt, ...)
|
||||||
vfprintf (stderr, fmt, ap);
|
vfprintf (stderr, fmt, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
fprintf (stderr, ".\n");
|
fprintf (stderr, ".\n");
|
||||||
|
- exit (1);
|
||||||
+ grub_exit ();
|
+ grub_exit ();
|
||||||
+ /* NOTREACHED but needed to get small diff... */
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
@@ -138,6 +139,9 @@ xasprintf (const char *fmt, ...)
|
||||||
|
void
|
||||||
|
grub_exit (void)
|
||||||
|
{
|
||||||
|
+#if defined (GRUB_KERNEL)
|
||||||
|
+ grub_reboot();
|
||||||
|
+#endif
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -150,3 +154,15 @@ grub_get_time_ms (void)
|
||||||
|
|
||||||
|
return (tv.tv_sec * 1000 + tv.tv_usec / 1000);
|
||||||
|
}
|
||||||
|
+
|
||||||
+void
|
+void
|
||||||
+grub_util_set_kexecute(void)
|
+grub_util_set_kexecute(void)
|
||||||
+{
|
+{
|
||||||
@ -297,20 +312,6 @@
|
|||||||
+{
|
+{
|
||||||
+ return kexecute;
|
+ return kexecute;
|
||||||
+}
|
+}
|
||||||
+
|
|
||||||
void *
|
|
||||||
xmalloc (grub_size_t size)
|
|
||||||
{
|
|
||||||
@@ -138,6 +153,9 @@ xasprintf (const char *fmt, ...)
|
|
||||||
void
|
|
||||||
grub_exit (void)
|
|
||||||
{
|
|
||||||
+#if defined (GRUB_KERNEL)
|
|
||||||
+ grub_reboot();
|
|
||||||
+#endif
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
--- a/include/grub/emu/misc.h
|
--- a/include/grub/emu/misc.h
|
||||||
+++ b/include/grub/emu/misc.h
|
+++ b/include/grub/emu/misc.h
|
||||||
@@ -59,6 +59,9 @@ void EXPORT_FUNC(grub_util_warn) (const
|
@@ -59,6 +59,9 @@ void EXPORT_FUNC(grub_util_warn) (const
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
---
|
---
|
||||||
grub-core/normal/menu_text.c | 43 ++++++-
|
grub-core/kern/emu/main.c | 8 +
|
||||||
|
grub-core/normal/menu_text.c | 54 ++++++++
|
||||||
grub-core/normal/term.c | 2
|
grub-core/normal/term.c | 2
|
||||||
grub-core/osdep/unix/emuconsole.c | 224 ++++++++++++++++++++++++++++++++++++--
|
grub-core/osdep/unix/emuconsole.c | 231 +++++++++++++++++++++++++++++++++++++-
|
||||||
3 files changed, 257 insertions(+), 12 deletions(-)
|
include/grub/term.h | 4
|
||||||
|
5 files changed, 287 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
--- a/grub-core/osdep/unix/emuconsole.c
|
--- a/grub-core/osdep/unix/emuconsole.c
|
||||||
+++ b/grub-core/osdep/unix/emuconsole.c
|
+++ b/grub-core/osdep/unix/emuconsole.c
|
||||||
@ -69,7 +71,7 @@
|
|||||||
|
|
||||||
actual = write (STDOUT_FILENO, &chr, 1);
|
actual = write (STDOUT_FILENO, &chr, 1);
|
||||||
if (actual < 1)
|
if (actual < 1)
|
||||||
@@ -60,20 +104,145 @@ put (struct grub_term_output *term __att
|
@@ -60,17 +104,147 @@ put (struct grub_term_output *term __att
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -86,17 +88,18 @@
|
|||||||
+ timeout.tv_sec = 0;
|
+ timeout.tv_sec = 0;
|
||||||
+ timeout.tv_usec = 500000;
|
+ timeout.tv_usec = 500000;
|
||||||
+ if ((sel=select (1, &readfds, (fd_set *)0, (fd_set *)0, &timeout)) <= 0)
|
+ if ((sel=select (1, &readfds, (fd_set *)0, (fd_set *)0, &timeout)) <= 0)
|
||||||
+ return -1;
|
+ {
|
||||||
|
+ if (sel < 0 && errno == EINTR)
|
||||||
|
+ return 0x03; /* '^C' */
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
actual = read (STDIN_FILENO, &c, 1);
|
actual = read (STDIN_FILENO, &c, 1);
|
||||||
- if (actual > 0)
|
if (actual > 0)
|
||||||
- return c;
|
return c;
|
||||||
- return -1;
|
return -1;
|
||||||
+ if (actual <= 0)
|
}
|
||||||
+ return -1;
|
|
||||||
+ return c;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int
|
+static int
|
||||||
+readkey_dumb (struct grub_term_input *term)
|
+readkey_dumb (struct grub_term_input *term)
|
||||||
+{
|
+{
|
||||||
@ -106,6 +109,12 @@
|
|||||||
+ c = readkey (term);
|
+ c = readkey (term);
|
||||||
+ if (c == (grub_uint8_t)-1)
|
+ if (c == (grub_uint8_t)-1)
|
||||||
+ return -1;
|
+ return -1;
|
||||||
|
+ if (p == '^' && c == '\n') /* solitary '^': use it! */
|
||||||
|
+ {
|
||||||
|
+ grub_uint8_t t = p;
|
||||||
|
+ p = c;
|
||||||
|
+ return t;
|
||||||
|
+ }
|
||||||
+ if ((c == '\n' || c == '^') && p != c)
|
+ if ((c == '\n' || c == '^') && p != c)
|
||||||
+ {
|
+ {
|
||||||
+ p = c;
|
+ p = c;
|
||||||
@ -206,20 +215,12 @@
|
|||||||
+
|
+
|
||||||
+ dprintf ("\n");
|
+ dprintf ("\n");
|
||||||
+ data->pos = pos;
|
+ data->pos = pos;
|
||||||
}
|
+}
|
||||||
|
+
|
||||||
static grub_err_t
|
static grub_err_t
|
||||||
grub_console_init_input (struct grub_term_input *term)
|
grub_console_init_input (struct grub_term_input *term)
|
||||||
{
|
{
|
||||||
+ if (console_mode > 3200)
|
@@ -105,7 +279,8 @@ static grub_err_t
|
||||||
+ {
|
|
||||||
+ new_tty = orig_tty;
|
|
||||||
+ return GRUB_ERR_NONE;
|
|
||||||
+ }
|
|
||||||
if (!saved_orig)
|
|
||||||
{
|
|
||||||
original_fl = fcntl (STDIN_FILENO, F_GETFL);
|
|
||||||
@@ -105,7 +274,8 @@ static grub_err_t
|
|
||||||
grub_console_init_output (struct grub_term_output *term)
|
grub_console_init_output (struct grub_term_output *term)
|
||||||
{
|
{
|
||||||
struct winsize size;
|
struct winsize size;
|
||||||
@ -229,7 +230,7 @@
|
|||||||
{
|
{
|
||||||
grub_console_terminfo_output.size.x = size.ws_col;
|
grub_console_terminfo_output.size.x = size.ws_col;
|
||||||
grub_console_terminfo_output.size.y = size.ws_row;
|
grub_console_terminfo_output.size.y = size.ws_row;
|
||||||
@@ -115,6 +285,8 @@ grub_console_init_output (struct grub_te
|
@@ -115,6 +290,8 @@ grub_console_init_output (struct grub_te
|
||||||
grub_console_terminfo_output.size.x = 80;
|
grub_console_terminfo_output.size.x = 80;
|
||||||
grub_console_terminfo_output.size.y = 24;
|
grub_console_terminfo_output.size.y = 24;
|
||||||
}
|
}
|
||||||
@ -238,7 +239,7 @@
|
|||||||
|
|
||||||
grub_terminfo_output_init (term);
|
grub_terminfo_output_init (term);
|
||||||
|
|
||||||
@@ -161,15 +333,53 @@ static struct grub_term_output grub_cons
|
@@ -161,24 +338,70 @@ static struct grub_term_output grub_cons
|
||||||
void
|
void
|
||||||
grub_console_init (void)
|
grub_console_init (void)
|
||||||
{
|
{
|
||||||
@ -267,6 +268,8 @@
|
|||||||
+ grub_console_term_output.flags |= GRUB_TERM_DUMB;
|
+ grub_console_term_output.flags |= GRUB_TERM_DUMB;
|
||||||
+ /* FALLTHROUGH */
|
+ /* FALLTHROUGH */
|
||||||
+ case 3270:
|
+ case 3270:
|
||||||
|
+ grub_console_term_output.flags |= GRUB_TERM_LINE;
|
||||||
|
+ grub_console_term_output.flags |= GRUB_TERM_NO_ECHO;
|
||||||
+ grub_console_terminfo_input.readkey = readkey_dumb;
|
+ grub_console_terminfo_input.readkey = readkey_dumb;
|
||||||
+ break;
|
+ break;
|
||||||
+ default:
|
+ default:
|
||||||
@ -289,10 +292,25 @@
|
|||||||
grub_terminfo_init ();
|
grub_terminfo_init ();
|
||||||
- grub_terminfo_output_register (&grub_console_term_output, "vt100-color");
|
- grub_terminfo_output_register (&grub_console_term_output, "vt100-color");
|
||||||
+ grub_terminfo_output_register (&grub_console_term_output,
|
+ grub_terminfo_output_register (&grub_console_term_output,
|
||||||
+ (grub_console_term_output.flags & GRUB_TERM_DUMB)?"dumb":"vt100-color");
|
+ (grub_console_term_output.flags & GRUB_TERM_DUMB) ? "dumb":"vt100-color");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
grub_console_fini (void)
|
||||||
|
{
|
||||||
|
+ dprintf( "grub_console_fini: %d\n", grub_console_term_output.flags & GRUB_TERM_DUMB);
|
||||||
|
if (saved_orig)
|
||||||
|
{
|
||||||
|
fcntl (STDIN_FILENO, F_SETFL, original_fl);
|
||||||
|
tcsetattr(STDIN_FILENO, TCSANOW, &orig_tty);
|
||||||
|
}
|
||||||
|
+ if (!(grub_console_term_output.flags & GRUB_TERM_DUMB))
|
||||||
|
+ {
|
||||||
|
+ const char clear[] = { 0x1b, 'c', 0 };
|
||||||
|
+ write (STDOUT_FILENO, clear, 2);
|
||||||
|
+ }
|
||||||
|
saved_orig = 0;
|
||||||
|
}
|
||||||
--- a/grub-core/normal/menu_text.c
|
--- a/grub-core/normal/menu_text.c
|
||||||
+++ b/grub-core/normal/menu_text.c
|
+++ b/grub-core/normal/menu_text.c
|
||||||
@@ -113,6 +113,7 @@ draw_border (struct grub_term_output *te
|
@@ -113,6 +113,7 @@ draw_border (struct grub_term_output *te
|
||||||
@ -312,19 +330,40 @@
|
|||||||
grub_term_gotoxy (term,
|
grub_term_gotoxy (term,
|
||||||
(struct grub_term_coordinate) { geo->first_entry_x - 1,
|
(struct grub_term_coordinate) { geo->first_entry_x - 1,
|
||||||
(geo->first_entry_y - 1 + geo->num_entries
|
(geo->first_entry_y - 1 + geo->num_entries
|
||||||
@@ -165,6 +166,11 @@ command-line or ESC to discard edits and
|
@@ -155,6 +156,15 @@ print_message (int nested, int edit, str
|
||||||
|
int ret = 0;
|
||||||
|
grub_term_setcolorstate (term, GRUB_TERM_COLOR_NORMAL);
|
||||||
|
|
||||||
|
+ if (edit && (term->flags & GRUB_TERM_LINE))
|
||||||
|
+ {
|
||||||
|
+ ret += grub_print_message_indented_real
|
||||||
|
+ (_("Minimum Emacs-like screen editing is supported. '^i' lists "
|
||||||
|
+ "completions. Type '^x' to boot, '^c' for a command-line "
|
||||||
|
+ "or '^[' to discard edits and return to the GRUB menu."),
|
||||||
|
+ STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
if (edit)
|
||||||
|
{
|
||||||
|
ret += grub_print_message_indented_real (_("Minimum Emacs-like screen editing is \
|
||||||
|
@@ -165,10 +175,15 @@ command-line or ESC to discard edits and
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
+#if defined(__s390x__hotkey)
|
+#if defined(__s390x__hotkey)
|
||||||
+ ret += grub_print_message_indented_real
|
+ ret += grub_print_message_indented_real
|
||||||
+ (_("Select a menu option by pressing the hotkey specified."),
|
+ (_("Select a menu option by pressing the hotkey specified. "),
|
||||||
+ STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run);
|
+ STANDARD_MARGIN, STANDARD_MARGIN, term, dry_run);
|
||||||
+#else
|
+#else
|
||||||
char *msg_translated;
|
char *msg_translated;
|
||||||
|
|
||||||
msg_translated = grub_xasprintf (_("Use the %C and %C keys to select which "
|
msg_translated = grub_xasprintf (_("Use the %C and %C keys to select which "
|
||||||
@@ -177,6 +183,7 @@ command-line or ESC to discard edits and
|
- "entry is highlighted."),
|
||||||
|
+ "entry is highlighted. "),
|
||||||
|
GRUB_UNICODE_UPARROW,
|
||||||
|
GRUB_UNICODE_DOWNARROW);
|
||||||
|
if (!msg_translated)
|
||||||
|
@@ -177,6 +192,7 @@ command-line or ESC to discard edits and
|
||||||
STANDARD_MARGIN, term, dry_run);
|
STANDARD_MARGIN, term, dry_run);
|
||||||
|
|
||||||
grub_free (msg_translated);
|
grub_free (msg_translated);
|
||||||
@ -332,7 +371,7 @@
|
|||||||
|
|
||||||
if (nested)
|
if (nested)
|
||||||
{
|
{
|
||||||
@@ -211,6 +218,10 @@ print_entry (int y, int highlight, grub_
|
@@ -211,6 +227,10 @@ print_entry (int y, int highlight, grub_
|
||||||
|
|
||||||
title = entry ? entry->title : "";
|
title = entry ? entry->title : "";
|
||||||
title_len = grub_strlen (title);
|
title_len = grub_strlen (title);
|
||||||
@ -343,7 +382,7 @@
|
|||||||
unicode_title = grub_malloc (title_len * sizeof (*unicode_title));
|
unicode_title = grub_malloc (title_len * sizeof (*unicode_title));
|
||||||
if (! unicode_title)
|
if (! unicode_title)
|
||||||
/* XXX How to show this error? */
|
/* XXX How to show this error? */
|
||||||
@@ -244,6 +255,14 @@ print_entry (int y, int highlight, grub_
|
@@ -244,6 +264,14 @@ print_entry (int y, int highlight, grub_
|
||||||
if (data->geo.num_entries > 1)
|
if (data->geo.num_entries > 1)
|
||||||
grub_putcode (highlight ? '*' : ' ', data->term);
|
grub_putcode (highlight ? '*' : ' ', data->term);
|
||||||
|
|
||||||
@ -358,7 +397,7 @@
|
|||||||
grub_print_ucs4_menu (unicode_title,
|
grub_print_ucs4_menu (unicode_title,
|
||||||
unicode_title + len,
|
unicode_title + len,
|
||||||
0,
|
0,
|
||||||
@@ -413,6 +432,8 @@ grub_menu_init_page (int nested, int edi
|
@@ -413,6 +441,8 @@ grub_menu_init_page (int nested, int edi
|
||||||
grub_term_highlight_color = old_color_highlight;
|
grub_term_highlight_color = old_color_highlight;
|
||||||
geo->timeout_y = geo->first_entry_y + geo->num_entries
|
geo->timeout_y = geo->first_entry_y + geo->num_entries
|
||||||
+ geo->border + empty_lines;
|
+ geo->border + empty_lines;
|
||||||
@ -367,7 +406,7 @@
|
|||||||
if (bottom_message)
|
if (bottom_message)
|
||||||
{
|
{
|
||||||
grub_term_gotoxy (term,
|
grub_term_gotoxy (term,
|
||||||
@@ -422,6 +443,8 @@ grub_menu_init_page (int nested, int edi
|
@@ -422,6 +452,8 @@ grub_menu_init_page (int nested, int edi
|
||||||
print_message (nested, edit, term, 0);
|
print_message (nested, edit, term, 0);
|
||||||
geo->timeout_y += msg_num_lines;
|
geo->timeout_y += msg_num_lines;
|
||||||
}
|
}
|
||||||
@ -376,7 +415,7 @@
|
|||||||
geo->right_margin = grub_term_width (term)
|
geo->right_margin = grub_term_width (term)
|
||||||
- geo->first_entry_x
|
- geo->first_entry_x
|
||||||
- geo->entry_width - 1;
|
- geo->entry_width - 1;
|
||||||
@@ -433,12 +456,19 @@ menu_text_print_timeout (int timeout, vo
|
@@ -433,12 +465,19 @@ menu_text_print_timeout (int timeout, vo
|
||||||
struct menu_viewer_data *data = dataptr;
|
struct menu_viewer_data *data = dataptr;
|
||||||
char *msg_translated = 0;
|
char *msg_translated = 0;
|
||||||
|
|
||||||
@ -398,7 +437,7 @@
|
|||||||
else
|
else
|
||||||
msg_translated = grub_xasprintf (_("The highlighted entry will be executed automatically in %ds."), timeout);
|
msg_translated = grub_xasprintf (_("The highlighted entry will be executed automatically in %ds."), timeout);
|
||||||
if (!msg_translated)
|
if (!msg_translated)
|
||||||
@@ -468,6 +498,8 @@ menu_text_print_timeout (int timeout, vo
|
@@ -468,6 +507,8 @@ menu_text_print_timeout (int timeout, vo
|
||||||
data->term);
|
data->term);
|
||||||
grub_free (msg_translated);
|
grub_free (msg_translated);
|
||||||
|
|
||||||
@ -407,7 +446,7 @@
|
|||||||
grub_term_gotoxy (data->term,
|
grub_term_gotoxy (data->term,
|
||||||
(struct grub_term_coordinate) {
|
(struct grub_term_coordinate) {
|
||||||
grub_term_cursor_x (&data->geo),
|
grub_term_cursor_x (&data->geo),
|
||||||
@@ -495,7 +527,7 @@ menu_text_set_chosen_entry (int entry, v
|
@@ -495,7 +536,7 @@ menu_text_set_chosen_entry (int entry, v
|
||||||
data->first = entry;
|
data->first = entry;
|
||||||
complete_redraw = 1;
|
complete_redraw = 1;
|
||||||
}
|
}
|
||||||
@ -416,7 +455,7 @@
|
|||||||
print_entries (data->menu, data);
|
print_entries (data->menu, data);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -525,6 +557,9 @@ menu_text_clear_timeout (void *dataptr)
|
@@ -525,6 +566,9 @@ menu_text_clear_timeout (void *dataptr)
|
||||||
struct menu_viewer_data *data = dataptr;
|
struct menu_viewer_data *data = dataptr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -437,3 +476,41 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
--- a/grub-core/kern/emu/main.c
|
||||||
|
+++ b/grub-core/kern/emu/main.c
|
||||||
|
@@ -174,6 +174,12 @@ static struct argp argp = {
|
||||||
|
NULL, help_filter, NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
+void
|
||||||
|
+ignore (int num __attribute__ ((unused)))
|
||||||
|
+{
|
||||||
|
+ return;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
|
||||||
|
@@ -212,7 +218,7 @@ main (int argc, char *argv[])
|
||||||
|
sleep (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
- signal (SIGINT, SIG_IGN);
|
||||||
|
+ signal (SIGINT, (sighandler_t) &ignore);
|
||||||
|
grub_console_init ();
|
||||||
|
grub_host_init ();
|
||||||
|
|
||||||
|
--- a/include/grub/term.h
|
||||||
|
+++ b/include/grub/term.h
|
||||||
|
@@ -99,8 +99,10 @@ grub_term_color_state;
|
||||||
|
#define GRUB_TERM_NO_EDIT (1 << 1)
|
||||||
|
/* Set when the terminal cannot do fancy things. */
|
||||||
|
#define GRUB_TERM_DUMB (1 << 2)
|
||||||
|
+/* Set when the terminal is line oriented. */
|
||||||
|
+#define GRUB_TERM_LINE (1 << 3)
|
||||||
|
/* Which encoding does terminal expect stream to be. */
|
||||||
|
-#define GRUB_TERM_CODE_TYPE_SHIFT 3
|
||||||
|
+#define GRUB_TERM_CODE_TYPE_SHIFT 4
|
||||||
|
#define GRUB_TERM_CODE_TYPE_MASK (7 << GRUB_TERM_CODE_TYPE_SHIFT)
|
||||||
|
/* Only ASCII characters accepted. */
|
||||||
|
#define GRUB_TERM_CODE_TYPE_ASCII (0 << GRUB_TERM_CODE_TYPE_SHIFT)
|
||||||
|
@ -1,23 +1,37 @@
|
|||||||
From: Raymund Will <rw@suse.com>
|
From: Raymund Will <rw@suse.com>
|
||||||
Subject: Allow s390x-emu to be "installed"
|
Subject: Allow s390x-emu to be "installed"
|
||||||
References: fate#314213
|
References: fate#314213, bnc#866867, bnc#868909
|
||||||
Patch-Mainline: no
|
Patch-Mainline: no
|
||||||
|
|
||||||
|
V2:
|
||||||
|
* try harder to find root filesystem (incl. subvol-handling).
|
||||||
|
* read /etc/sysconfig/bootloader as final fallback.
|
||||||
|
V3:
|
||||||
|
* refresh initrd by default, prefer running kernel and
|
||||||
|
re-zipl despite minor issues. [bnc#866867, fate#314213]
|
||||||
|
V4:
|
||||||
|
* append 'quiet splash=silent' for 'initgrub'-boot.
|
||||||
|
* properly check for dracut script during 'grub2-install'.
|
||||||
|
* move 'zipl2grub.pl' to '/usr/sbin/grub2-zipl-setup'.
|
||||||
|
V5:
|
||||||
|
* actually call 'grub2-zipl-setup' from 'grub2-install'.
|
||||||
|
* handle 'GRUB{,_EMU}_CONMODE'. [bnc#868909]
|
||||||
|
|
||||||
---
|
---
|
||||||
Makefile.util.def | 39 +++
|
Makefile.util.def | 39 +++
|
||||||
configure.ac | 9
|
configure.ac | 9
|
||||||
grub-core/Makefile.core.def | 7
|
grub-core/Makefile.core.def | 7
|
||||||
grub-core/osdep/basic/no_platform.c | 7
|
grub-core/osdep/basic/no_platform.c | 7
|
||||||
grub-core/osdep/unix/platform.c | 13 +
|
grub-core/osdep/unix/platform.c | 11 +
|
||||||
grub-core/osdep/windows/platform.c | 6
|
grub-core/osdep/windows/platform.c | 6
|
||||||
include/grub/util/install.h | 4
|
include/grub/util/install.h | 4
|
||||||
util/grub-install-common.c | 1
|
util/grub-install-common.c | 1
|
||||||
util/grub-install.c | 51 +++++
|
util/grub-install.c | 43 +++
|
||||||
util/s390x/dracut-grub2.sh.in | 69 ++++++
|
util/s390x/dracut-grub2.sh.in | 69 ++++++
|
||||||
util/s390x/dracut-module-setup.sh.in | 17 +
|
util/s390x/dracut-module-setup.sh.in | 17 +
|
||||||
util/s390x/zipl2grub.conf.in | 26 ++
|
util/s390x/zipl2grub.conf.in | 26 ++
|
||||||
util/s390x/zipl2grub.pl.in | 346 +++++++++++++++++++++++++++++++++++
|
util/s390x/zipl2grub.pl.in | 379 +++++++++++++++++++++++++++++++++++
|
||||||
13 files changed, 591 insertions(+), 4 deletions(-)
|
13 files changed, 614 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
--- a/Makefile.util.def
|
--- a/Makefile.util.def
|
||||||
+++ b/Makefile.util.def
|
+++ b/Makefile.util.def
|
||||||
@ -66,11 +80,11 @@ Patch-Mainline: no
|
|||||||
};
|
};
|
||||||
|
|
||||||
script = {
|
script = {
|
||||||
+ name = zipl2grub.pl;
|
+ name = grub-zipl-setup;
|
||||||
|
+ installdir = sbin;
|
||||||
+ common = util/s390x/zipl2grub.pl.in;
|
+ common = util/s390x/zipl2grub.pl.in;
|
||||||
+ enable = emu;
|
+ enable = emu;
|
||||||
+ emu_condition = COND_s390x;
|
+ emu_condition = COND_s390x;
|
||||||
+ installdir = platform;
|
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+data = {
|
+data = {
|
||||||
@ -198,29 +212,27 @@ Patch-Mainline: no
|
|||||||
}
|
}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+grub_install_zipl (const char *D, const char *s, const char *d, int i, int f)
|
+grub_install_zipl (const char *d, int i, int f)
|
||||||
+{
|
+{
|
||||||
+ grub_util_error ("%s", _("no zIPL routines are available for your platform"));
|
+ grub_util_error ("%s", _("no zIPL routines are available for your platform"));
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
--- a/grub-core/osdep/unix/platform.c
|
--- a/grub-core/osdep/unix/platform.c
|
||||||
+++ b/grub-core/osdep/unix/platform.c
|
+++ b/grub-core/osdep/unix/platform.c
|
||||||
@@ -233,3 +233,16 @@ grub_install_sgi_setup (const char *inst
|
@@ -233,3 +233,14 @@ grub_install_sgi_setup (const char *inst
|
||||||
imgfile, destname, NULL });
|
imgfile, destname, NULL });
|
||||||
grub_util_warn ("%s", _("You will have to set `SystemPartition' and `OSLoader' manually."));
|
grub_util_warn ("%s", _("You will have to set `SystemPartition' and `OSLoader' manually."));
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+grub_install_zipl (const char *scriptdir, const char *script,
|
+grub_install_zipl (const char *dest, int install, int force)
|
||||||
+ const char *dest, int install, int force)
|
|
||||||
+{
|
+{
|
||||||
+ char *path = grub_util_path_concat (2, scriptdir, script);
|
+ if (grub_util_exec ((const char * []){ PACKAGE"-zipl-setup",
|
||||||
+ if (grub_util_exec ((const char * []){ path,
|
+ verbosity ? "-v" : "",
|
||||||
+ install ? "" : "--debug",
|
+ install ? "" : "--debug",
|
||||||
+ verbosity ? "-v" : "",
|
+ !force ? "" : "--force",
|
||||||
+ force ? "--force" : "",
|
|
||||||
+ "-z", dest, NULL }))
|
+ "-z", dest, NULL }))
|
||||||
+ grub_util_error (_("`%s' failed.\n"), script);
|
+ grub_util_error (_("`%s' failed.\n"), PACKAGE"-zipl-setup");
|
||||||
+}
|
+}
|
||||||
--- a/grub-core/osdep/windows/platform.c
|
--- a/grub-core/osdep/windows/platform.c
|
||||||
+++ b/grub-core/osdep/windows/platform.c
|
+++ b/grub-core/osdep/windows/platform.c
|
||||||
@ -230,7 +242,7 @@ Patch-Mainline: no
|
|||||||
}
|
}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
+grub_install_zipl (const char *D, const char *s, const char *d, int i, int f)
|
+grub_install_zipl (const char *d, int i, int f)
|
||||||
+{
|
+{
|
||||||
+ grub_util_error ("%s", _("no zIPL routines are available for your platform"));
|
+ grub_util_error ("%s", _("no zIPL routines are available for your platform"));
|
||||||
+}
|
+}
|
||||||
@ -249,7 +261,7 @@ Patch-Mainline: no
|
|||||||
const char *imgfile, const char *destname);
|
const char *imgfile, const char *destname);
|
||||||
|
|
||||||
+void
|
+void
|
||||||
+grub_install_zipl (const char *D, const char *s, const char *d, int i, int f);
|
+grub_install_zipl (const char *d, int i, int f);
|
||||||
+
|
+
|
||||||
int
|
int
|
||||||
grub_install_compress_gzip (const char *src, const char *dest);
|
grub_install_compress_gzip (const char *src, const char *dest);
|
||||||
@ -385,31 +397,23 @@ Patch-Mainline: no
|
|||||||
grub_install_make_image_wrap (/* source dir */ grub_install_source_directory,
|
grub_install_make_image_wrap (/* source dir */ grub_install_source_directory,
|
||||||
/*prefix */ prefix,
|
/*prefix */ prefix,
|
||||||
/* output */ imgfile,
|
/* output */ imgfile,
|
||||||
@@ -1610,6 +1645,17 @@ main (int argc, char *argv[])
|
@@ -1610,6 +1645,10 @@ main (int argc, char *argv[])
|
||||||
/* image target */ mkimage_target, 0);
|
/* image target */ mkimage_target, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
+
|
+
|
||||||
+ case GRUB_INSTALL_PLATFORM_S390X_EMU:
|
+ case GRUB_INSTALL_PLATFORM_S390X_EMU:
|
||||||
+#if 0
|
|
||||||
+ {
|
|
||||||
+ char *dst = grub_util_path_concat (2, platdir, "grub2-emu");
|
|
||||||
+ grub_install_copy_file ("/usr/bin/grub2-emu", dst, 1);
|
|
||||||
+ free (dst);
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
case GRUB_INSTALL_PLATFORM_ARM_EFI:
|
case GRUB_INSTALL_PLATFORM_ARM_EFI:
|
||||||
case GRUB_INSTALL_PLATFORM_ARM64_EFI:
|
case GRUB_INSTALL_PLATFORM_ARM64_EFI:
|
||||||
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
case GRUB_INSTALL_PLATFORM_IA64_EFI:
|
||||||
@@ -1871,6 +1917,11 @@ main (int argc, char *argv[])
|
@@ -1871,6 +1910,10 @@ main (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
+ case GRUB_INSTALL_PLATFORM_S390X_EMU:
|
+ case GRUB_INSTALL_PLATFORM_S390X_EMU:
|
||||||
+ grub_install_zipl (grub_install_source_directory, "zipl2grub.pl",
|
+ grub_install_zipl (zipldir, install_bootsector, force);
|
||||||
+ zipldir, install_bootsector, force);
|
|
||||||
+ break;
|
+ break;
|
||||||
+
|
+
|
||||||
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
|
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
|
||||||
@ -423,7 +427,7 @@ Patch-Mainline: no
|
|||||||
+# ex: ts=8 sw=4 sts=4 et filetype=sh
|
+# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||||
+#getargbool() { true; }
|
+#getargbool() { true; }
|
||||||
+
|
+
|
||||||
+if getargbool 0 initgrub && [ ! -e /grub2b0rken ] || [ -e /grub2force ]; then
|
+if getargbool 0 initgrub && [ ! -e /grub2skip ] || [ -e /grub2force ]; then
|
||||||
+ #type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
+ #type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
+ checkro() {
|
+ checkro() {
|
||||||
+ local dev mp fs opts dc
|
+ local dev mp fs opts dc
|
||||||
@ -520,13 +524,13 @@ Patch-Mainline: no
|
|||||||
+ target = @zipldir@
|
+ target = @zipldir@
|
||||||
+ ramdisk = @zipldir@/initrd,0x2000000
|
+ ramdisk = @zipldir@/initrd,0x2000000
|
||||||
+ image = @zipldir@/image
|
+ image = @zipldir@/image
|
||||||
+ parameters = "root=@GRUB_DEVICE@ @GRUB_CMDLINE_LINUX@ @GRUB_CMDLINE_LINUX_DEFAULT@ initgrub quiet splash=silent "
|
+ parameters = "root=@GRUB_DEVICE@ @GRUB_EMU_CONMODE@ @GRUB_CMDLINE_LINUX@ @GRUB_CMDLINE_LINUX_DEFAULT@ initgrub quiet splash=silent "
|
||||||
+
|
+
|
||||||
+[skip-grub2]
|
+[skip-grub2]
|
||||||
+ target = @zipldir@
|
+ target = @zipldir@
|
||||||
+ ramdisk = @zipldir@/initrd,0x2000000
|
+ ramdisk = @zipldir@/initrd,0x2000000
|
||||||
+ image = @zipldir@/image
|
+ image = @zipldir@/image
|
||||||
+ parameters = "root=@GRUB_DEVICE@ @GRUB_CMDLINE_LINUX@ @GRUB_CMDLINE_LINUX_DEFAULT@ "
|
+ parameters = "root=@GRUB_DEVICE@ @GRUB_CONMODE@ @GRUB_CMDLINE_LINUX@ @GRUB_CMDLINE_LINUX_DEFAULT@ "
|
||||||
+
|
+
|
||||||
+:menu
|
+:menu
|
||||||
+ target = @zipldir@
|
+ target = @zipldir@
|
||||||
@ -538,7 +542,7 @@ Patch-Mainline: no
|
|||||||
+
|
+
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/util/s390x/zipl2grub.pl.in
|
+++ b/util/s390x/zipl2grub.pl.in
|
||||||
@@ -0,0 +1,346 @@
|
@@ -0,0 +1,379 @@
|
||||||
+#!/usr/bin/perl
|
+#!/usr/bin/perl
|
||||||
+use strict;
|
+use strict;
|
||||||
+
|
+
|
||||||
@ -558,7 +562,10 @@ Patch-Mainline: no
|
|||||||
+my $cfg = "";
|
+my $cfg = "";
|
||||||
+my %C;
|
+my %C;
|
||||||
+
|
+
|
||||||
+$C{GRUB_CMDLINE_LINUX} = ""; # force existence!
|
+my %Mandatory = (
|
||||||
|
+ GRUB_CMDLINE_LINUX_DEFAULT => 1,
|
||||||
|
+ GRUB_DEVICE => 1,
|
||||||
|
+);
|
||||||
+
|
+
|
||||||
+sub Panic($$) {
|
+sub Panic($$) {
|
||||||
+ printf( STDERR "%s", $_[1]);
|
+ printf( STDERR "%s", $_[1]);
|
||||||
@ -794,9 +801,37 @@ Patch-Mainline: no
|
|||||||
+ close( IN);
|
+ close( IN);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+ if ( ! exists( $C{GRUB_DEVICE})) {
|
+if ( ! exists( $C{GRUB_DEVICE})) {
|
||||||
+ Panic( 0, "$C: Default not ready and no fallback. Please retry later!\n");
|
+ Panic( 0, "$C: Default not ready and no fallback. Please retry later!\n");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+if ( ! exists( $C{GRUB_EMU_CONMODE}) && exists( $C{GRUB_CONMODE}) ) {
|
||||||
|
+ # GRUB_CONMODE is used for 'grub2-emu' as well
|
||||||
|
+ $C{GRUB_EMU_CONMODE} = $C{GRUB_CONMODE};
|
||||||
|
+}
|
||||||
|
+if ( exists( $C{GRUB_EMU_CONMODE}) && !exists( $C{GRUB_CONMODE}) ) {
|
||||||
|
+ # pick up 'conmode=' from CMDLINE
|
||||||
|
+ my $found = "";
|
||||||
|
+ foreach ( "GRUB_CMDLINE_LINUX", "GRUB_CMDLINE_LINUX_DEFAULT" ) {
|
||||||
|
+ next unless ($C{$_} =~ m{ ?conmode=(\S+) ?});
|
||||||
|
+ $C{GRUB_CONMODE} = $1;
|
||||||
|
+ last;
|
||||||
+ }
|
+ }
|
||||||
|
+ if ( !exists( $C{GRUB_CONMODE}) && $C{GRUB_EMU_CONMODE} eq "3270" ) {
|
||||||
|
+ # force GRUB_CONMODE to 3215 for least surprise
|
||||||
|
+ $C{GRUB_CONMODE}="3215";
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+if ( exists( $C{GRUB_EMU_CONMODE}) && exists( $C{GRUB_CONMODE})) {
|
||||||
|
+ # strip "conmode=" from GRUB_CMDLINE{,_LINUX}_DEFAULT
|
||||||
|
+ foreach ( "GRUB_CMDLINE_LINUX", "GRUB_CMDLINE_LINUX_DEFAULT" ) {
|
||||||
|
+ $C{$_} =~ s{( ?)conmode=\S+ ?}{$1}g;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+foreach ("GRUB_EMU_CONMODE", "GRUB_CONMODE") {
|
||||||
|
+ next unless( exists( $C{$_}) );
|
||||||
|
+ $C{$_} = "conmode=" . $C{$_};
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
+if ( $debug && $verbose > 2 ) {
|
+if ( $debug && $verbose > 2 ) {
|
||||||
+ foreach ( sort( keys( %C)) ) {
|
+ foreach ( sort( keys( %C)) ) {
|
||||||
@ -820,9 +855,11 @@ Patch-Mainline: no
|
|||||||
+ my $v;
|
+ my $v;
|
||||||
+ if ( exists( $C{$k}) ) {
|
+ if ( exists( $C{$k}) ) {
|
||||||
+ $v = $C{$k};
|
+ $v = $C{$k};
|
||||||
+ } else {
|
+ } elsif ( exists( $Mandatory{$k}) ) {
|
||||||
+ $v = $k;
|
+ $v = "$k";
|
||||||
+ $miss++;
|
+ $miss++;
|
||||||
|
+ } else {
|
||||||
|
+ $v = "";
|
||||||
+ }
|
+ }
|
||||||
+ s{\@$k\@}{$v}g;
|
+ s{\@$k\@}{$v}g;
|
||||||
+ }
|
+ }
|
||||||
|
@ -1,15 +1,31 @@
|
|||||||
From: Raymund Will <rw@suse.com>
|
From: Raymund Will <rw@suse.com>
|
||||||
Subject: Enable grub2-mkconfig for s390x-emu
|
Subject: Enable grub2-mkconfig for s390x-emu
|
||||||
References: fate#314213
|
References: fate#314213, bnc#868909
|
||||||
Patch-Mainline: no
|
Patch-Mainline: no
|
||||||
|
|
||||||
|
V2:
|
||||||
|
* omit subvolume-prefix for platform "emu"
|
||||||
|
V3:
|
||||||
|
* add 'conmode=' to command-line if GRUB_CONMODE exists. [bnc#868909]
|
||||||
|
|
||||||
---
|
---
|
||||||
util/grub.d/10_linux.in | 59 ++++++++++++++++++++++++++++++++++++++----------
|
util/grub.d/10_linux.in | 63 ++++++++++++++++++++++++++++++++++++++----------
|
||||||
1 file changed, 47 insertions(+), 12 deletions(-)
|
1 file changed, 51 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
--- a/util/grub.d/10_linux.in
|
--- a/util/grub.d/10_linux.in
|
||||||
+++ b/util/grub.d/10_linux.in
|
+++ b/util/grub.d/10_linux.in
|
||||||
@@ -67,6 +67,21 @@ esac
|
@@ -51,6 +51,10 @@ else
|
||||||
|
LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
|
||||||
|
fi
|
||||||
|
|
||||||
|
+if [ "x$GRUB_CONMODE" != "x" ]; then
|
||||||
|
+ GRUB_CMDLINE_LINUX="conmode=${GRUB_CONMODE} ${GRUB_CMDLINE_LINUX}"
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
case x"$GRUB_FS" in
|
||||||
|
xbtrfs)
|
||||||
|
rootsubvol="`make_system_path_relative_to_its_root /`"
|
||||||
|
@@ -67,6 +71,21 @@ esac
|
||||||
|
|
||||||
title_correction_code=
|
title_correction_code=
|
||||||
|
|
||||||
@ -31,7 +47,7 @@ Patch-Mainline: no
|
|||||||
linux_entry ()
|
linux_entry ()
|
||||||
{
|
{
|
||||||
os="$1"
|
os="$1"
|
||||||
@@ -90,9 +105,11 @@ linux_entry ()
|
@@ -90,9 +109,11 @@ linux_entry ()
|
||||||
title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
|
title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
|
||||||
grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
|
grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
|
||||||
fi
|
fi
|
||||||
@ -45,7 +61,7 @@ Patch-Mainline: no
|
|||||||
fi
|
fi
|
||||||
if [ x$type != xrecovery ] ; then
|
if [ x$type != xrecovery ] ; then
|
||||||
save_default_entry | grub_add_tab
|
save_default_entry | grub_add_tab
|
||||||
@@ -115,6 +132,7 @@ linux_entry ()
|
@@ -115,6 +136,7 @@ linux_entry ()
|
||||||
|
|
||||||
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
echo " insmod gzio" | sed "s/^/$submenu_indentation/"
|
||||||
|
|
||||||
@ -53,7 +69,7 @@ Patch-Mainline: no
|
|||||||
if [ x$dirname = x/ ]; then
|
if [ x$dirname = x/ ]; then
|
||||||
if [ -z "${prepare_root_cache}" ]; then
|
if [ -z "${prepare_root_cache}" ]; then
|
||||||
prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
|
prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
|
||||||
@@ -126,6 +144,7 @@ linux_entry ()
|
@@ -126,6 +148,7 @@ linux_entry ()
|
||||||
fi
|
fi
|
||||||
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
|
||||||
fi
|
fi
|
||||||
@ -61,7 +77,7 @@ Patch-Mainline: no
|
|||||||
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
message="$(gettext_printf "Loading Linux %s ..." ${version})"
|
||||||
if [ -d /sys/firmware/efi ] && [ "x${GRUB_USE_LINUXEFI}" = "xtrue" ]; then
|
if [ -d /sys/firmware/efi ] && [ "x${GRUB_USE_LINUXEFI}" = "xtrue" ]; then
|
||||||
sed "s/^/$submenu_indentation/" << EOF
|
sed "s/^/$submenu_indentation/" << EOF
|
||||||
@@ -159,16 +178,17 @@ EOF
|
@@ -159,16 +182,17 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
machine=`uname -m`
|
machine=`uname -m`
|
||||||
@ -88,7 +104,7 @@ Patch-Mainline: no
|
|||||||
|
|
||||||
case "$machine" in
|
case "$machine" in
|
||||||
i?86) GENKERNEL_ARCH="x86" ;;
|
i?86) GENKERNEL_ARCH="x86" ;;
|
||||||
@@ -178,6 +198,15 @@ case "$machine" in
|
@@ -178,6 +202,15 @@ case "$machine" in
|
||||||
*) GENKERNEL_ARCH="$machine" ;;
|
*) GENKERNEL_ARCH="$machine" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -104,7 +120,7 @@ Patch-Mainline: no
|
|||||||
prepare_boot_cache=
|
prepare_boot_cache=
|
||||||
prepare_root_cache=
|
prepare_root_cache=
|
||||||
boot_device_id=
|
boot_device_id=
|
||||||
@@ -194,6 +223,11 @@ while [ "x$list" != "x" ] ; do
|
@@ -194,6 +227,11 @@ while [ "x$list" != "x" ] ; do
|
||||||
basename=`basename $linux`
|
basename=`basename $linux`
|
||||||
dirname=`dirname $linux`
|
dirname=`dirname $linux`
|
||||||
rel_dirname=`make_system_path_relative_to_its_root $dirname`
|
rel_dirname=`make_system_path_relative_to_its_root $dirname`
|
||||||
@ -116,7 +132,7 @@ Patch-Mainline: no
|
|||||||
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
|
version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
|
||||||
alt_version=`echo $version | sed -e "s,\.old$,,g"`
|
alt_version=`echo $version | sed -e "s,\.old$,,g"`
|
||||||
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
|
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
|
||||||
@@ -278,7 +312,8 @@ while [ "x$list" != "x" ] ; do
|
@@ -278,7 +316,8 @@ while [ "x$list" != "x" ] ; do
|
||||||
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
|
||||||
fi
|
fi
|
||||||
# TRANSLATORS: %s is replaced with an OS name
|
# TRANSLATORS: %s is replaced with an OS name
|
||||||
|
@ -1,3 +1,23 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 1 04:52:53 UTC 2014 - mchang@suse.com
|
||||||
|
|
||||||
|
- add Recommends to libburnia-tools (bnc#812681)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 31 12:42:00 UTC 2014 - rw@suse.de
|
||||||
|
|
||||||
|
- Document peculiarities of s390 terminals in 'README.ibm3215'.
|
||||||
|
- grub2-s390x-02-kexec-module-added-to-emu.patch:
|
||||||
|
* Improve exit message for dry-run (and cleanup).
|
||||||
|
- grub2-s390x-03-output-7-bit-ascii.patch:
|
||||||
|
* Fix handling of '^C' and solitary '^'. (bnc#867258)
|
||||||
|
* Exit properly with mode-reset.
|
||||||
|
- grub2-s390x-04-grub2-install.patch:
|
||||||
|
* Install helper script as '/usr/sbin/grub2-zipl-setup'.
|
||||||
|
* Console mode may be controlled from config file. (bnc#868909)
|
||||||
|
- grub2-s390x-05-grub2-mkconfig.patch:
|
||||||
|
* Add 'conmode=' to command-line, if configured. (bnc#868909)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 31 10:48:39 UTC 2014 - mchang@suse.com
|
Mon Mar 31 10:48:39 UTC 2014 - mchang@suse.com
|
||||||
|
|
||||||
@ -5,6 +25,7 @@ Mon Mar 31 10:48:39 UTC 2014 - mchang@suse.com
|
|||||||
* add btrfs_follow_default.patch
|
* add btrfs_follow_default.patch
|
||||||
* add suse_btrfs_grub2_install.sh
|
* add suse_btrfs_grub2_install.sh
|
||||||
* add 80_suse_btrfs_snapshot
|
* add 80_suse_btrfs_snapshot
|
||||||
|
* add SUSE_BTRFS_SNAPSHOT_BOOTING.patch
|
||||||
* refresh grub2-snapper-plugin.sh
|
* refresh grub2-snapper-plugin.sh
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@ -90,18 +111,18 @@ Wed Mar 26 11:51:42 UTC 2014 - dvaleev@suse.com
|
|||||||
Tue Mar 18 21:10:59 UTC 2014 - rw@suse.de
|
Tue Mar 18 21:10:59 UTC 2014 - rw@suse.de
|
||||||
|
|
||||||
- grub2-s390x-03-output-7-bit-ascii.patch:
|
- grub2-s390x-03-output-7-bit-ascii.patch:
|
||||||
* first usable interface on 3215 from initrd. [bnc#867258]
|
* first usable interface on 3215 from initrd. (bnc#867258)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Mar 18 06:01:46 UTC 2014 - rw@suse.de
|
Tue Mar 18 06:01:46 UTC 2014 - rw@suse.de
|
||||||
|
|
||||||
- reflect s390x-specifics in '/etc/default/grub'. [fate#314213]
|
- reflect s390x-specifics in '/etc/default/grub'. (fate#314213)
|
||||||
- grub2-s390x-02-kexec-module-added-to-emu.patch:
|
- grub2-s390x-02-kexec-module-added-to-emu.patch:
|
||||||
* boot-attempts are final, except if 'kexec -l' fails.
|
* boot-attempts are final, except if 'kexec -l' fails.
|
||||||
* try to restore terminal on exit (via grub_reboot()).
|
* try to restore terminal on exit (via grub_reboot()).
|
||||||
- grub2-s390x-03-output-7-bit-ascii.patch:
|
- grub2-s390x-03-output-7-bit-ascii.patch:
|
||||||
* use less CPU cycles waiting for user. [bnc#868650]
|
* use less CPU cycles waiting for user. (bnc#868650)
|
||||||
* first usable interface on 3215. [bnc#867258]
|
* first usable interface on 3215. (bnc#867258)
|
||||||
* strip newlines on input for 3270 and 3215.
|
* strip newlines on input for 3270 and 3215.
|
||||||
- grub2-s390x-04-grub2-install.patch:
|
- grub2-s390x-04-grub2-install.patch:
|
||||||
* append 'quiet splash=silent' for 'initgrub'-boot.
|
* append 'quiet splash=silent' for 'initgrub'-boot.
|
||||||
@ -112,7 +133,7 @@ Wed Mar 5 20:44:56 UTC 2014 - rw@suse.com
|
|||||||
|
|
||||||
- grub2-s390x-04-grub2-install.patch:
|
- grub2-s390x-04-grub2-install.patch:
|
||||||
* refresh initrd by default, prefer running kernel and
|
* refresh initrd by default, prefer running kernel and
|
||||||
re-zipl despite minor issues. [bnc#866867, fate#314213]
|
re-zipl despite minor issues. (bnc#866867, fate#314213)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Mar 4 22:35:25 UTC 2014 - rw@suse.com
|
Tue Mar 4 22:35:25 UTC 2014 - rw@suse.com
|
||||||
@ -131,7 +152,7 @@ Mon Mar 3 11:41:56 UTC 2014 - rw@suse.com
|
|||||||
|
|
||||||
- build grub2-emu for s390 non-static, with device-mapper support,
|
- build grub2-emu for s390 non-static, with device-mapper support,
|
||||||
but without grub2-mount and start to move arch-specific parts
|
but without grub2-mount and start to move arch-specific parts
|
||||||
to appropriate sub-packages. [fate#314213]
|
to appropriate sub-packages. (fate#314213)
|
||||||
- grub2-s390x-02-kexec-module-added-to-emu.patch:
|
- grub2-s390x-02-kexec-module-added-to-emu.patch:
|
||||||
* introduce '--kexec/-X' to grub2-emu command-line to prevent
|
* introduce '--kexec/-X' to grub2-emu command-line to prevent
|
||||||
inadvertent system interruption.
|
inadvertent system interruption.
|
||||||
|
18
grub2.spec
18
grub2.spec
@ -109,6 +109,7 @@ Source4: grub2.rpmlintrc
|
|||||||
Source5: translations-20130626.tar.xz
|
Source5: translations-20130626.tar.xz
|
||||||
Source6: grub2-once
|
Source6: grub2-once
|
||||||
Source7: 20_memtest86+
|
Source7: 20_memtest86+
|
||||||
|
Source8: README.ibm3215
|
||||||
Source10: openSUSE-UEFI-CA-Certificate.crt
|
Source10: openSUSE-UEFI-CA-Certificate.crt
|
||||||
Source11: SLES-UEFI-CA-Certificate.crt
|
Source11: SLES-UEFI-CA-Certificate.crt
|
||||||
Source12: grub2-snapper-plugin.sh
|
Source12: grub2-snapper-plugin.sh
|
||||||
@ -181,6 +182,7 @@ Requires: gettext-runtime
|
|||||||
%ifnarch s390x
|
%ifnarch s390x
|
||||||
Requires: os-prober
|
Requires: os-prober
|
||||||
%endif
|
%endif
|
||||||
|
Recommends: libburnia-tools
|
||||||
%endif
|
%endif
|
||||||
Requires(post): /sbin/install-info
|
Requires(post): /sbin/install-info
|
||||||
Requires(preun):/sbin/install-info
|
Requires(preun):/sbin/install-info
|
||||||
@ -346,8 +348,8 @@ mv po/grub.pot po/%{name}.pot
|
|||||||
%patch103 -p1
|
%patch103 -p1
|
||||||
%patch104 -p1
|
%patch104 -p1
|
||||||
%patch105 -p1
|
%patch105 -p1
|
||||||
#%patch110 -p1
|
#patch110 -p1
|
||||||
#%patch111 -p1
|
#patch111 -p1
|
||||||
%patch201 -p1
|
%patch201 -p1
|
||||||
%patch202 -p1
|
%patch202 -p1
|
||||||
%patch203 -p1
|
%patch203 -p1
|
||||||
@ -381,6 +383,7 @@ rm -f po/stamp-po
|
|||||||
|
|
||||||
# README.openSUSE
|
# README.openSUSE
|
||||||
cp %{SOURCE3} .
|
cp %{SOURCE3} .
|
||||||
|
cp %{SOURCE8} .
|
||||||
mkdir build
|
mkdir build
|
||||||
%ifarch %{efi}
|
%ifarch %{efi}
|
||||||
mkdir build-efi
|
mkdir build-efi
|
||||||
@ -612,7 +615,6 @@ rm -f $R%{_sysconfdir}/grub.d/20_ppc_terminfo
|
|||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
mv $R%{_sysconfdir}/{grub.d,default}/zipl2grub.conf.in
|
mv $R%{_sysconfdir}/{grub.d,default}/zipl2grub.conf.in
|
||||||
chmod 600 $R%{_sysconfdir}/default/zipl2grub.conf.in
|
chmod 600 $R%{_sysconfdir}/default/zipl2grub.conf.in
|
||||||
mv $R%{_libdir}/%{name}/%{grubarch}/zipl2grub{2,}.pl
|
|
||||||
|
|
||||||
%define dracutlibdir %{_prefix}/lib/dracut
|
%define dracutlibdir %{_prefix}/lib/dracut
|
||||||
%define dracutgrubmoddir %{dracutlibdir}/modules.d/99grub2
|
%define dracutgrubmoddir %{dracutlibdir}/modules.d/99grub2
|
||||||
@ -696,10 +698,6 @@ elif [ "x${LOADER_TYPE}" = "xgrub2" ]; then
|
|||||||
/sbin/update-bootloader --reinit 2>&1 | grep -q 'Unknown option: reinit' &&
|
/sbin/update-bootloader --reinit 2>&1 | grep -q 'Unknown option: reinit' &&
|
||||||
/sbin/update-bootloader --refresh || true
|
/sbin/update-bootloader --refresh || true
|
||||||
fi
|
fi
|
||||||
%ifarch s390x
|
|
||||||
# until dracut is finally fixed...
|
|
||||||
rm -rf /usr/lib/dracut/modules.d/95grub2
|
|
||||||
%endif
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{efi}
|
%ifarch %{efi}
|
||||||
@ -783,6 +781,9 @@ fi
|
|||||||
%doc THANKS TODO ChangeLog
|
%doc THANKS TODO ChangeLog
|
||||||
%doc README.openSUSE
|
%doc README.openSUSE
|
||||||
%doc docs/autoiso.cfg docs/osdetect.cfg
|
%doc docs/autoiso.cfg docs/osdetect.cfg
|
||||||
|
%ifarch s390x
|
||||||
|
%doc README.ibm3215
|
||||||
|
%endif
|
||||||
%dir /boot/%{name}
|
%dir /boot/%{name}
|
||||||
%ghost /boot/%{name}/grub.cfg
|
%ghost /boot/%{name}/grub.cfg
|
||||||
%{_sysconfdir}/bash_completion.d/grub
|
%{_sysconfdir}/bash_completion.d/grub
|
||||||
@ -794,7 +795,6 @@ fi
|
|||||||
%config %{_sysconfdir}/grub.d/20_linux_xen
|
%config %{_sysconfdir}/grub.d/20_linux_xen
|
||||||
%config %{_sysconfdir}/grub.d/40_custom
|
%config %{_sysconfdir}/grub.d/40_custom
|
||||||
%config %{_sysconfdir}/grub.d/41_custom
|
%config %{_sysconfdir}/grub.d/41_custom
|
||||||
#%config %{_sysconfdir}/grub.d/80_btrfs_snapshot
|
|
||||||
%config %{_sysconfdir}/grub.d/90_persistent
|
%config %{_sysconfdir}/grub.d/90_persistent
|
||||||
%{_sbindir}/%{name}-install
|
%{_sbindir}/%{name}-install
|
||||||
%{_sbindir}/%{name}-mkconfig
|
%{_sbindir}/%{name}-mkconfig
|
||||||
@ -902,8 +902,8 @@ fi
|
|||||||
%{_libdir}/%{name}/%{grubarch}/modinfo.sh
|
%{_libdir}/%{name}/%{grubarch}/modinfo.sh
|
||||||
%endif
|
%endif
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
|
%{_sbindir}/%{name}-zipl-setup
|
||||||
%config(noreplace) %{_sysconfdir}/default/zipl2grub.conf.in
|
%config(noreplace) %{_sysconfdir}/default/zipl2grub.conf.in
|
||||||
%{_libdir}/%{name}/%{grubarch}/zipl2grub.pl
|
|
||||||
%{dracutlibdir}
|
%{dracutlibdir}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user