Only auto-generate boot options for removable media. For testing the different handling of removable and non-removable devices an emulated USB device can be used:
make qemu-riscv64_smode_defconfig; make qemu-system-riscv64 -M virt -kernel u-boot.bin -nographic \ -device qemu-xhci -drive if=none,file=disk.img,format=raw,id=USB1 \ -device usb-storage,drive=USB1,removable=on Fixes: c416f1c0bcab ("bootmenu: add removable media entries") Fixes: 339b527bd450 ("Move bootorder and bootoption apis to lib") Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com> --- lib/efi_loader/efi_bootmgr.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c index a40762c74c..96d45157b3 100644 --- a/lib/efi_loader/efi_bootmgr.c +++ b/lib/efi_loader/efi_bootmgr.c @@ -346,7 +346,7 @@ error: } /** - * efi_bootmgr_enumerate_boot_option() - enumerate the possible bootable media + * efi_bootmgr_enumerate_boot_option() - boot options for removable boot media * * @opt: pointer to the media boot option structure * @volume_handles: pointer to the efi handles @@ -370,6 +370,9 @@ static efi_status_t efi_bootmgr_enumerate_boot_option(struct eficonfig_media_boo struct efi_device_path *device_path; struct efi_device_path *short_dp; + if (!efi_disk_is_removable(volume_handles[i])) + continue; + ret = efi_search_protocol(volume_handles[i], &efi_guid_device_path, &handler); if (ret != EFI_SUCCESS) continue; @@ -674,7 +677,10 @@ efi_status_t efi_bootmgr_update_media_device_boot_option(void) goto out; } - /* enumerate all devices supporting EFI_SIMPLE_FILE_SYSTEM_PROTOCOL */ + /* + * Enumerate all removable devices supporting the + * EFI_SIMPLE_FILE_SYSTEM_PROTOCOL. + */ ret = efi_bootmgr_enumerate_boot_option(opt, volume_handles, count); if (ret != EFI_SUCCESS) goto out; -- 2.40.1