Elvin, thanks! It works.

From: [email protected]
To: [email protected]
Date: Fri, 23 May 2014 05:15:38 +0000
Subject: Re: [edk2] [Help needed] Failed to enable new shell in edkII









Hi,
                Try to  add the change below to NT32.dsc.  I got this sample 
from OVMF DSC file. You could try.
At least, if PcdShellLibAutoInitialize is set to false, assert could not happen.
 
  ShellPkg/Application/Shell/Shell.inf {
    <LibraryClasses>
      
ShellCommandLib|ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.inf
      
NULL|ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellLevel1CommandsLib/UefiShellLevel1CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1CommandsLib.inf
      
NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf
      
HandleParsingLib|ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.inf
      FileHandleLib|ShellPkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf
      ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf
      SortLib|ShellPkg/Library/UefiSortLib/UefiSortLib.inf
      PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
      PathLib|ShellPkg/Library/BasePathLib/BasePathLib.inf
 
    <PcdsFixedAtBuild>
      gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
  }
 
Thanks
Elvin Li
 


From: cheney chen [mailto:[email protected]]


Sent: Friday, May 23, 2014 11:42 AM

To: [email protected]

Subject: Re: [edk2] [Help needed] Failed to enable new shell in edkII


 

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                         
                  
------------------------------------------------------------------------------
"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