Rootfs A/B Redundancy on microSD card for TX2-NX based carrier board

I am trying to excecute the following command to flash rootfs a/b redundancy directly on 128Gb microSD but get errors
I am using the default config files, and haven’t modified anytihng.

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk1p1

cat initrdlog/flash_1-1_0_20250602-100912.log


  •                                        *
    
  • Step 1: Build the flashing environment *
  •                                        *
    

Create flash environment 0
~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra
~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra
Finish creating flash environment 0.


  •                                              *
    
  • Step 2: Boot the device with flash initrd image *
  •                                              *
    

~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/temp_initrdflash/bootloader0 ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra
./tegraflash.py --bl nvtboot_recovery_cpu_sigheader.bin.encrypt --bct br_bct_BR.bct --securedev --applet rcm_1_encrypt.rcm --cmd “rcmboot” --cfg secureflash.xml --chip 0x18 --mb1_bct mb1_cold_boot_bct_MB1_sigheader.bct.encrypt --mb1_cold_boot_bct mb1_cold_boot_bct_MB1_sigheader.bct.encrypt --bins “mb2_bootloader nvtboot_recovery_sigheader.bin.encrypt; mts_preboot preboot_d15_prod_cr_sigheader.bin.encrypt; mts_bootpack mce_mts_d15_prod_cr_sigheader.bin.encrypt; bpmp_fw bpmp_sigheader.bin.encrypt; bpmp_fw_dtb tegra186-bpmp-p3636-0001-a00-00_sigheader.dtb.encrypt; tlk tos-trusty_sigheader.img.encrypt; eks eks_sigheader.img.encrypt; kernel boot0_sigheader.img.encrypt; kernel_dtb kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt; sce_fw camera-rtcpu-sce_sigheader.img.encrypt; adsp_fw adsp-fw_sigheader.bin.encrypt; bootloader_dtb tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt” --instance 1-1
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

Entering RCM boot

[ 0.0000 ] rcm boot with presigned binaries
[ 0.0000 ] Boot Rom communication
[ 0.0010 ] tegrarcm_v2 --instance 1-1 --chip 0x18 0 --rcm rcm_1_encrypt.rcm
[ 0.0019 ] BootRom is not running
[ 5.1517 ]
[ 6.1583 ] tegrarcm_v2 --instance 1-1 --isapplet
[ 6.1615 ] Applet version 01.00.0000
[ 6.1909 ]
[ 6.1910 ] Sending BCTs
[ 6.1932 ] tegrarcm_v2 --instance 1-1 --download bct_bootrom br_bct_BR.bct --download bct_mb1 mb1_cold_boot_bct_MB1_sigheader.bct.encrypt
[ 6.1941 ] Applet version 01.00.0000
[ 6.2178 ] Sending bct_bootrom
[ 6.2179 ] […] 100%
[ 6.2193 ] Sending bct_mb1
[ 6.2204 ] […] 100%
[ 6.2370 ]
[ 6.2370 ] Generating blob
[ 6.2400 ] tegrahost_v2 --chip 0x18 --generateblob blob.xml blob.bin
[ 6.2408 ] number of images in blob are 13
[ 6.2413 ] blobsize is 54076360
[ 6.2414 ] Added binary blob_nvtboot_recovery_cpu_sigheader.bin.encrypt of size 224160
[ 6.2734 ] Added binary blob_nvtboot_recovery_sigheader.bin.encrypt of size 122272
[ 6.2737 ] Added binary blob_preboot_d15_prod_cr_sigheader.bin.encrypt of size 58256
[ 6.2741 ] Added binary blob_mce_mts_d15_prod_cr_sigheader.bin.encrypt of size 2197920
[ 6.2748 ] Added binary blob_bpmp_sigheader.bin.encrypt of size 534816
[ 6.2753 ] Added binary blob_tegra186-bpmp-p3636-0001-a00-00_sigheader.dtb.encrypt of size 139024
[ 6.2758 ] Added binary blob_tos-trusty_sigheader.img.encrypt of size 407360
[ 6.2761 ] Added binary blob_eks_sigheader.img.encrypt of size 1440
[ 6.2764 ] Added binary blob_boot0_sigheader.img.encrypt of size 49818000
[ 6.3071 ] Added binary blob_kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt of size 184624
[ 6.3144 ] Added binary blob_camera-rtcpu-sce_sigheader.img.encrypt of size 126032
[ 6.3149 ] Added binary blob_adsp-fw_sigheader.bin.encrypt of size 77616
[ 6.3154 ] Added binary blob_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt of size 184624
[ 6.3477 ]
[ 6.3478 ] Sending bootloader and pre-requisite binaries
[ 6.3500 ] tegrarcm_v2 --instance 1-1 --download blob blob.bin
[ 6.3509 ] Applet version 01.00.0000
[ 6.3738 ] Sending blob
[ 6.3739 ] […] 100%
[ 12.6827 ]
[ 12.6877 ] tegrarcm_v2 --instance 1-1 --boot rcm
[ 12.6908 ] Applet version 01.00.0000
[ 12.7216 ]
[ 12.7216 ] RCM-boot started

