Make blscfg to support the GRUB_SAVEDEFAULT option

This option was not supported on a BLS configuration.

Resolves: rhbz#1704926

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
This commit is contained in:
Javier Martinez Canillas 2020-01-13 19:48:23 +01:00
parent 190e583e94
commit 89bc295877
No known key found for this signature in database
GPG key ID: C751E590D63F3D69
3 changed files with 56 additions and 1 deletions

View file

@ -0,0 +1,50 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Fritz Elfert <fritz@fritz-elfert.de>
Date: Mon, 13 Jan 2020 19:29:58 +0100
Subject: [PATCH] Fix savedefault with blscfg
The GRUB_SAVEDEFAULT option was ignored on a BLS configuration. Fix it by
making the menu entries populated from the BLS files to call savedefault
if a save_default environment variable has been set to "true".
This variable is set by grub2-mkconfig to the value in GRUB_SAVEDEFAULT.
---
grub-core/commands/blscfg.c | 5 ++++-
util/grub.d/10_linux.in | 4 ++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
index 83b33c1cd93..069db721bec 100644
--- a/grub-core/commands/blscfg.c
+++ b/grub-core/commands/blscfg.c
@@ -889,11 +889,14 @@ static void create_entry (struct bls_entry *entry)
grub_dprintf ("blscfg2", "devicetree %s for id:\"%s\"\n", dt, id);
- src = grub_xasprintf ("load_video\n"
+ const char *sdval = grub_env_get("save_default");
+ bool savedefault = ((NULL != sdval) && (grub_strcmp(sdval, "true") == 0));
+ src = grub_xasprintf ("%sload_video\n"
"set gfxpayload=keep\n"
"insmod gzio\n"
"linux %s%s%s%s\n"
"%s%s",
+ savedefault ? "savedefault\n" : "",
GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "",
initrd ? initrd : "", dt ? dt : "");
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 21a6915dca3..b70dca27567 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -152,6 +152,10 @@ EOF
if [ -n "${GRUB_DEFAULT_DTB}" ]; then
${grub_editenv} - set devicetree="${GRUB_DEFAULT_DTB}"
fi
+
+ if [ -n "${GRUB_SAVEDEFAULT}" ]; then
+ ${grub_editenv} - set save_default="${GRUB_SAVEDEFAULT}"
+ fi
fi
exit 0

View file

@ -188,3 +188,4 @@ Patch0187: 0187-grub-set-bootflag-Write-new-env-to-tmpfile-and-then-.patch
Patch0188: 0188-blscfg-add-a-space-char-when-appending-fields-for-va.patch
Patch0189: 0189-grub.d-Fix-boot_indeterminate-getting-set-on-boot_su.patch
Patch0190: 0190-blscfg-Add-support-for-sorting-the-plus-higher-than-.patch
Patch0191: 0191-Fix-savedefault-with-blscfg.patch

View file

@ -9,7 +9,7 @@
Name: grub2
Epoch: 1
Version: 2.04
Release: 7%{?dist}
Release: 8%{?dist}
Summary: Bootloader with support for Linux, Multiboot and more
License: GPLv3+
URL: http://www.gnu.org/software/grub/
@ -512,6 +512,10 @@ rm -r /boot/grub2.tmp/ || :
%endif
%changelog
* Mon Jan 13 2020 Javier Martinez Canillas <javierm@redhat.com> - 2.04-8
- Make the blscfg module honour the GRUB_SAVEDEFAULT option (fritz)
Resolves: rhbz#1704926
* Mon Jan 06 2020 Peter Jones <pjones@redhat.com> - 2.04-7
- Add zstd to the EFI module list.
Related: rhbz#1418336