Optimize Overall Jetson Boot Time for JP>=5.1

Hi,
I wish to ask the experienced users/staff here regarding optimizing the overall platform’s (currently devkit) boot time:

  • We read the boot optimization chapter in dev guide
  • We take in consideration that we use the slower UEFI + secure boot instead of lighter CBOOT in previous JPs
  1. We need to reduce the boot time as much as possible within a considerable amount of work. From your experience, what will be a feasible lower limit to expect?
    For example we don’t expect to reach a boot time of 5 seconds, but does 10-13 secs is feasible?

  2. What will be the best path to start from to achieve biggest reduction:

  • build custom light rootfs (busy box)
  • configure / edit UEFI source
  • configure kernel

Any additional tips will be much appreciated.

Thanks.

Hi BSP_User,

Are you working on the devkit or custom carrier board?

As far as I know and my experience, the total boot time could be optimized to 30s currently and you have the chance to optimize it to about 20s if you customize/remove more modules/services.

You can start from UEFI part since it takes long time during boot.
Please try to build custom UEFI source and update bootloader.

Hi @KevinFFF,

Currently I’m working on the devkit but the end target will be with a custom carrier board.

  1. Can you help/direct me with a starting point and working path regarding optimizing the UEFI?
    I’m not familiar with it and don’t know how to start and where to focus.

  2. From the devkit’s serial boot log it seems that the elapsed time from reset until UEFI boot completion is about ~ 21secs and loading the kernel until getting user shell takes additional ~ 20 secs.

So from your answer I can work on reducing UEFI boot time but rest of the boot process takes about the same time. Do you think that using my own custom rootfs and Busybox can help me with the kernel/rootfs loading duration?

Thanks

Please refer to Build with docker · NVIDIA/edk2-nvidia Wiki · GitHub to build and update UEFI binary in your BSP package(<Linux_for_Tegra>/bootloader/uefi_jetson.bin).

For the boot time optimization on custom carrier board, it is strongly depending on your requirement and the use case. You should review each kernel configs to check if they could be removed in your design.

Thanks,

I know how to modify the UEFI source code (there is a dev guide section regarding this). I meant in my question on where to start from in order to reduce its boot time. I’m not familiar with all the actions it does on startup and which of them I can disable to boot faster.

Maybe from your experience you can give me a few pointers on how to do/test it (maybe remove functionalities and tests the system that nothing was ruined).

Please enable the timestamp in your serial console and check the whole boot up flow so that you would know the boot time in each stage.

To reduce the boot time in UEFI, you can try to apply the patch from Optimizing boot time on Orin NX (JP5.1.2) - #15 by KevinFFF if you don’t have the network requirement in your use case.