L4T is what actually gets flashed, and this is just an Ubuntu release with NVIDIA drivers. When being flashed the Jetson becomes a custom USB device understood by the custom driver, appropriately named the “driver package” (this is the actual flash software, and is run from a host PC on Linux). It used to be that all flashes were command line only, and then JetPack was introduced. Command line works on many hosts.
JetPack is a GUI on top of the flash software. This further limits the host which can be used, but it also adds a lot of features related to optional content and host setup. JetPack runs with SDK Manager, which is a smart network layer on top of JetPack, and enables a lot of automatic correct download and install. Strictly speaking, JetPack isn’t mandatory, but it is better if you can use it.
You cannot install an incorrect release of L4T (L4T R32.x is Ubuntu 18.04; L4T R35.x is Ubuntu 20.04), but you can set up for flash without JetPack if you are willing to do manual steps.
This is the URL for the various L4T releases, and you’d want R32.x or R35.x:
https://developer.nvidia.com/linux-tegra
Incidentally, when you pick the L4T release, you’ve paired it with a JetPack release (they are sort of tied together).
For all flashes your host filesystem type must be ext4
(non-Linux filesystem types are incapable of proper flash). If you have enough disk space (it is a lot required; more than double the size of the eMMC on your Jetson will be required), then this is the basic setup prior to flash:
- Download the “driver package”.
- Find an empty location and unpack this as a regular user.
- This would have produced subdirectory “
Linux_for_Tegra/
”. Most instructions are relative to that location.
- Download the “sample root filesystem”.
- Within “
Linux_for_Tegra/rootfs/
” unpack the sample rootfs with sudo.
- Go back to “
Linux_for_Tegra/
”, and then run “sudo ./apply_binaries.sh
”. Basic setup is now complete to flash as many times as you want.
There is an optional “tools/l4t_create_default_user.sh
” script. You can run that with sudo
if you want to pre-create your admin user and complete the first boot setup (which includes admin user name and password). If you do this, then that will exist on every flash. Beware that you cannot ship default name/pass combinations as a final product in California.
At “Linux_for_Tegra/
” examine the .conf
files:
ls -l jetson*.conf
Each of those are an alias to a combination of carrier board model and module model. All of these, if you remove the .conf
, are flash targets. A 32GB dev kit AGX Xavier corresponds to:
- File
jetson-agx-xavier-devkit.conf
.
- Target
jetson-agx-xavier-devkit
.
There are alternate tools if you are doing more advanced flashes. This includes initrd
flash when using external boot devices.
An eMMC model (which a 32GB dev kit would be) would be a basic flash command like this:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1
This does not offer optional package install, so you would have to install things like CUDA manually…only the Jetson version works, so you’d have to have the right repo and know the name of the package to install.
Incidentally, if you want to log that flash, you could append " 2>&1 | tee log_name.txt
" to the end of the command for posting it on forums:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1 2>&1 | tee log_flash.txt
The above should work on Linux PCs of different distributions if you have all of the correct components. If you were to read the requirements in documentation you might find a need for other tools such as QEMU. If you lack those tools, then installing the same ones that JetPack needs should fulfill this (you’d just be doing this manually).