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

Reply via email to