On 5/27/20 5:57 PM, Laszlo Ersek wrote:
On 05/26/20 18:13, Ard Biesheuvel wrote:
Add a plug-in library for UiApp that creates a 'UEFI Shell' menu
option at the root level which gives access to a form that allows
the UEFI Shell to be launched.
This gives the PlatformBootManagerLib implementation of the platform
more flexibility in the way it handles boot options pointing to the
UEFI Shell, which will typically be invoked with only the boot path
connected on fast boots.
This library may be incorporated to a platform build by adding a
NULL resolution to the <LibraryClasses> section of the UiApp.inf
{} block in the platform .DSC
Signed-off-by: Ard Biesheuvel <ard.biesheu...@arm.com>
---
ShellPkg/Library/ShellBootManagerLib/ShellBootManagerLib.inf | 45 ++++
ShellPkg/Library/ShellBootManagerLib/ShellBootManagerLib.h | 44 ++++
ShellPkg/Library/ShellBootManagerLib/ShellBootManagerLib.c | 258
++++++++++++++++++++
ShellPkg/Library/ShellBootManagerLib/ShellBmStrings.uni | 17 ++
ShellPkg/Library/ShellBootManagerLib/ShellBmVfr.Vfr | 37 +++
5 files changed, 401 insertions(+)
I've had to go back to the blurb and re-read this part, to understand
the goal of this patch:
- finally, add a plugin library for UiApp to expose the UEFI Shell via an
ordinary main menu option (this works around the fact that patch #3 will
result in the UEFI Shell disappearing from the Boot Manager list).
Entering the shell this way will resemble the old situation, given that
UiApp connects all devices and refreshes all boot options etc at launch.
If I understand correctly:
- patch #3 does two things: it clears LOAD_OPTION_ACTIVE (preventing the
boot manager from auto-booting the shell), and sets LOAD_OPTION_HIDDEN
(hiding the boot option from UiApp),
- patch #5 undoes LOAD_OPTION_HIDDEN, in effect -- it makes sure that we
still see the shell option "somewhere" in UiApp (not among the boot
options, but at the root level)
Can we:
- drop patch#5, and
- pass zero (0) as "Attributes" to PlatformRegisterFvBootOption() in
patch#3, rather than LOAD_OPTION_HIDDEN?
Because, per spec, Attributes=0 should prevent the auto-booting of the
shell *without* hiding the shell boot option from the menu.
I feel slightly silly having gone through all the trouble of writing
this patch. I tried playing with the ACTIVE and HIDDEN options, and
couldn't get this to work. If I understand these quotes correctly, this
is an error, and instead of working around this, we should apply the
following patch to correct it:
--- a/MdeModulePkg/Library/BootManagerUiLib/BootManager.c
+++ b/MdeModulePkg/Library/BootManagerUiLib/BootManager.c
@@ -537,7 +537,7 @@ UpdateBootManager (
//
// Don't display the hidden/inactive boot option
//
- if (((BootOption[Index].Attributes & LOAD_OPTION_HIDDEN) != 0) ||
((BootOption[Index].Attributes & LOAD_OPTION_ACTIVE) == 0)) {
+ if (((BootOption[Index].Attributes & LOAD_OPTION_HIDDEN) != 0)) {
continue;
}
With this change applied, adding the shell option without the 'active'
or 'hidden' flags works as expected: it appears in the boot manager
menu, but is not booted automatically.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#60364): https://edk2.groups.io/g/devel/message/60364
Mute This Topic: https://groups.io/mt/74481040/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-