~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra


  •                                 *
    
  • Step 3: Start the flashing process *
  •                                 *
    

Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for target to boot-up…
Waiting for device to expose ssh …RTNETLINK answers: File exists
RTNETLINK answers: File exists
…RTNETLINK answers: File exists
RTNETLINK answers: File exists
Run command: if [ -f /qspi/l4t_flash_from_kernel.sh ]; then USER=root /qspi/l4t_flash_from_kernel.sh --no-reboot --qspi-only ; fi on root@fe80::1%enp0s20f0u1
4194304
[ 0]: l4t_flash_from_kernel: Starting to create gpt for emmc
Active index file is /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/tools/kernel_flash/images/internal/flash.idx
Number of lines is 57
max_index=56
writing item=21, 1:3:primary_gpt, 512, 2097152, gpt_primary_1_3.bin, 16896, fixed--0, 8c0a8c457eafb2fe495e4ff2b8ee23fb604b09e2
Writing primary_gpt partition with gpt_primary_1_3.bin
Offset is not aligned to K Bytes, no optimization is applied
dd if=/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/tools/kernel_flash/images/internal/gpt_primary_1_3.bin of=/dev/sdb bs=1 skip=0 seek=512 count=16896
16896+0 records in
16896+0 records out
16896 bytes (17 kB, 16 KiB) copied, 0.0720179 s, 235 kB/s
Writing primary_gpt partition done
Error: Invalid argument during seek for read on /dev/sdb
[ 2]: l4t_flash_from_kernel: Error: partprobe failed. This indicates that:

  • the xml indicates the gpt is larger than the device storage
  • the xml might be invalid
  • the device might have a problem.
    Please make correction.
    Error flashing non-qspi storage

Cleaning up…

hello ajoshi,

is it a developer kit? can you flash the target without ROOTFS_AB?
besides, please refer to developer guide, How to Create Redundant Root File Systems.
it should uses below partition layout file for your TX2 NX.
$OUT/Linux_for_Tegra/bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml

It is our custom carrier board based on Carrier Board from Auvidea. Yes I can flash the system without ROOTFS_AB. Also I am trying to flash directly on SD Card. When I try to flash with ROOTFS_AB on the on board 16GB emmc, it runs out of disk space. Hence I want to do it on 128G SD card which is what our requirement is.

hello ajoshi,

all right, you cannot use this flash command-line.
it’s using the cfg file, flash_l4t_t186_rootfs_ab.xml which utilize internal eMMC.

you’ll need to create a board configuration file for your customize board.
for instance, you should have.. <device type="sdcard" ...> as your partition layout types.
please see-also.. Jetson Xavier NX Development Module (P3668-0000) SD Card Partition for reference.

Ok thanks for the guidance. I will try to follow that and let you know how it goes.

Hello Jerry,

I modified the flash xml file flash_l4t_t186_rootfs_ab.xml to modify for device type sdcard, instance id 1 and num_sectors 268435456 to account for 32Gb sd card size. still I am getting following errors when I try to flash.

sudo ROOTFS_AB=1 tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk1p1 -S 32GiB -c bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml jetson-xavier-nx-devkit-tx2-nx external
/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/tools/kernel_flash/l4t_initrd_flash_internal.sh --no-flash --external-device mmcblk1p1 -S 32GiB -c bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml jetson-xavier-nx-devkit-tx2-nx external


  •                              *
    
  • Step 1: Generate flash packages *
  •                              *
    

