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

Reply via email to