How to include custom boot logo in a single backup/restore cycle on JetPack 6.2 (SSD)

Hello,

I am using JetPack 6.2 on a Jetson Orin NX with an SSD. I have been creating a full system backup and then flashing that backup onto a new board/SSD, but my custom boot logo changes are not being applied automatically. Here are the steps I have been following:

  1. Create a backup by running:
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b jetson-orin-nano-devkit
  1. Modify nvrestore_partitions.sh: I uncomment the lines that check for a board mismatch, so that I can flash onto a different (new) board/SSD. Specifically, I uncomment:
# if [ ${BOARD_MATCH} = false ]; then
#   echo "${SCRIPT_NAME}: You are trying to flash images from a board model that does not"
#   echo "match the current board you're flashing onto."
#   exit 1
# fi
  1. Flash the backup onto the new Jetson Orin NX and SSD by running:
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -r jetson-orin-nano-devkit

This successfully restores all partitions and data—but it does not apply my custom boot logo.
4. To get my custom boot logo to appear again, I have to run an additional command after the restore:

sudo ./flash.sh -c bootloader/generic/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit internal

In other words, I need two separate steps: one to restore my backed-up rootfs/partitions, and then a second flash step to push the bootloader configuration that includes my custom logo. My question is:

Is there any way to combine both into a single backup/restore operation so that my custom boot logo (bootloader changes) is included automatically?

I’m using JetPack 6.2 on Jetson Orin NX with an NVMe SSD. Any guidance would be greatly appreciated—ideally, a method or script tweak that will let me run one command (or one sequence) to both restore the backup and apply my custom bootloader/boot logo changes in one go.

Thank you!

Hi,

Would you try to

  1. restore nvrestore_paritions.sh to default
  2. Follow the workflow3 to massflash the backup image to other device
  3. check custom boot log will show after massflash

Thanks

1 Like

I built UEFI with a custom logo as follows:

cd nvidia-uefi-r36.4.3/
edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh

Then I copied the file uefi_Jetson_RELEASE.bin into:

JetPack_6.2_Linux_JETSON_ORIN_NX_TARGETS/Linux_for_Tegra/bootloader/uefi_jetson.bin

After that, I flashed the device using these steps:

  1. Create a backup and start flashing:
sudo ./tools/backup_restore/l4t_backup_restore.sh -b -c jetson-orin-nano-devkit
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --use-backup-image --no-flash --network usb0 --massflash 4 jetson-orin-nano-devkit internal
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 4 --network usb0
  1. However, I get the following error:
**  WARNING: Test Key is +-----------------------------+                        
......                                                                          
>>Start HTTP Boot over IPv6.                                                    
  Error: Could not retrieve NBP file size from HTTP server.                     
                                                                                 
  Error: Unexpected network error.                                              
                                                                                 
>>Start HTTP Boot over IPv4.....                                                
  Error: Could not retrieve NBP file size from HTTP server.                     
                                                                                 
  Error: Server response timeout.

I tried modifying the line

data = "usb,nvme,emmc,sd,ufs";

to

data = "nvme, emmc, usb";

and then recreated the backup, but it still fails. Only when I run:

sudo ./flash.sh -c bootloader/generic/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit internal

does it succeed, but then the backup step errors out.

How can I fix this?

Hi,

Please try other commands like

sudo ./tools/backup_restore/l4t_backup_restore.sh  -e nvme0n1 -b -c jetson-orin-nano-devkit

Because your root file system is on the SSD [NVMe]

Thanks

1 Like

I’m running the following command to create a mass-flash image:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --use-backup-image --no-flash --network usb0 --massflash 4 jetson-orin-nano-devkit internal

If I move to a new computer after already having created a backup, which files do I need to copy over in order to be able to perform mass-flashing?

Here is the procedure I use to set up the environment on the new machine:

sudo tar xf Jetson_Linux_r36.4.3_aarch64.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_r36.4.3_aarch64.tbz2
cd ..
sudo ./tools/l4t_flash_prerequisites.sh
sudo ./apply_binaries.sh
sudo ./tools/l4t_flash_prerequisites.sh

Could you advise which files and directories I need to copy from my old machine so that the above mass-flash command will work on the new one?

Hi,

Do you mean your new computer have other backup image, different from old computer?

Thanks

What I mean is that, after creating a backup (as we do on Jetson NX), I only need to copy the generated system.img file into the bootloader folder in order to flash it onto a new device. Copying the entire Linux_for_Tegra directory would be too large, so my workflow is:

sudo tar xf Jetson_Linux_r36.4.3_aarch64.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_r36.4.3_aarch64.tbz2
cd ..
sudo ./tools/l4t_flash_prerequisites.sh
sudo ./apply_binaries.sh

This sets up the flashing environment on a new machine. After that, I simply copy the system.img (and any other necessary backup files) into the appropriate folder, and then run the mass-flash command.

My question is: once I have created the backup, which exact files (for example, system.img or anything else) do I need to copy into the new Linux_for_Tegra environment so that I can run the mass-flash successfully?

Steps I Followed on a Working System to Create a Backup and Mass-Flash Package

  1. Remove old backup files (if not needed):
sudo rm -r tools/backup_restore/images
sudo rm -rf tools/kernel_flash/images/*
sudo rm -f mfi_*.tar.gz
  • copy file uefi replace “data = “usb,nvme,emmc,sd,ufs”;” to “data = “nvme, emmc, usb”;”
cp ./build/nvidia-uefi-r36.4.3/images/uefi_Jetson_RELEASE.bin ./JETPACK6.2_Nv/JetPack_6.2_Linux_JETSON_ORIN_NX_TARGETS/Linux_for_Tegra/bootloader/uefi_jetson.bin
  1. Put the Jetson into Recovery mode and create a backup of the NVMe drive:
sudo ./tools/backup_restore/l4t_backup_restore.sh -e nvme0n1 -b -c jetson-orin-nano-devkit
  1. Create a Mass-Flash package :
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --use-backup-image --no-flash --network usb0 --massflash 4 jetson-orin-nano-devkit internal
  1. Put the target Jetson back into Recovery mode and run the actual flash:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 4 --network usb0

At this point, I see the following output and the process hangs:

**  WARNING: Test Key is +-----------------------------+
......
>>Start HTTP Boot over IPv6.
  Error: Could not retrieve NBP file size from HTTP server.

  Error: Unexpected network error.

>>Start HTTP Boot over IPv4.....
  Error: Could not retrieve NBP file size from HTTP server.

  Error: Server response timeout.

Question:
Is there any step I did incorrectly? What am I missing that causes the HTTP boot to fail when attempting to flash the mass-flash package?

Thank you!

Hi,

This issue might be discussed in Boot Issue After Image Recovery on NVMe SSD Orin Nano Custom Board Jetpack6.1 - #12 by KevinFFF and L4t_backup_restore restore backup long boot up times - #6 by lhoang.

The solution is to use efibootmgr to change the boot order.

Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.