UEFI build unsuccessful after removing UEFI shell

Hello,

I want to optimize the boot time by removing the UEFI shell. I followed the steps mentioned in

I have removed the shellPkg from NVIDIA.coomon.dsc.inc and NVIDIA.fvmain.fdf.inc files. But still, there were Shell Pkg dependencies in Jetson.dsc. Is there any way that I can turnoff the shell from the top level?

I’ve cloned the edk2-nvidia from r35.6.1-updates branch and I was able to build the UEFI firmware without the Docker option.
Please find the attached build log for review.

Hardware : Jetson AGX Xavier Devkit
Version : R35.6.1
Host System Os : Ubuntu 22.04.5 LTS.

BUILDLOG_Jetson.txt (10.6 KB)

I’d really appreciate your help.

Thanks
Vamsi

Hi v_vuyyuru,

I’ve verified it working to build UEFI source with the following steps.

  1. clone the source
$ edk2_docker edkrepo clone nvidia-uefi-r35.6.1-updates NVIDIA-Platforms r35.6.1-updates
  1. apply the patch in edk2-nvidia
 Platform/NVIDIA/NVIDIA.common.dsc.inc | 3 +++
 Platform/NVIDIA/NVIDIA.fvmain.fdf.inc | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/Platform/NVIDIA/NVIDIA.common.dsc.inc b/Platform/NVIDIA/NVIDIA.common.dsc.inc
index d3450d65..87483bb7 100644
--- a/Platform/NVIDIA/NVIDIA.common.dsc.inc
+++ b/Platform/NVIDIA/NVIDIA.common.dsc.inc
@@ -883,6 +883,7 @@ CONFIG_MEMORY_TEST=n
   MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
   Drivers/ASIX/Bus/Usb/UsbNetworking/Ax88772c/Ax88772c.inf
 
+!if 0
   #
   # UEFI application (Shell Embedded Boot Loader)
   #
@@ -912,6 +913,8 @@ CONFIG_MEMORY_TEST=n
     <PcdsFixedAtBuild>
       gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE
   }
+!endif
+
   MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
   MdeModulePkg/Application/VariableInfo/VariableInfo.inf
 
diff --git a/Platform/NVIDIA/NVIDIA.fvmain.fdf.inc b/Platform/NVIDIA/NVIDIA.fvmain.fdf.inc
index 2e5ea98d..2e86e8fd 100644
--- a/Platform/NVIDIA/NVIDIA.fvmain.fdf.inc
+++ b/Platform/NVIDIA/NVIDIA.fvmain.fdf.inc
@@ -182,6 +182,7 @@
   INF NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf
   INF NetworkPkg/HttpBootDxe/HttpBootDxe.inf
 
+!if 0
   #
   # Shell dynamic commands
   #
@@ -192,6 +193,8 @@
   # UEFI applications
   #
   INF ShellPkg/Application/Shell/Shell.inf
+!endif
+
   INF MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenuApp.inf
   INF MdeModulePkg/Application/VariableInfo/VariableInfo.inf
   INF SecurityPkg/EnrollFromDefaultKeysApp/EnrollFromDefaultKeysApp.inf
-- 
  1. build UEFI source
$ edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh

Hello Kevin,

Thanks for your reply. I applied the patch and It works. I’ve tried removing the network stack in the same way mentioned in the Boot Time Optimization — NVIDIA Jetson Linux Developer Guide 1 documentation

I got this error while building uefi. Please look into the buildlog.
ERROR - Compiler #4000 from /home/vamsi/edkrepo/nvidia-uefi/edk2-nvidia/Platform/NVIDIA/Jetson/Jetson.dsc(...): Instance of library class [NetLib] is not found

BUILDLOG_Jetson.txt (10.6 KB)

This was my patch file to remove the network stack.
patch_file.txt (3.3 KB)

I’d really appreciate your help.

Thanks
Vamsi