The micro-B USB cable from the micro-OTG USB port to the host PC is how a flash is accomplished. The Jetson has to be in recovery mode. Recovery mode by itself does nothing (you can go to recovery mode as many times as you want just to see it, and nothing will happen without further software from the host), but the Jetson looks like a custom USB device when in that mode. The host runs the driver package which understands this device and can flash.
Some terms: JetPack is just a graphical front end. When JetPack flashes it really runs the driver package…and this is the “flash.sh” script. The Jetson is in recovery mode with the micro-B USB cable connected during the flash. After a flash completes (if flash was checked to run), then extra packages can be installed. Those go over wired ethernet. If no flash is done, then only wired ethernet is required. If no extra packages are added and only flash is to occur, then only the micro-B USB cable (plus recovery mode) is needed.
JetPack will download and install the driver package for you. When you hear about the “Linux_for_Tegra/” folder his is from unpacking the driver package. Within this the master flash command is via the “Linux_for_Tegra/flash.sh” script. The “apply_binaries.sh” script is also in this folder, and the sample rootfs goes in “Linux_for_Tegra/rootfs/”. The driver package is never unpacked as root (never with sudo). The sample rootfs is always unpacked with root authority (with sudo). Following unpack of sample rootfs some files are added to this via the “sudo ./apply_binaries.sh” step. After that it is ready to flash (those previous steps are not required for each flash, these are just preparation).
Note that JetPack specifically requires an Ubuntu host. The driver package, when run on command line, will run on any 64-bit desktop Linux PC (I use Fedora). Mostly I run the driver package directly. I have an old Ubuntu atom laptop I use when I want to use JetPack for packages.
Note that if JetPack is used and both flash and package addition are chosen, then when the Jetson reboots it has a mechanism to report the IP address of the freshly booted Jetson to the JetPack installer. If you did not just flash, then you will have to watch the prompts or pop-ups to see if JetPack needs to know the IP address of the Jetson (which might in turn be found on the Jetson with “ifconfig”).
You add or remove packages at any time. Just uncheck flash steps.
The next release of JetPack (which is also the next release of the driver package) should be very soon, and this will provide Ubuntu 18.04 on both the TX2 and Xavier. The method here is a workaround to the current default Ubuntu 16.04. The usual Ubuntu mechanism for upgrade to 18.04 would leave the Jetson unbootable since it has no concept of this hardware’s boot requirements.