Boot Time Optimization
NVIDIA® Jetson™ Linux provides a generic BSP for developing your product. To decrease boot time, customize the provided BSP components based on the requirements of your product.
For a Jetson Orin Nano Developer Kit running JetPack 5.1.2 with the default configuration, the average time from a cold power-on to the login prompt is approximately 36 seconds. By applying the following optimization techniques, the boot time can be significantly reduced to approximately 16 seconds.
Disable MB1/MB2 Logs
For an example using the Jetson Orin Nano series, modify the log_level
value to 0 in Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi
.
Modify Combined UART
For an example using the Jetson Orin Nano series, decompile Linux_for_Tegra/bootloader/t186ref/tegra234-bpmp-3767-0000-a02-3509-a02.dtb
with a suitable DTB tool into DTS format.
Next, delete the contents inside /serial
node of the generated DTS file.
Afterward, recompile tegra234-bpmp-3767-0000-a02-3509-a02.dts
back into DTB format.
Modify UEFI Components
For end users, some UEFI components are not necessary.
Remove networking related stacks from
NVIDIA.common.dsc.inc
andNVIDIA.fvmain.fdf.inc
:NetLib|NetworkPkg/Library/DxeNetLib/DxeNetLib.inf DpcLib|NetworkPkg/Library/DxeDpcLib/DxeDpcLib.inf UdpIoLib|NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf IpIoLib|NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.inf TcpIoLib|NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf HttpIoLib|NetworkPkg/Library/DxeHttpIoLib/DxeHttpIoLib.inf HttpLib|NetworkPkg/Library/DxeHttpLib/DxeHttpLib.inf NetworkPkg/DpcDxe/DpcDxe.inf NetworkPkg/ArpDxe/ArpDxe.inf NetworkPkg/Dhcp4Dxe/Dhcp4Dxe.inf NetworkPkg/Ip4Dxe/Ip4Dxe.inf NetworkPkg/MnpDxe/MnpDxe.inf NetworkPkg/SnpDxe/SnpDxe.inf NetworkPkg/VlanConfigDxe/VlanConfigDxe.inf NetworkPkg/Mtftp4Dxe/Mtftp4Dxe.inf NetworkPkg/TcpDxe/TcpDxe.inf NetworkPkg/Udp4Dxe/Udp4Dxe.inf NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf NetworkPkg/IScsiDxe/IScsiDxe.inf NetworkPkg/Ip6Dxe/Ip6Dxe.inf NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf NetworkPkg/Udp6Dxe/Udp6Dxe.inf NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf NetworkPkg/TlsDxe/TlsDxe.inf NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.inf NetworkPkg/DnsDxe/DnsDxe.inf NetworkPkg/HttpDxe/HttpDxe.inf NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf NetworkPkg/HttpBootDxe/HttpBootDxe.inf
Remove the SCSI bus stack from
Jetson.fdf
,NVIDIA.common.dsc.inc
, andNVIDIA.fvmain.fdf.inc
:MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe.inf MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe.inf MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe.inf MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru.inf MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe.inf
Remove the logo stack from
NVIDIA.common.dsc.inc
andNVIDIA.fvmain.fdf.inc
:MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf Silicon/NVIDIA/Drivers/Logo/LogoDxe.inf FILE FREEFORM = gNVIDIAPlatformLogoGuid { SECTION RAW = Silicon/NVIDIA/Assets/nvidiagray480.bmp SECTION RAW = Silicon/NVIDIA/Assets/nvidiagray720.bmp SECTION RAW = Silicon/NVIDIA/Assets/nvidiagray1080.bmp }
Remove the EQOS driver from
Jetson.fdf.inc
andJetson.dsc.inc
:Silicon/NVIDIA/Drivers/EqosDeviceDxe/EqosDeviceDxe.inf
Remove third party drivers. For an example, remove the Ethernet driver from
NVIDIA.common.dsc.inc
andNVIDIA.fvmain.fdf.inc
:Drivers/Realtek/Bus/Pcie/PcieNetworking/RtkUndiDxe.inf
Modify the UEFI
Timeout
value to 0 inNVIDIA.common.dsc.inc
:gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|0
Remove the UEFI shell from
NVIDIA.common.dsc.inc
andNVIDIA.fvmain.fdf.inc
:NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf NULL|ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2CommandsLib.inf ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf { <PcdsFixedAtBuild> gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize|FALSE } ShellPkg/DynamicCommand/TftpDynamicCommand/TftpDynamicCommand.inf ShellPkg/DynamicCommand/DpDynamicCommand/DpDynamicCommand.inf
Kernel Optimization
Pass
quiet
to the kernel command line by adding it to/boot/extlinux/extlinux.conf
.For strategies on reducing kernel boot time, refer to Kernel BootTime Optimzation.