Create folder to store images to flash
Generate images to be flashed
BOOTDEV=external /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/flash.sh --no-flash --sign --external-device -c “bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml” -S “32GiB” jetson-xavier-nx-devkit-tx2-nx external

###############################################################################

L4T BSP Information:

R32 , REVISION: 7.6

###############################################################################
./tegraflash.py --chip 0x18 --applet “/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin” --skipuid --cmd “dump eeprom boardinfo cvm.bin”
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0053 ] Generating RCM messages
[ 0.0064 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin 0 0
[ 0.0073 ] RCM 0 is saved as rcm_0.rcm
[ 0.0078 ] RCM 1 is saved as rcm_1.rcm
[ 0.0078 ] List of rcm files are saved in rcm_list.xml
[ 0.0078 ]
[ 0.0079 ] Signing RCM messages
[ 0.0103 ] tegrasign_v3.py --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0104 ] Assuming zero filled SBK key
[ 0.0172 ] Copying signature to RCM mesages
[ 0.0196 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[ 0.0317 ]
[ 0.0318 ] Boot Rom communication
[ 0.0342 ] tegrarcm_v2 --chip 0x18 0 --rcm rcm_list_signed.xml --skipuid
[ 0.0352 ] RCM version 0X180001
[ 0.0624 ] Boot Rom communication completed
[ 1.0693 ]
[ 2.0758 ] tegrarcm_v2 --isapplet
[ 2.0788 ] Applet version 01.00.0000
[ 2.1528 ]
[ 2.1579 ] Retrieving EEPROM data
[ 2.1583 ] tegrarcm_v2 --oem platformdetails eeprom cvm /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[ 2.1609 ] Applet version 01.00.0000
[ 2.2407 ] Saved platform info in /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cvm.bin
[ 2.3146 ]
Board ID(3636) version(301) sku(0001) revision(G.0)
Copy /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb to /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb.rec
Using UUID 7cad5387-cd29-4c96-9e83-1b00973d8bbc for mounting root APP_ext partition.
Using UUID c07853f8-a1d3-4d6e-91a7-99647f91e6f3 for mounting root APP_b_ext partition.
copying bctfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-memcfg-p3636-0001-a01.cfg)… done.
copying misc_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-misc-si-l4t.cfg)… done.
copying pinmux_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pinmux-p3636-0001-a00.cfg)… done.
copying pmic_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pmic-p3636-0001-a00.cfg)… done.
copying pmc_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-pad-p3636-0001-a00.cfg)… done.
copying prod_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-prod-p3636-0001-a00.cfg)… done.
copying scr_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/minimal_scr.cfg)… done.
copying scr_cold_boot_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/mobile_scr.cfg)… done.
copying bootrom_config(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/tegra186-mb1-bct-bootrom-p3636-0001-a00.cfg)… done.
copying dev_params(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT/emmc.cfg)… done.
Existing bootloader(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
copying initrd(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/l4t_initrd.img)… done.
Making Boot image… done.
done.
/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tegraflash.py --chip 0x18 --key --cmd sign boot.img kernel
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0004 ] Generating signature
[ 0.0017 ] tegrasign_v3.py --getmode mode.txt --key
[ 0.0018 ] Assuming zero filled SBK key : not reading
[ 0.0018 ] sign_type : 0
[ 0.0018 ] header_magic: 414e4452
[ 0.0256 ] tegrahost_v2 --chip 0x18 --align 1_boot.img
[ 0.0290 ]
[ 0.0314 ] tegrahost_v2 --chip 0x18 0 --appendsigheader 1_boot.img zerosbk
[ 0.0338 ]
[ 0.0372 ] tegrasign_v3.py --key --list 1_boot_sigheader.img_list.xml --pubkeyhash pub_key.key
[ 0.0373 ] Assuming zero filled SBK key : not reading
[ 0.0535 ] tegrahost_v2 --chip 0x18 0 --updatesigheader 1_boot_sigheader.img.encrypt 1_boot_sigheader.img.hash zerosbk
[ 0.0556 ]
[ 0.0565 ] Signed file: /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img.encrypt
l4t_sign_image.sh: Generate header for boot_sigheader.img.encrypt
l4t_sign_image.sh: chip 0x18: Don’t need to do anything
l4t_sign_image.sh: Generate 16-byte-size-aligned base file for boot_sigheader.img.encrypt
l4t_sign_image.sh: the signed file is /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img.encrypt
done.
/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tegraflash.py --chip 0x18 --key --cmd sign boot.img_b kernel
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0005 ] Generating signature
[ 0.0018 ] tegrasign_v3.py --getmode mode.txt --key
[ 0.0019 ] Assuming zero filled SBK key : not reading
[ 0.0019 ] sign_type : 0
[ 0.0019 ] header_magic: 414e4452
[ 0.0040 ] tegrahost_v2 --chip 0x18 --align 1_boot.img_b
[ 0.0051 ]
[ 0.0061 ] tegrahost_v2 --chip 0x18 0 --appendsigheader 1_boot.img_b zerosbk
[ 0.0082 ]
[ 0.0114 ] tegrasign_v3.py --key --list 1_boot_sigheader.img_b_list.xml --pubkeyhash pub_key.key
[ 0.0115 ] Assuming zero filled SBK key : not reading
[ 0.0259 ] tegrahost_v2 --chip 0x18 0 --updatesigheader 1_boot_sigheader.img_b.encrypt 1_boot_sigheader.img_b.hash zerosbk
[ 0.0279 ]
[ 0.0287 ] Signed file: /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img_b.encrypt
l4t_sign_image.sh: Generate header for boot_sigheader.img_b.encrypt
l4t_sign_image.sh: chip 0x18: Don’t need to do anything
l4t_sign_image.sh: Generate 16-byte-size-aligned base file for boot_sigheader.img_b.encrypt
l4t_sign_image.sh: the signed file is /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/boot_sigheader.img_b.encrypt
done.
Making recovery ramdisk for recovery image…
Re-generating recovery ramdisk for recovery image…
~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/ramdisk_tmp ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra
30412 blocks
_BASE_KERNEL_VERSION=4.9.337-tegra
~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/ramdisk_tmp/lib ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/ramdisk_tmp ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader ~/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra
66034 blocks
Making Recovery image…
copying recdtbfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb.rec)… done.
20+0 records in
20+0 records out
20 bytes copied, 0.000711384 s, 28.1 kB/s
Existing sosfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin) reused.
copying tegraboot(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/nvtboot.bin)… done.
Existing cpu_bootloader(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_cpu.bin) reused.
Existing mb2blfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery.bin) reused.
Existing mtspreboot(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/preboot_d15_prod_cr.bin) reused.
Existing mts(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mce_mts_d15_prod_cr.bin) reused.
Existing mb1file(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/mb1_prod.bin) reused.
Existing bpffile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/bpmp.bin) reused.
copying bpfdtbfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/tegra186-bpmp-p3636-0001-a00-00.dtb)… done.
Existing scefile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/camera-rtcpu-sce.img) reused.
Existing spefile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/spe.bin) reused.
copying wb0boot(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/warmboot.bin)… done.
Existing tosfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tos-trusty.img) reused.
Existing eksfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/eks.img) reused.
copying dtbfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb)… done.
Copying nv_boot_control.conf to rootfs
/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tegraflash.py --chip 0x18 --key --cmd sign kernel_tegra186-p3636-0001-p3509-0000-a01.dtb kernel_dtb
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0005 ] Generating signature
[ 0.0030 ] tegrasign_v3.py --getmode mode.txt --key
[ 0.0031 ] Assuming zero filled SBK key : not reading
[ 0.0031 ] sign_type : 909325875
[ 0.0031 ] header_magic: d00dfeed
[ 0.0052 ] tegrahost_v2 --chip 0x18 --align 1_kernel_tegra186-p3636-0001-p3509-0000-a01.dtb
[ 0.0062 ]
[ 0.0085 ] tegrahost_v2 --chip 0x18 0 --appendsigheader 1_kernel_tegra186-p3636-0001-p3509-0000-a01.dtb zerosbk
[ 0.0098 ]
[ 0.0130 ] tegrasign_v3.py --key --list 1_kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb_list.xml --pubkeyhash pub_key.key
[ 0.0131 ] Assuming zero filled SBK key : not reading
[ 0.0210 ] tegrahost_v2 --chip 0x18 0 --updatesigheader 1_kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt 1_kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.hash zerosbk
[ 0.0226 ]
[ 0.0232 ] Signed file: /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt
l4t_sign_image.sh: Generate header for kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt
l4t_sign_image.sh: chip 0x18: Don’t need to do anything
l4t_sign_image.sh: Generate 16-byte-size-aligned base file for kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt
l4t_sign_image.sh: the signed file is /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/temp_user_dir/kernel_tegra186-p3636-0001-p3509-0000-a01_sigheader.dtb.encrypt
done.
populating kernel to rootfs… done.
populating initrd to rootfs… done.
populating kernel_tegra186-p3636-0001-p3509-0000-a01.dtb to rootfs… done.
Making system.img…
populating rootfs from /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/rootfs … populating /boot/extlinux/extlinux.conf … done.
Sync’ing system.img … done.
Converting RAW image to Sparse image… done.
system.img built successfully.
Making system.img_b…
populating rootfs from /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/rootfs … populating /boot/extlinux/extlinux.conf … done.
Sync’ing system.img_b … done.
Converting RAW image to Sparse image… done.
system.img_b built successfully.
Existing tbcfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/cboot.bin) reused.
copying tbcdtbfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb)… done.
copying cfgfile(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml) to flash.xml… done.
Existing flasher(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/nvtboot_recovery_cpu.bin) reused.
Existing flashapp(/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/tegraflash.py) reused.
./tegraflash.py --bl nvtboot_recovery_cpu.bin --sdram_config tegra186-mb1-bct-memcfg-p3636-0001-a01.cfg --odmdata 0x2090000 --applet mb1_recovery_prod.bin --cmd “sign” --cfg flash.xml --chip 0x18 --misc_config tegra186-mb1-bct-misc-si-l4t.cfg --pinmux_config tegra186-mb1-bct-pinmux-p3636-0001-a00.cfg --pmic_config tegra186-mb1-bct-pmic-p3636-0001-a00.cfg --pmc_config tegra186-mb1-bct-pad-p3636-0001-a00.cfg --prod_config tegra186-mb1-bct-prod-p3636-0001-a00.cfg --scr_config minimal_scr.cfg --scr_cold_boot_config mobile_scr.cfg --br_cmd_config tegra186-mb1-bct-bootrom-p3636-0001-a00.cfg --dev_params emmc.cfg --bins “mb2_bootloader nvtboot_recovery.bin; mts_preboot preboot_d15_prod_cr.bin; mts_bootpack mce_mts_d15_prod_cr.bin; bpmp_fw bpmp.bin; bpmp_fw_dtb tegra186-bpmp-p3636-0001-a00-00.dtb; tlk tos-trusty.img; eks eks.img; bootloader_dtb tegra186-p3636-0001-p3509-0000-a01.dtb” --external_device
saving flash command in /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/flash_win.bat
*** Sign and generate flashing ready partition images… ***
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0207 ] Using default ramcode: 0
[ 0.0207 ] Disable BPMP dtb trim, using default dtb
[ 0.0207 ]
[ 0.0337 ] tegrasign_v3.py --getmode mode.txt --key None
[ 0.0338 ] Assuming zero filled SBK key
[ 0.0335 ] Generating RCM messages
[ 0.0366 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 0 --download rcm mb1_recovery_prod.bin 0 0
[ 0.0377 ] RCM 0 is saved as rcm_0.rcm
[ 0.0608 ] RCM 1 is saved as rcm_1.rcm
[ 0.0608 ] List of rcm files are saved in rcm_list.xml
[ 0.0608 ]
[ 0.0608 ] Signing RCM messages
[ 0.0644 ] tegrasign_v3.py --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0646 ] Assuming zero filled SBK key
[ 0.0814 ] Copying signature to RCM mesages
[ 0.0843 ] tegrarcm_v2 --chip 0x18 0 --updatesig rcm_list_signed.xml
[ 0.0864 ]
[ 0.0865 ] Parsing partition layout
[ 0.0973 ] tegraparser_v2 --pt flash.xml.tmp
[ 0.0987 ] Invalid device type sdcard_user
[ 0.1014 ]
Error: Return value 4
Command tegraparser_v2 --pt flash.xml.tmp
Error: /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/bootloader/signed/flash.idx is not found
Error: failed to relocate images to /home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/tools/kernel_flash/images
Cleaning up…

