forked from pool/grub2
Accepting request 1078547 from Base:System
OBS-URL: https://build.opensuse.org/request/show/1078547 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=291
This commit is contained in:
commit
9c1fbf1a92
@ -0,0 +1,52 @@
|
|||||||
|
From 468628bdc39800341e7aa6ff7795cc0d93cfaf3f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Chang <mchang@suse.com>
|
||||||
|
Date: Tue, 11 Apr 2023 10:59:34 +0800
|
||||||
|
Subject: [PATCH 1/2] openfw: Ensure get_devargs and get_devname functions are
|
||||||
|
consistent
|
||||||
|
|
||||||
|
Commit 165c9b234 changed the logic of ieee1275_get_devargs() to use the
|
||||||
|
first or second occurrence of a colon as a separator between device name
|
||||||
|
and arguments. However, this didn't align with the complementary
|
||||||
|
function ieee1275_get_devname, which uses the first occurrence of a
|
||||||
|
colon after the namespace keyword as arguments for the nvme-of device.
|
||||||
|
|
||||||
|
This commit addresses the inconsistency by ensuring that both functions
|
||||||
|
follow a common logic. Now, get_devargs and get_devname functions are
|
||||||
|
consistent with each other, making it easier to understand and maintain
|
||||||
|
the codebase.
|
||||||
|
|
||||||
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||||
|
---
|
||||||
|
grub-core/kern/ieee1275/openfw.c | 15 +++++++++------
|
||||||
|
1 file changed, 9 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/grub-core/kern/ieee1275/openfw.c b/grub-core/kern/ieee1275/openfw.c
|
||||||
|
index e2ffec32d..3bbd07d95 100644
|
||||||
|
--- a/grub-core/kern/ieee1275/openfw.c
|
||||||
|
+++ b/grub-core/kern/ieee1275/openfw.c
|
||||||
|
@@ -354,13 +354,16 @@ static char *
|
||||||
|
grub_ieee1275_get_devargs (const char *path)
|
||||||
|
{
|
||||||
|
char *colon = grub_strchr (path, ':');
|
||||||
|
- char *colon_check = colon;
|
||||||
|
|
||||||
|
- /* Find the last occurence of colon */
|
||||||
|
- while(colon_check){
|
||||||
|
- colon = colon_check;
|
||||||
|
- colon_check = grub_strchr (colon+1, ':');
|
||||||
|
- }
|
||||||
|
+ /* Use the same logic in grub_ieee1275_get_devname for nvme-of arguments */
|
||||||
|
+ if (grub_strstr(path, "nvme-of"))
|
||||||
|
+ {
|
||||||
|
+ char *namespace_split = grub_strstr(path,"/namespace@");
|
||||||
|
+ if (namespace_split)
|
||||||
|
+ colon = grub_strchr (namespace_split, ':');
|
||||||
|
+ else
|
||||||
|
+ colon = NULL;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (! colon)
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
2.39.2
|
||||||
|
|
204
0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
Normal file
204
0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
From 990902e28c390217d25ea474e5ef163d79eadc7f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Chang <mchang@suse.com>
|
||||||
|
Date: Fri, 31 Mar 2023 15:19:58 +0800
|
||||||
|
Subject: [PATCH 2/2] prep_loadenv: Fix regex for Open Firmware device
|
||||||
|
specifier with encoded commas
|
||||||
|
|
||||||
|
The Open Firmware device specifier allows for comma-separated properties
|
||||||
|
of a component, but this conflicts with the way that grub separates
|
||||||
|
device and partition in its device specifier. To address this, grub
|
||||||
|
encodes commas in Open Firmware device strings with a leading backslash
|
||||||
|
as an established convention.
|
||||||
|
|
||||||
|
However, the regular expression used to extract the boot device
|
||||||
|
substring from the $cmdpath environment variable did not properly retain
|
||||||
|
commas with leading backslashes as part of the device. This could cause
|
||||||
|
the comma to be incorrectly interpreted as a partition delimiter and
|
||||||
|
result in a broken name for the boot disk.
|
||||||
|
|
||||||
|
To fix this issue, we have updated the regular expression to properly
|
||||||
|
handle the encoded comma in the Open Firmware device specifier, ensuring
|
||||||
|
that the correct boot device is identified and used.
|
||||||
|
|
||||||
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||||
|
---
|
||||||
|
grub-core/commands/prep_loadenv.c | 108 ++++++++++++++++++++++--------
|
||||||
|
1 file changed, 79 insertions(+), 29 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/grub-core/commands/prep_loadenv.c b/grub-core/commands/prep_loadenv.c
|
||||||
|
index de1b95689..c9797c50a 100644
|
||||||
|
--- a/grub-core/commands/prep_loadenv.c
|
||||||
|
+++ b/grub-core/commands/prep_loadenv.c
|
||||||
|
@@ -15,7 +15,7 @@
|
||||||
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
|
static char *
|
||||||
|
-match_substr (regmatch_t *match, const char *str)
|
||||||
|
+match_substr (const regmatch_t *match, const char *str)
|
||||||
|
{
|
||||||
|
if (match->rm_so != -1)
|
||||||
|
{
|
||||||
|
@@ -185,24 +185,18 @@ prep_partname (const char *devname, char **prep)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static grub_err_t
|
||||||
|
-boot_disk_prep_partname (char **name)
|
||||||
|
+static regmatch_t *
|
||||||
|
+regex_match_str (const char *pattern, const char *str, grub_size_t *nmatch)
|
||||||
|
{
|
||||||
|
regex_t regex;
|
||||||
|
int ret;
|
||||||
|
grub_size_t s;
|
||||||
|
char *comperr;
|
||||||
|
- const char *cmdpath;
|
||||||
|
regmatch_t *matches = NULL;
|
||||||
|
grub_err_t err = GRUB_ERR_NONE;
|
||||||
|
|
||||||
|
- *name = NULL;
|
||||||
|
-
|
||||||
|
- cmdpath = grub_env_get ("cmdpath");
|
||||||
|
- if (!cmdpath)
|
||||||
|
- return GRUB_ERR_NONE;
|
||||||
|
-
|
||||||
|
- ret = regcomp (®ex, "\\(([^,]+)(,?.*)?\\)(.*)", REG_EXTENDED);
|
||||||
|
+ *nmatch = 0;
|
||||||
|
+ ret = regcomp (®ex, pattern, REG_EXTENDED);
|
||||||
|
if (ret)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
@@ -210,22 +204,11 @@ boot_disk_prep_partname (char **name)
|
||||||
|
if (! matches)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
|
- ret = regexec (®ex, cmdpath, regex.re_nsub + 1, matches, 0);
|
||||||
|
- if (!ret)
|
||||||
|
+ ret = regexec (®ex, str, regex.re_nsub + 1, matches, 0);
|
||||||
|
+ if (ret == 0)
|
||||||
|
{
|
||||||
|
- char *devname = devname = match_substr (matches + 1, cmdpath);
|
||||||
|
- if (!devname)
|
||||||
|
- {
|
||||||
|
- err = grub_error (GRUB_ERR_FILE_NOT_FOUND, "%s contains no disk name", cmdpath);
|
||||||
|
- goto out;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- err = prep_partname (devname, name);
|
||||||
|
- out:
|
||||||
|
- grub_free (devname);
|
||||||
|
- regfree (®ex);
|
||||||
|
- grub_free (matches);
|
||||||
|
- return err;
|
||||||
|
+ *nmatch = regex.re_nsub + 1;
|
||||||
|
+ return matches;
|
||||||
|
}
|
||||||
|
|
||||||
|
fail:
|
||||||
|
@@ -235,13 +218,58 @@ boot_disk_prep_partname (char **name)
|
||||||
|
if (!comperr)
|
||||||
|
{
|
||||||
|
regfree (®ex);
|
||||||
|
- return grub_errno;
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
regerror (ret, ®ex, comperr, s);
|
||||||
|
err = grub_error (GRUB_ERR_TEST_FAILURE, "%s", comperr);
|
||||||
|
regfree (®ex);
|
||||||
|
grub_free (comperr);
|
||||||
|
- return err;
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static grub_err_t
|
||||||
|
+boot_disk_prep_partname (const char *varname, char **name)
|
||||||
|
+{
|
||||||
|
+ const char *cmdpath;
|
||||||
|
+ regmatch_t *matches;
|
||||||
|
+ grub_size_t nmatch;
|
||||||
|
+ char *devname = NULL;
|
||||||
|
+
|
||||||
|
+ if (varname)
|
||||||
|
+ cmdpath = grub_env_get (varname);
|
||||||
|
+ else
|
||||||
|
+ cmdpath = grub_env_get ("cmdpath");
|
||||||
|
+ if (!cmdpath)
|
||||||
|
+ return GRUB_ERR_NONE;
|
||||||
|
+
|
||||||
|
+ matches = regex_match_str("\\((.*)\\)(.*)", cmdpath, &nmatch);
|
||||||
|
+ if (matches && nmatch >= 2)
|
||||||
|
+ devname = match_substr (matches + 1, cmdpath);
|
||||||
|
+ if (devname == NULL)
|
||||||
|
+ goto quit;
|
||||||
|
+ grub_free (matches);
|
||||||
|
+
|
||||||
|
+ matches = regex_match_str ("(.*[^\\])(,.*)", devname, &nmatch);
|
||||||
|
+ if (matches && nmatch >= 2)
|
||||||
|
+ {
|
||||||
|
+ char *n = match_substr (matches + 1, devname);
|
||||||
|
+ grub_free (devname);
|
||||||
|
+ devname = n;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ grub_errno = GRUB_ERR_NONE;
|
||||||
|
+ if (devname)
|
||||||
|
+ {
|
||||||
|
+ grub_printf ("search prep from disk `%s'\n", devname);
|
||||||
|
+ prep_partname (devname, name);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ quit:
|
||||||
|
+ grub_free (devname);
|
||||||
|
+ grub_free (matches);
|
||||||
|
+ if (grub_errno)
|
||||||
|
+ grub_print_error ();
|
||||||
|
+ return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
@@ -274,13 +302,31 @@ grub_cmd_prep_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static grub_err_t
|
||||||
|
+grub_cmd_prep_partname (grub_command_t cmd __attribute__ ((unused)),
|
||||||
|
+ int argc,
|
||||||
|
+ char **argv)
|
||||||
|
+{
|
||||||
|
+ char *prep = NULL;
|
||||||
|
+ const char *varname = NULL;
|
||||||
|
+
|
||||||
|
+ if (argc > 0)
|
||||||
|
+ varname = argv[0];
|
||||||
|
+
|
||||||
|
+ boot_disk_prep_partname(varname, &prep);
|
||||||
|
+ if (prep)
|
||||||
|
+ grub_printf ("prep: %s\n", prep);
|
||||||
|
+
|
||||||
|
+ return GRUB_ERR_NONE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
early_prep_loadenv (void)
|
||||||
|
{
|
||||||
|
grub_err_t err;
|
||||||
|
char *prep;
|
||||||
|
|
||||||
|
- err = boot_disk_prep_partname (&prep);
|
||||||
|
+ err = boot_disk_prep_partname (NULL, &prep);
|
||||||
|
if (err == GRUB_ERR_NONE && prep)
|
||||||
|
err = prep_read_envblk (prep);
|
||||||
|
if (err == GRUB_ERR_BAD_FILE_TYPE || err == GRUB_ERR_FILE_NOT_FOUND)
|
||||||
|
@@ -295,6 +341,10 @@ static grub_command_t cmd_prep_load;
|
||||||
|
GRUB_MOD_INIT(prep_loadenv)
|
||||||
|
{
|
||||||
|
early_env_hook = early_prep_loadenv;
|
||||||
|
+ cmd_prep_load =
|
||||||
|
+ grub_register_command("prep_partname", grub_cmd_prep_partname,
|
||||||
|
+ "VARNAME",
|
||||||
|
+ N_("Get partition name of PReP."));
|
||||||
|
cmd_prep_load =
|
||||||
|
grub_register_command("prep_load_env", grub_cmd_prep_loadenv,
|
||||||
|
"DEVICE",
|
||||||
|
--
|
||||||
|
2.39.2
|
||||||
|
|
@ -11,6 +11,10 @@ exported to grub as environment variables.
|
|||||||
Please note there's no support for whitelist variables and also
|
Please note there's no support for whitelist variables and also
|
||||||
--skip-sig option compared to ordinary load_env command.
|
--skip-sig option compared to ordinary load_env command.
|
||||||
|
|
||||||
|
v2:
|
||||||
|
To avoid disrupting the boot process with errors, it's important to log
|
||||||
|
any errors that may occur and always return GRUB_ERR_NONE.
|
||||||
|
|
||||||
Signed-off-by: Michael Chang <mchang@suse.com>
|
Signed-off-by: Michael Chang <mchang@suse.com>
|
||||||
---
|
---
|
||||||
grub-core/Makefile.core.def | 5 +
|
grub-core/Makefile.core.def | 5 +
|
||||||
@ -18,11 +22,9 @@ Signed-off-by: Michael Chang <mchang@suse.com>
|
|||||||
2 files changed, 232 insertions(+)
|
2 files changed, 232 insertions(+)
|
||||||
create mode 100644 grub-core/commands/prep_loadenv.c
|
create mode 100644 grub-core/commands/prep_loadenv.c
|
||||||
|
|
||||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
|
||||||
index 49bdb63b69..4d529859be 100644
|
|
||||||
--- a/grub-core/Makefile.core.def
|
--- a/grub-core/Makefile.core.def
|
||||||
+++ b/grub-core/Makefile.core.def
|
+++ b/grub-core/Makefile.core.def
|
||||||
@@ -2624,3 +2624,8 @@ module = {
|
@@ -2624,3 +2624,8 @@
|
||||||
common = lib/libtasn1_wrap/tests/Test_strings.c;
|
common = lib/libtasn1_wrap/tests/Test_strings.c;
|
||||||
common = lib/libtasn1_wrap/wrap_tests.c;
|
common = lib/libtasn1_wrap/wrap_tests.c;
|
||||||
};
|
};
|
||||||
@ -31,12 +33,9 @@ index 49bdb63b69..4d529859be 100644
|
|||||||
+ name = prep_loadenv;
|
+ name = prep_loadenv;
|
||||||
+ common = commands/prep_loadenv.c;
|
+ common = commands/prep_loadenv.c;
|
||||||
+};
|
+};
|
||||||
diff --git a/grub-core/commands/prep_loadenv.c b/grub-core/commands/prep_loadenv.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000..f4bb270a2b
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/grub-core/commands/prep_loadenv.c
|
+++ b/grub-core/commands/prep_loadenv.c
|
||||||
@@ -0,0 +1,227 @@
|
@@ -0,0 +1,230 @@
|
||||||
+#include <grub/dl.h>
|
+#include <grub/dl.h>
|
||||||
+#include <grub/mm.h>
|
+#include <grub/mm.h>
|
||||||
+#include <grub/file.h>
|
+#include <grub/file.h>
|
||||||
@ -247,7 +246,10 @@ index 0000000000..f4bb270a2b
|
|||||||
+ out:
|
+ out:
|
||||||
+ grub_free (devname);
|
+ grub_free (devname);
|
||||||
+ grub_free (prep);
|
+ grub_free (prep);
|
||||||
+ return err;
|
+
|
||||||
|
+ if (err)
|
||||||
|
+ grub_print_error ();
|
||||||
|
+ return GRUB_ERR_NONE;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static grub_command_t cmd_prep_load;
|
+static grub_command_t cmd_prep_load;
|
||||||
@ -264,6 +266,3 @@ index 0000000000..f4bb270a2b
|
|||||||
+{
|
+{
|
||||||
+ grub_unregister_command (cmd_prep_load);
|
+ grub_unregister_command (cmd_prep_load);
|
||||||
+}
|
+}
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
||||||
|
@ -17,19 +17,15 @@ Signed-off-by: Michael Chang <mchang@suse.com>
|
|||||||
include/grub/env.h | 1 +
|
include/grub/env.h | 1 +
|
||||||
5 files changed, 85 insertions(+)
|
5 files changed, 85 insertions(+)
|
||||||
|
|
||||||
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
|
|
||||||
index 4d529859be..f3140815b8 100644
|
|
||||||
--- a/grub-core/Makefile.core.def
|
--- a/grub-core/Makefile.core.def
|
||||||
+++ b/grub-core/Makefile.core.def
|
+++ b/grub-core/Makefile.core.def
|
||||||
@@ -2628,4 +2628,6 @@ module = {
|
@@ -2617,4 +2617,6 @@
|
||||||
module = {
|
module = {
|
||||||
name = prep_loadenv;
|
name = prep_loadenv;
|
||||||
common = commands/prep_loadenv.c;
|
common = commands/prep_loadenv.c;
|
||||||
+ cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
|
+ cflags = '$(CFLAGS_POSIX) $(CFLAGS_GNULIB)';
|
||||||
+ cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
|
+ cppflags = '$(CPPFLAGS_POSIX) $(CPPFLAGS_GNULIB)';
|
||||||
};
|
};
|
||||||
diff --git a/grub-core/commands/prep_loadenv.c b/grub-core/commands/prep_loadenv.c
|
|
||||||
index f4bb270a2b..4f40f7e41a 100644
|
|
||||||
--- a/grub-core/commands/prep_loadenv.c
|
--- a/grub-core/commands/prep_loadenv.c
|
||||||
+++ b/grub-core/commands/prep_loadenv.c
|
+++ b/grub-core/commands/prep_loadenv.c
|
||||||
@@ -10,6 +10,7 @@
|
@@ -10,6 +10,7 @@
|
||||||
@ -40,11 +36,10 @@ index f4bb270a2b..4f40f7e41a 100644
|
|||||||
|
|
||||||
GRUB_MOD_LICENSE ("GPLv3+");
|
GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
|
||||||
@@ -184,6 +185,65 @@ prep_partname (const char *devname, char **prep)
|
@@ -185,6 +186,65 @@
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+static grub_err_t
|
static grub_err_t
|
||||||
+boot_disk_prep_partname (char **name)
|
+boot_disk_prep_partname (char **name)
|
||||||
+{
|
+{
|
||||||
+ regex_t regex;
|
+ regex_t regex;
|
||||||
@ -103,11 +98,12 @@ index f4bb270a2b..4f40f7e41a 100644
|
|||||||
+ return err;
|
+ return err;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
static grub_err_t
|
+static grub_err_t
|
||||||
grub_cmd_prep_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
grub_cmd_prep_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
||||||
int argc,
|
int argc,
|
||||||
@@ -211,10 +271,27 @@ grub_cmd_prep_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
char **argv)
|
||||||
return err;
|
@@ -214,10 +274,27 @@
|
||||||
|
return GRUB_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static void
|
+static void
|
||||||
@ -134,11 +130,9 @@ index f4bb270a2b..4f40f7e41a 100644
|
|||||||
cmd_prep_load =
|
cmd_prep_load =
|
||||||
grub_register_command("prep_load_env", grub_cmd_prep_loadenv,
|
grub_register_command("prep_load_env", grub_cmd_prep_loadenv,
|
||||||
"DEVICE",
|
"DEVICE",
|
||||||
diff --git a/grub-core/kern/env.c b/grub-core/kern/env.c
|
|
||||||
index c408626423..ec0d268905 100644
|
|
||||||
--- a/grub-core/kern/env.c
|
--- a/grub-core/kern/env.c
|
||||||
+++ b/grub-core/kern/env.c
|
+++ b/grub-core/kern/env.c
|
||||||
@@ -28,6 +28,8 @@ static struct grub_env_context initial_context;
|
@@ -28,6 +28,8 @@
|
||||||
/* The current context. */
|
/* The current context. */
|
||||||
struct grub_env_context *grub_current_context = &initial_context;
|
struct grub_env_context *grub_current_context = &initial_context;
|
||||||
|
|
||||||
@ -147,11 +141,9 @@ index c408626423..ec0d268905 100644
|
|||||||
/* Return the hash representation of the string S. */
|
/* Return the hash representation of the string S. */
|
||||||
static unsigned int
|
static unsigned int
|
||||||
grub_env_hashval (const char *s)
|
grub_env_hashval (const char *s)
|
||||||
diff --git a/grub-core/kern/main.c b/grub-core/kern/main.c
|
|
||||||
index c7c6d2d0b8..42ea96e39e 100644
|
|
||||||
--- a/grub-core/kern/main.c
|
--- a/grub-core/kern/main.c
|
||||||
+++ b/grub-core/kern/main.c
|
+++ b/grub-core/kern/main.c
|
||||||
@@ -310,6 +310,9 @@ grub_main (void)
|
@@ -310,6 +310,9 @@
|
||||||
|
|
||||||
grub_boot_time ("Before execution of embedded config.");
|
grub_boot_time ("Before execution of embedded config.");
|
||||||
|
|
||||||
@ -161,17 +153,12 @@ index c7c6d2d0b8..42ea96e39e 100644
|
|||||||
if (load_config)
|
if (load_config)
|
||||||
grub_parser_execute (load_config);
|
grub_parser_execute (load_config);
|
||||||
|
|
||||||
diff --git a/include/grub/env.h b/include/grub/env.h
|
|
||||||
index 76f832eb94..636e190a21 100644
|
|
||||||
--- a/include/grub/env.h
|
--- a/include/grub/env.h
|
||||||
+++ b/include/grub/env.h
|
+++ b/include/grub/env.h
|
||||||
@@ -68,5 +68,6 @@ grub_env_extractor_open (int source);
|
@@ -68,5 +68,6 @@
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_env_extractor_close (int source);
|
grub_env_extractor_close (int source);
|
||||||
|
|
||||||
+extern void (*EXPORT_VAR (early_env_hook)) (void);
|
+extern void (*EXPORT_VAR (early_env_hook)) (void);
|
||||||
|
|
||||||
#endif /* ! GRUB_ENV_HEADER */
|
#endif /* ! GRUB_ENV_HEADER */
|
||||||
--
|
|
||||||
2.34.1
|
|
||||||
|
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 11 11:13:26 UTC 2023 - Michael Chang <mchang@suse.com>
|
||||||
|
|
||||||
|
- Resolve some issues with OS boot failure on PPC NVMe-oF disks and made
|
||||||
|
enhancements to PPC secure boot's root device discovery config (bsc#1207230)
|
||||||
|
- Ensure get_devargs and get_devname functions are consistent
|
||||||
|
* 0001-openfw-Ensure-get_devargs-and-get_devname-functions-.patch
|
||||||
|
- Fix regex for Open Firmware device specifier with encoded commas
|
||||||
|
* 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
|
||||||
|
- Fix regular expression in PPC secure boot config to prevent escaped commas
|
||||||
|
from being treated as delimiters when retrieving partition substrings.
|
||||||
|
- Use prep_load_env in PPC secure boot config to handle unset host-specific
|
||||||
|
environment variables and ensure successful command execution.
|
||||||
|
* 0004-Introduce-prep_load_env-command.patch
|
||||||
|
- Refreshed
|
||||||
|
* 0005-export-environment-at-start-up.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 23 05:25:50 UTC 2023 - Michael Chang <mchang@suse.com>
|
Thu Mar 23 05:25:50 UTC 2023 - Michael Chang <mchang@suse.com>
|
||||||
|
|
||||||
|
14
grub2.spec
14
grub2.spec
@ -505,6 +505,8 @@ Patch975: 0002-discard-cached-key-before-entering-grub-shell-and-ed.patch
|
|||||||
Patch976: 0001-ieee1275-ofdisk-retry-on-open-and-read-failure.patch
|
Patch976: 0001-ieee1275-ofdisk-retry-on-open-and-read-failure.patch
|
||||||
Patch977: 0001-loader-linux-Ensure-the-newc-pathname-is-NULL-termin.patch
|
Patch977: 0001-loader-linux-Ensure-the-newc-pathname-is-NULL-termin.patch
|
||||||
Patch978: 0002-Restrict-cryptsetup-key-file-permission-for-better-s.patch
|
Patch978: 0002-Restrict-cryptsetup-key-file-permission-for-better-s.patch
|
||||||
|
Patch979: 0001-openfw-Ensure-get_devargs-and-get_devname-functions-.patch
|
||||||
|
Patch980: 0002-prep_loadenv-Fix-regex-for-Open-Firmware-device-spec.patch
|
||||||
|
|
||||||
Requires: gettext-runtime
|
Requires: gettext-runtime
|
||||||
%if 0%{?suse_version} >= 1140
|
%if 0%{?suse_version} >= 1140
|
||||||
@ -920,12 +922,22 @@ echo "earlycfg: root=$root prefix=$prefix"
|
|||||||
EOF
|
EOF
|
||||||
cat > ./grub.cfg <<'EOF'
|
cat > ./grub.cfg <<'EOF'
|
||||||
|
|
||||||
regexp --set 1:bdev --set 2:bpart --set 3:bpath '\(([^,]+)(,?.*)?\)(.*)' "$cmdpath"
|
regexp --set 1:bdev --set 2:bpath '\((.*)\)(.*)' "$cmdpath"
|
||||||
|
regexp --set 1:bdev --set 2:bpart '(.*[^\])(,.*)' "$bdev"
|
||||||
|
|
||||||
echo "bdev=$bdev"
|
echo "bdev=$bdev"
|
||||||
echo "bpart=$bpart"
|
echo "bpart=$bpart"
|
||||||
echo "bpath=$bpath"
|
echo "bpath=$bpath"
|
||||||
|
|
||||||
|
if [ -z "$ENV_FS_UUID" ]; then
|
||||||
|
echo "Reading vars from ($bdev)"
|
||||||
|
prep_load_env "($bdev)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ENV_HINT=$ENV_HINT"
|
||||||
|
echo "ENV_GRUB_DIR=$ENV_GRUB_DIR"
|
||||||
|
echo "ENV_FS_UUID=$ENV_FS_UUID"
|
||||||
|
|
||||||
if [ "$btrfs_relative_path" = xy ]; then
|
if [ "$btrfs_relative_path" = xy ]; then
|
||||||
btrfs_relative_path=1
|
btrfs_relative_path=1
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user