Clone Emmc Internal Storage to external NVMe and make it bootable

Requirement: I am working on NVIDIA AGX ORIN 64 GB Developer Kit. The internal memory is not sufficient so I purchase and mounted a NVMe storage of 1 TB. My main requirement is to move my entire file system to this external storage.
I see 2 solutions

  1. Make the NVMe drive bootable and completely shift all booting process to NVMe

  2. Boot from Emmc drive and somehow make the file system or APP partition point to my NVMe storage.

I have data (60 GB) in my Emmc drive which I want to clone and move as it is into my NVMe drive. I am very confused on which workflow to follow and which commands to enter in my host machine using the l4t_initrd_flash. Can you please provide me with the exact commands for the same ?

  1. Generate image of Emmc
  2. Make the file system in NVMe using this image
  3. Either make NVMe bootable / Make the Emmc to point to this new file system.

Thanks a lot.

We don’t have an official workflow for this usecase, but you may try the following thing:

  1. Clone the eMMC with:
    Flashing Support — NVIDIA Jetson Linux Developer Guide 1 documentation
    , or:
    https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/SD/FlashingSupport.html#to-clone-a-jetson-device-and-flash

  2. Generate the system image for NVMe with

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml --external-only \
  --showlogs --network usb0 jetson-agx-orin-devkit internal
  1. Replace Linux_for_Tegra/tools/kernel_flash/images/external/system.img with the one just cloned, and flash the device with

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only

  1. The rootfs will still be mounted over eMMC even though you choose to boot from NVMe. Modify /boot/extlinux/extlinux.conf on the NVMe drive, so it looks like root=/dev/nvme0n1p1.