Is it possible to clone a TK1's OS and deploy it to a new Jetson?

Does anyone know how, or if it’s possible, to clone the Jetson’s eMMC, and use that to deploy a new Jetson (or the same one, in the event it fails to boot)? While the introduction of JetPack has greatly reduced my deployment time, I’ve still found that to get a TK1 up and running to where I need it to be is a very time consuming task. Installing packages, recompiling kernels, running fixes for OpenCV, compiling CUDA code, modifying ROS packages to work with OpenCV…it’s a time consuming task. Being able to simply make a clone and use that to deploy Jetsons ready to go would be much easier.

My guess is that the answer is no, but I figured I’d at least ask if anyone has looked into it.

It’s easy to do. Just make sure you have enough disk space :)

TK1 cloning is explained here:

The root partition is what most people will clone, and this can be loopback mounted, explored, and edited…then flashed back onto the root partition of the TK1. There are many hidden partitions though, so it might be that if one Jetson has an earlier version of L4T, then the root partition might not work as expected with the rest of the system.

If you use the clone target “ALL”, then you get a single large file representing the entire eMMC, including hidden partitions. This cannot be loopback mounted, although it is actually possible to extract rootfs via dd from such a file…and then mount the extracted subset of “ALL”. If you flash ALL, then you get the original operating system hidden files as well. Most people only want the rootfs (“APP”) partition.

Cloning is a good way to deal with bulk Jetsons. You can also loopback mount the cloned rootfs and use rsync against this to update a backup system for the Jetson.