@WayneWWW and @carolyuu I want to include you both to make sure the documentation and future guidance can be corrected. I have managed to successfully move the root file system to a USB drive and then also to an NVMe drive. The key steps that were missing in the docs, in advice here, and elsewhere was to… at the very end… connect the drive to the Jetson, switch the Jetson to recovery mode, connect the Jetson to your host, and run the following command on your host.
sudo ./flash.sh jetson-agx-xavier-devkit sda1
sudo ./flash.sh jetson-agx-xavier-devkit nvme0n1p1
This is all after already cloning the root file system to your drive… from literally anywhere (Linux_for_Tegra/rootfs or Linux_for_Tegra/bootloader/system.img.raw or even just rsync-ing your live root file system from the built-in eMMC while the Jetson is booted up)… and making sure /boot/extlinux/extlinux.conf on the drive has root=/dev/sda1 or root=/dev/nvme0n1p1 instead of root=/dev/mmcblk0p1
As it stands I don’t see any way to just stick your root file system on a USB drive, NVMe, or otherwise… and just reboot… as the Developer Guide states. You have to run the command to make the Jetson target the USB/NVMe as its new root file system drive or you will never be able to use it… as your root file system drive. Honestly I think this whole area of the docs on Flashing and Booting and the CBoot sections need to be completely revamped as they are misleading and riddled with errors. We need to clearly distinguish between “booting from” (completely removing dependence on the built-in eMMC… still a little fuzzy on the boot process but I think this is impossible) and simply “changing your root file system target” (which is all that I did so that I can have space to my heart’s content without ugly hacks). I hope this can serve to help others on their journey to experiment with an otherwise epic platform.
Possibly the most important point of all that I almost forgot. Ignore the errors in the USB section at boot (like those shown in my previous messages) as this seems to have nothing to do with your root file system being mounted correctly. Only after booting up and running lsblk was I shocked to discover that my root file system had in fact mounted from my USB drive despite all the USB errors that seemingly skipped the drive altogether.
Also equally important to note is that you must run this command from your host (with Jetson connected in recovery mode of course) every time you want to change the source/drive of your root file system. You might think you can just pop that USB out and it would boot from the built-in eMMC… but you’d be wrong… boot just stalls out at some point because if you examine the built-in eMMC’s APP partition now you’ll see that it only contains the boot folder and nothing else. Admittedly having to switch the root file system source/drive will be a rare task but still… no fallbacks… come on…