Some basic info: eMMC is the solid state hard drive. Normally the first partition serves as the root partition for Linux. Many other partitions follow this, but they are hidden partitions used during boot. A normal flash to a JTX2 on command line would use the “-S” parameter to name root partition size. The maximum root partition (least waste of disk) on a JTX2 would be this if done manually without JetPack:
sudo ./flash.sh -S 29318MiB jetson-tx2 mmcblk0p1
As mentioned above by @Andrey1984 you must be in recovery mode to flash a Jetson. Kernel and module updates under U-Boot do not require flash, they’re just file copies. Being in recovery mode or entering recovery mode has no risk, you won’t do anything to the Jetson unless the driver package is run (the flash.sh file or JetPack). When in recovery mode your Jetson becomes a custom device and the flash.sh program is the driver for that USB device (JetPack is a front end to flash.sh and other optional operations).
In that above command mmcblk0 represents the eMMC disk. mmcblk0p1 represents the first partition of eMMC. An SD card would be mmcblk1, and the first partition of an SD card would be mmcblk1p1. Normally you would not directly name the SD card in the flash.sh command line…instead most people would edit the “/boot/extlinux/extlinux.conf” file to point at mmcblk1p1 on the kernel command line (the “APPEND” key/value pair in extlinux.conf). The difference is that the boot environment remains on the Jetson if you flash to mmcblk0p1 and point the kernel command line at SD card; if instead you flash and directly name mmcblk1p1 (SD) as the install location, then you can no longer boot to eMMC without the SD card being present (some of the boot environment itself shifts to SD card in this latter case).
You can add more than one boot entry in extlinux.conf and select which entry you want if you have a serial console. See:
Note that during a flash an exact copy of everything which will go on the Jetson’s root partition is created (your host needs 28GB for that if your partition will be 28GB). This is turned into a “sparse” file (a form of compression) before sending to the Jetson. The flash.sh program can work with either the sparse file or the raw (uncompressed) file system. A clone can be used in place of the generated file system and you’ll restore the root partition if that is what was cloned. Cloning is a long procedure, but steps to do this are actually fairly simple.
Note that if you do an operation on a Jetson in recovery mode (such as clone or flash), then you must restart recovery mode for the next operation (e.g., you cannot clone then flash without restarting recovery mode between clone and flash).
You can of course do ordinary backups using existing purely Linux methods, e.g., rsync or dd. What’s interesting is that if you have a clone you can mount the clone on loopback and update the clone on occasion through rsync from Jetson to host. A clone (or any raw image) can be mounted on loopback and treated as a mounted disk.