aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobbie Harwood <rharwood@redhat.com>2022-08-18 13:50:13 -0400
committerDaniel Kiper <daniel.kiper@oracle.com>2022-08-20 01:26:06 +0200
commit26031d3b101648352e4e427f04bf69d320088e77 (patch)
tree3ee835a8cf96c4bfb41bdb7e34cf49ff9c3c621c
parent1e79bbfbda24a08cb856ff30f8b1bec460779b91 (diff)
downloadgrub-26031d3b101648352e4e427f04bf69d320088e77.tar.gz
efi: Don't display a uefi-firmware entry if it's not supported
Add a new --is-supported option to commands/efi/efifwsetup and conditionalize display on it. Signed-off-by: Robbie Harwood <rharwood@redhat.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
-rw-r--r--grub-core/commands/efi/efifwsetup.c3
-rw-r--r--util/grub.d/30_uefi-firmware.in3
2 files changed, 5 insertions, 1 deletions
diff --git a/grub-core/commands/efi/efifwsetup.c b/grub-core/commands/efi/efifwsetup.c
index 7b6d4bc9f..de66c3035 100644
--- a/grub-core/commands/efi/efifwsetup.c
+++ b/grub-core/commands/efi/efifwsetup.c
@@ -40,6 +40,9 @@ grub_cmd_fwsetup (grub_command_t cmd __attribute__ ((unused)),
grub_size_t oi_size;
static grub_efi_guid_t global = GRUB_EFI_GLOBAL_VARIABLE_GUID;
+ if (argc >= 1 && grub_strcmp(args[0], "--is-supported") == 0)
+ return !efifwsetup_is_supported ();
+
if (!efifwsetup_is_supported ())
return grub_error (GRUB_ERR_INVALID_COMMAND,
N_("reboot to firmware setup is not supported by the current firmware"));
diff --git a/util/grub.d/30_uefi-firmware.in b/util/grub.d/30_uefi-firmware.in
index b6041b55e..c1731e5bb 100644
--- a/util/grub.d/30_uefi-firmware.in
+++ b/util/grub.d/30_uefi-firmware.in
@@ -31,7 +31,8 @@ LABEL="UEFI Firmware Settings"
gettext_printf "Adding boot menu entry for UEFI Firmware Settings ...\n" >&2
cat << EOF
-if [ "\$grub_platform" = "efi" ]; then
+fwsetup --is-supported
+if [ "\$grub_platform" = "efi" -a "\$?" = 0 ]; then
menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
fwsetup
}