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