hello ajoshi,

may I know what’s rootdev of your target, is it only SD card?
if yes, you may try using the value mmcblk0p1 to flash a local storage device (i.e. eMMC or SD card)

Hi Jerry,

SInce the eMMC onboard TX2-NX Module is only 16GB, when I try to flash using rootfsA/B, it runs out of disk space, hence I want to flash the SDCard directly bypassing eMMC. If there is a way to flash rootFS A/B redundancy using hybrid of eMMC and SD Card then I am not aware of that.

sudo ROOTFS_AB=1 tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk0p1 -S 32GiB -c bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml jetson-xavier-nx-devkit-tx2-nx external
[sudo] password for anand:
/home/anand/nvidia/nvidia_sdk/JetPack_4.6.6_Linux_JETSON_TX2_TARGETS/Linux_for_Tegra/tools/kernel_flash/l4t_initrd_flash_internal.sh --no-flash --external-device mmcblk0p1 -S 32GiB -c bootloader/t186ref/cfg/flash_l4t_t186_rootfs_ab.xml jetson-xavier-nx-devkit-tx2-nx external


  •                              *
    
  • Step 1: Generate flash packages *
  •                              *
    

mmcblk0p1 is not a supported external storage device
Cleaning up…

hello ajoshi,

we don’t ship our TX2 NX with SD-card support, so we don’t support it by default.
you may have your own customize, please see-also Topic 229124 for reference.

