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 AGX Orin™ Developer Kit running NVIDIA JetPack™ 6.0, boot from the internal QSPI and eMMC with the default configuration. The average time from a cold power-on to the login prompt is approximately 43 seconds. By applying the following optimization techniques, the boot time can be significantly reduced to approximately 26 seconds.

For a Jetson Thor™ Developer Kit running NVIDIA JetPack™ 7.0, boot from the internal QSPI and NVMe with the default configuration. The average time from a cold power-on to the login prompt is approximately 38 seconds. By applying the following optimization techniques, the boot time can be significantly reduced to approximately 24 seconds.

Disable MB1/MB2 Logs#

For an example using the Jetson AGX Orin™ series, modify the log_level value to 0 in Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi.

For an example using the Jetson Thor™ series, modify the log_level value to 0 in Linux_for_Tegra/bootloader/tegra264-mb1-bct-debug-defaults.dtsi.

      debug {
                     uart_instance = <2>;
                     wdt_period_secs = <10>;
-#ifdef DISABLE_UART_MB1_MB2
                     log_level = <0>;
-#else
-                    log_level = <4>;
-#endif
                     enable_wdt = <1>;
                     disable_wdt_globally = <0>;
                     enable_rcm_usb3 = <0>;

Modify Combined UART#

For an example using the Jetson AGX Orin™ series, decompile Linux_for_Tegra/bootloader/generic/tegra234-bpmp-3701-0000-3737-0000.dtb with a suitable DTB tool into DTS format. Next, delete the contents inside the /serial node of the generated DTS file. Afterward, recompile tegra234-bpmp-3701-0000-3737-0000.dts back into DTB format.

For an example using the Jetson Thor™ series, decompile Linux_for_Tegra/bootloader/generic/tegra264-bpmp-3834-0008-4071-xxxx.dtb with a suitable DTB tool into DTS format. Next, delete the contents inside the /serial node of the generated DTS file. Afterward, recompile tegra264-bpmp-3834-0008-4071-xxxx.dts back into DTB format.

   / {
         serial {
-               port = <127>;
-               has_input;
         };
   };

Modify UEFI Components#

For end users, some UEFI components are not necessary. Refer to miniUEFI Support chapter in UEFI Adaptation.

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 Optimization.

Enable Service#

The nvbootkpi.service is installed to /etc/systemd/system/.

To note the systemd_end timestamp in the carveout, first verify that the service unit is present on the target, then enable it:

  1. Verify the unit file exists:

    systemctl list-unit-files nvbootkpi.service
    

    If the service is listed, proceed to the next step.

  2. Enable the service:

    systemctl enable nvbootkpi.service
    

After collecting boot time metrics, you can optionally disable the service:

systemctl disable nvbootkpi.service

Check Profiler Entries#

Run cat /sys/kernel/tegra_bootloader/profiler to get timestamps from carveout.