This patch series adds the menu-driven boot device selection, by extending the existing "bootmenu" to include UEFI and distro_boot related entries.
The menu example shown with this patch series is as follows. *** U-Boot Boot Menu *** Boot 1. kernel (bootmenu_0) Boot 2. kernel (bootmenu_1) Reset board (bootmenu_2) debian (BOOT0000) ubuntu (BOOT0001) UEFI Boot Manager usb0 scsi0 virtio0 dhcp UEFI Boot Manager Maintenance U-Boot console Press UP/DOWN to move, ENTER to select, ESC/CTRL+C to quit This example shows three "bootmenu_0..2" entries, UEFI "Boot0000" and "Boot0001" entries, distro_boot "boot_targets" entries(usb0, scici0, virtio0 and dhcp) and some pre-defined entries(UEFI Boot Manager, UEFI Boot Manager Maintenance and U-Boot console). Note that this patch series aims to propose the above menu structure, the code quality is very low and requires much cleanup/refactoring. [How to run on QEMU(arm64)] 1) clone source code $ git clone https://git.linaro.org/people/masahisa.kojima/u-boot.git \ -b kojima/efibootmenu_v3_upstream --depth 2 2) update U-Boot .config $ make qemu_arm64_menuconfig then, enable CONFIG_CMD_BOOTMENU and CONFIG_AUTOBOOT_MENU_SHOW 3) run on QEMU(arm64) example $ qemu-system-aarch64 -machine virt,gic-version=3 -cpu cortex-a57 -m 4G -nographic \ -no-acpi -bios ./u-boot.bin -hda xxx.img [Changes in v3] - Major difference from previous version is that this version extends the existing bootmenu capability instead of updating efi bootmgr. - include distro_boot entries - "bootefi bootindex" command is newly added Masahisa Kojima (2): efi_loader: introduce "bootefi bootindex" command bootmenu: add UEFI and disto_boot entries cmd/bootefi.c | 42 ++++++ cmd/bootmenu.c | 268 +++++++++++++++++++++++++++++++++-- include/efi_loader.h | 1 + lib/efi_loader/efi_bootmgr.c | 7 +- 4 files changed, 305 insertions(+), 13 deletions(-) -- 2.17.1