In that case how do I flash eMMC with rootfs A/B redundancy, as I could not get it to work, as it was running out of disk space on the eMMC and wasn’t able flash rootfs. If I am able to do that then I can try to copy the eMMC contents on SD Card and boot from SD Card.
Thanks

hello ajoshi,

here’s the flash command-line, $ sudo ./tools/kernel_flash/l4t_initrd_flash.sh jetson-xavier-nx-devkit-tx2-nx <rootdev>
as you can see.. it’ll point-to the board configuration file, jetson-xavier-nx-devkit-tx2-nx.conf , which has source fromp3636.conf.common; you may add ROOTFS_AB=1 to the flash command-line, it’ll choose different partition layout and shrink the root file system size to 7GiB accordingly.

tar: etc/ssl/certs/Entrust_Root_Certification_Authority.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt’: No space left on device
tar: etc/ssl/certs/Certum_Trusted_Network_CA_2.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt’: No space left on device
tar: etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt’: No space left on device
tar: etc/ssl/certs/COMODO_Certification_Authority.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt’: No space left on device
tar: etc/ssl/certs/Entrust_Root_Certification_Authority_-G4.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority-G4.crt’: No space left on device
tar: etc/ssl/certs/NetLock_Arany
=Class_Gold=Főtanúsítvány.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/NetLock_Arany=Class_Gold=Főtanúsítvány.crt’: No space left on device
tar: etc/ssl/certs/Entrust_Root_Certification_Authority
-G2.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority-_G2.crt’: No space left on device
tar: etc/ssl/certs/DigiCert_Global_Root_CA.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt’: No space left on device
tar: etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt’: No space left on device
tar: etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem: Cannot create symlink to ‘/usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt’: No space left on device
tar: Exiting with failure status due to previous errors
Failed. Your APPSIZE might be too small.
Error: failed to generate images
Cleaning up…

I get these errors when I execute the following command based on your suggestion
sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1

hello ajoshi,

let me double check.. are you using TX2-NX DevKit?
or, what’s the size your eMMC storage.

I am using Auvidea TX2-NX carrier board with TX2-NX module having 16Gb storage.

hello ajoshi,

FYI, here’s the command we’ve verified on TX2 NX DevKit.
$ sudo ROOTFS_AB=1 ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1