By the way, looks like the entry point of Shell.efi was called after
ProcessLibraryConstructorList(). The shell protocols are to be installed in
Shell.efi's entry point. So it seems to me that these protocols are consumed by
library constructor prior to they are installed. I must be misunderstanding
something. Can anybody direct me to the right way?
Thanks,Cheney
From: [email protected]
To: [email protected]
Date: Fri, 23 May 2014 03:33:12 +0000
Subject: [edk2] [Help needed] Failed to enable new shell in edkII
Hi all,
I downloaded the source from the latest edkII tree. Currently the shell
application used is from EdkShellBinPkg/FullShell/FullShell.inf, which is
standard shell built as binary. What I want to try is to build a new shell from
source, located in ShellPkg/Application/Shell/Shell.inf.
I followed the steps described in ShellPkg\Readme.txt.
1. Add this shell build to the NT32 build: Add the shell.inf to the
[components] section as it is in the ShellPkg.dsc.
2. Update system PCDs to support this new module Update the PCD as follows
using the Shell's PCD:
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0x83, 0xA5, 0x04,
0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1 }
3. Remove the old shell from the NT32 Firmware list Remove the FILE
APPLICATION section for the old shell.
4. Add this shell to the NT32 firmware list Add the Shell.INF to the end of
the list of DXE modules.
5. Build NT32
However, it doesn't build. The error shown is something like "Instance of
library class [ShellCommandLib] is not found". I solved this build error by
adding the these libraries into Nt32Pkg.dsc, section
[LibraryClasses.common.UEFI_APPLICATION].
ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
FileHandleLib|ShellPkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
SortLib|ShellPkg/Library/UefiSortLib/UefiSortLib.inf
HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
PathLib|ShellPkg/Library/BasePathLib/BasePathLib.inf
Now it builds. But when I was trying "build run", there is an assert error
shown as "ASSERT_EFI_ERROR(Status = Not Found)". After tracing into debug code,
the assert was found coming from ProcessLibraryConstructorList() function in
AutoGen.c file.
Status = ShellLibConstructor (ImageHandle, SystemTable); ASSERT_EFI_ERROR
(Status);
The constructor tried to locate either UEFI2.0 shell or older shell protocols.
But neither was found so the constructor returned with "EFI_NOT_FOUND" which
led to the assert error.
Can anyone help? What I am missing?
Thanks,Cheney
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel