ostree/0001-grub2-Exit-gracefully-if-the-configuration-has-BLS-e.patch

57 lines
2.0 KiB
Diff

From 985a14100295c99d0c6d712bfbee0ec52a3a1601 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Thu, 26 Sep 2019 17:33:57 +0200
Subject: [PATCH] grub2: Exit gracefully if the configuration has BLS enabled
Since Fedora 30 grub2 has support to populate its menu entries from the
BootLoaderSpec fragments in /boot/loader/entries, so there's no need to
generate menu entries anymore using the /etc/grub.d/15_ostree script.
But since ostree doesn't update the bootloader, it may be that the grub2
installed is an old one that doesn't have BLS support.
For new installs, GRUB_ENABLE_BLSCFG=true is set in /etc/default/grub to
tell the /etc/grub.d/10_linux script if a blscfg command has to be added
to the generated grub2 config file.
So check if BLS is enabled in /etc/default/grub and only add the entries
if that's not the case. Otherwise the menu entries will be duplicated.
The approach has the drawback that if a user sets GRUB_ENABLE_BLSCFG=true
in /etc/default/grub without updating grub2, they will get an empty menu.
Since there won't be any entries created by the 30_ostree script and the
blscfg command won't work on the older grub2.
Unfortunately there is no way to know if the installed grub2 already has
BLS support or not.
Related: https://bugzilla.redhat.com/show_bug.cgi?id=1751272#c27
Closes: #1929
Approved by: jlebon
---
src/boot/grub2/grub2-15_ostree | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/boot/grub2/grub2-15_ostree b/src/boot/grub2/grub2-15_ostree
index 0b9bf930..160ac2ca 100644
--- a/src/boot/grub2/grub2-15_ostree
+++ b/src/boot/grub2/grub2-15_ostree
@@ -26,6 +26,13 @@ if ! test -d /ostree/repo; then
exit 0
fi
+# Gracefully exit if the grub2 configuration has BLS enabled,
+# since there is no need to create menu entries in that case.
+. /etc/default/grub
+if test ${GRUB_ENABLE_BLSCFG} = "true"; then
+ exit 0
+fi
+
# Make sure we're in the right environment
if ! test -n "${GRUB_DEVICE}"; then
echo "This script must be run as a child of grub2-mkconfig" 1>&2
--
2.21.0