[U-Boot] [RFC v3 10/10] cmd: add efibootmgr command
AKASHI Takahiro
takahiro.akashi at linaro.org
Tue Apr 16 04:24:28 UTC 2019
Add CONFIG_CMD_STANDALONE_EFIBOOTMGR.
With this patch, EFI boot manager can be kicked in by a standalone
command, efibootmgr.
Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
---
cmd/Kconfig | 8 ++++++++
cmd/bootefi.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 0b07b3b9d777..6c9a9f821e54 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -224,6 +224,14 @@ config CMD_BOOTEFI
help
Boot an EFI image from memory.
+config CMD_STANDALONE_EFIBOOTMGR
+ bool "Enable EFI Boot Manager as a standalone command"
+ depends on CMD_BOOTEFI
+ default n
+ help
+ With this option enabled, EFI Boot Manager can be invoked
+ as a standalone command.
+
config CMD_BOOTEFI_HELLO_COMPILE
bool "Compile a standard EFI hello world binary for testing"
depends on CMD_BOOTEFI && !CPU_V7M && !SANDBOX
diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index 97d49a53a44b..1afa86256670 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -631,3 +631,38 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path)
bootefi_image_path = NULL;
}
}
+
+#ifdef CONFIG_CMD_STANDALONE_EFIBOOTMGR
+static int do_efibootmgr_cmd(cmd_tbl_t *cmdtp, int flag, int argc,
+ char * const argv[])
+{
+ char *fdt_opt;
+ int ret;
+
+ if (argc != 1)
+ return CMD_RET_USAGE;
+
+ fdt_opt = env_get("fdtaddr");
+ if (!fdt_opt)
+ fdt_opt = env_get("fdtcontroladdr");
+
+ ret = do_efibootmgr(fdt_opt);
+
+ free(fdt_opt);
+
+ return ret;
+}
+
+#ifdef CONFIG_SYS_LONGHELP
+static char efibootmgr_help_text[] =
+ "(no arguments)\n"
+ " - Launch EFI boot manager and execute EFI application\n"
+ " based on BootNext and BootOrder variables\n";
+#endif
+
+U_BOOT_CMD(
+ efibootmgr, 1, 0, do_efibootmgr_cmd,
+ "Launch EFI boot manager",
+ efibootmgr_help_text
+);
+#endif /* CONFIG_CMD_STANDALONE_EFIBOOTMGR */
--
2.20.1
More information about the U-Boot
mailing list