grub-switch-to-blscfg: Update grub2 binary in ESP for OSTree systems

Related: rhbz#1751272

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
This commit is contained in:
Javier Martinez Canillas 2020-04-02 17:39:06 +02:00
parent 749be472a6
commit 0f180aa21f
No known key found for this signature in database
GPG key ID: C751E590D63F3D69
4 changed files with 81 additions and 1 deletions

View file

@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Thu, 26 Mar 2020 15:08:30 +0100
Subject: [PATCH] grub-switch-to-blscfg: Update grub2 binary in ESP for OSTree
systems
The grub2 EFI binary in the ESP isn't updated as a part of an OSTree update
transaction. So let's make the script to update this and also create a file
to indicate that the installed version has support for the blscfg module.
Related: rhbz#1751272
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---
util/grub-switch-to-blscfg.in | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in
index 49b3985fadb..a05a8d98554 100644
--- a/util/grub-switch-to-blscfg.in
+++ b/util/grub-switch-to-blscfg.in
@@ -266,6 +266,15 @@ copy_bls() {
fi
}
+# The grub2 EFI binary is not copied to the ESP as a part of an ostree
+# transaction. Make sure a grub2 version with BLS support is installed.
+if test -f /run/ostree-booted && test -d /sys/firmware/efi/efivars/; then
+ grub_binary="$(find /usr/lib/ostree-boot/efi/EFI/${EFIDIR}/ -name grub*.efi)"
+ cp ${grub_binary} ${grubdir} || exit 1
+ # Create a hidden file to indicate that grub2 now has BLS support.
+ touch /boot/grub2/.grub2-blscfg-supported
+fi
+
GENERATE=0
if grep '^GRUB_ENABLE_BLSCFG=.*' "${etcdefaultgrub}" \
| grep -vq '^GRUB_ENABLE_BLSCFG="*true"*\s*$' ; then

View file

@ -0,0 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Thu, 2 Apr 2020 11:07:24 +0200
Subject: [PATCH] grub-switch-to-blscfg: Only mark GRUB as BLS supported if
blsdir isn't set
If the user set the blsdir environemnt variable to a path that is not the
default where ostree writes the BLS snippets, the blscfg module won't be
able to parse them and can lead to not having any menu entries on boot.
So to minimize the risk of things going wrong when dropping the 15_ostree
script used by ostree to create the menu entries, only mark the bootloader
as BLS supported if the blsdir variable has not been set.
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---
util/grub-switch-to-blscfg.in | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/util/grub-switch-to-blscfg.in b/util/grub-switch-to-blscfg.in
index a05a8d98554..4bbed8e4fe9 100644
--- a/util/grub-switch-to-blscfg.in
+++ b/util/grub-switch-to-blscfg.in
@@ -267,8 +267,11 @@ copy_bls() {
}
# The grub2 EFI binary is not copied to the ESP as a part of an ostree
-# transaction. Make sure a grub2 version with BLS support is installed.
-if test -f /run/ostree-booted && test -d /sys/firmware/efi/efivars/; then
+# transaction. Make sure a grub2 version with BLS support is installed
+# but only do this if the blsdir is not set, to make sure that the BLS
+# parsing module will search for the BLS snippets in the default path.
+if test -f /run/ostree-booted && test -d /sys/firmware/efi/efivars && \
+ ! ${grub_editenv} - list | grep -q blsdir; then
grub_binary="$(find /usr/lib/ostree-boot/efi/EFI/${EFIDIR}/ -name grub*.efi)"
cp ${grub_binary} ${grubdir} || exit 1
# Create a hidden file to indicate that grub2 now has BLS support.

View file

@ -196,3 +196,5 @@ Patch0195: 0195-blscfg-add-a-space-char-when-appending-fields-for-va.patch
Patch0196: 0196-blscfg-Add-support-for-sorting-the-plus-higher-than-.patch Patch0196: 0196-blscfg-Add-support-for-sorting-the-plus-higher-than-.patch
Patch0197: 0197-blscfg-Always-use-the-root-variable-to-search-for-BL.patch Patch0197: 0197-blscfg-Always-use-the-root-variable-to-search-for-BL.patch
Patch0198: 0198-blscfg-return-NULL-instead-of-a-zero-length-array-in.patch Patch0198: 0198-blscfg-return-NULL-instead-of-a-zero-length-array-in.patch
Patch0199: 0199-grub-switch-to-blscfg-Update-grub2-binary-in-ESP-for.patch
Patch0200: 0200-grub-switch-to-blscfg-Only-mark-GRUB-as-BLS-supporte.patch

View file

@ -7,7 +7,7 @@
Name: grub2 Name: grub2
Epoch: 1 Epoch: 1
Version: 2.02 Version: 2.02
Release: 106%{?dist} Release: 107%{?dist}
Summary: Bootloader with support for Linux, Multiboot and more Summary: Bootloader with support for Linux, Multiboot and more
License: GPLv3+ License: GPLv3+
URL: http://www.gnu.org/software/grub/ URL: http://www.gnu.org/software/grub/
@ -518,6 +518,10 @@ rm -r /boot/grub2.tmp/ || :
%endif %endif
%changelog %changelog
* Thu Apr 02 2020 Javier Martinez Canillas <javierm@redhat.com> - 2.02-107
- grub-switch-to-blscfg: Update grub2 binary in ESP for OSTree systems
Related: rhbz#1751272
* Tue Mar 17 2020 Javier Martinez Canillas <javierm@redhat.com> - 2.02-106 * Tue Mar 17 2020 Javier Martinez Canillas <javierm@redhat.com> - 2.02-106
- Fix menu entries having an unneeded initrd command and other BLS fixes - Fix menu entries having an unneeded initrd command and other BLS fixes
Resolves: rhbz#1806022 Resolves: rhbz#1806022