Skip to content

Commit

Permalink
grub2: Exit gracefully if the configuration has BLS enabled
Browse files Browse the repository at this point in the history
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
  • Loading branch information
martinezjavier committed Sep 26, 2019
1 parent 653fc6a commit 94f60af
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/boot/grub2/grub2-15_ostree
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 94f60af

Please sign in to comment.