Because it sucks so bad, it even fails to flash the TX1 as of march 2025. Also, it does not let you flash to the SD card, and there is a million other reasons not to use it
0. Files needed (sha512 sums)
017e6c0f5f903d0b3f50454b45d41a86b693a11c6cba37eec32e5e110e1f37ef4163b568a8d60ca51cba472c430567dd828bf03fee8a174442d1ac2239e25df9 Tegra_Linux_Sample-Root-Filesystem_R32.7.5_aarch64.tbz2
8c188dbc85eab38c589470e9e81c367e8a5b73e4f4f7450d825550fc7b750c2393bf7260f3c65b2e947ef74469b828831de168ec0bb9563b841c73048bce1dee Jetson-210_Linux_R32.7.5_aarch64.tbz2
You can get them from the NVIDIA SDK installer (select "download only"). Please note that it ONLY works in ubuntu 16.04 LTS, and if you are planning to run it in a VM, it only works with VMWare. VirtualBox USB passthrough is broken. Allocate at least 60GB for the virtual HDD.
1. unpack the SDK and sample rootfs to Linux_for_Tegra/rootfs (as per readme there)
tar -xjvf Jetson-210*
cd Linux_for_Tegra
mkdir rootfs
tar -xjvf Tegra_Linux_Sample-Root-Filesystem_R32.7.5_aarch64.tbz2 -C rootfs/
2. create default user. The script would fail because there is no eula in the unpacked rootfs, so we create an empty file to pass the check (Nvidia legal team hates this man)
sudo mkdir -p rootfs/usr/share/doc/nvidia-tegra/
sudo touch rootfs/usr/share/doc/nvidia-tegra/L4T_End_User_License_Agreement.txt
sudo ./tools/l4t_create_default_user.sh -u nvidia -p novideo --accept-license
This creates the used nvidia
with password novideo
.
3. apply binaries (this installs some deb packages and pre-populates some files)
sudo ./apply_binaries.sh
4. flash the OS
sudo ./flash.sh jetson-tx1 mmcblk1p1
5. Copy the filesystem to the SD card, because apparently the flashing script does not do that. why would it?
sudo mkfs.ext4 /dev/sdb1 # adjust as needed
sudo cp -r rootfs/* wherever-you-mounted-sd-card/
sudo sync
The board failed to boot, booted up to the bash initrd.
Now do you wanna know why? Upon inspecting the available files in /dev/
from the initrd shell, I found that there is no /dev/mmcblk1p1
, nor /dev/mmcblk1
, which is the default root=
parameter for SD card boot.
There is /dev/mmcblk2p1
and /dev/mmcblk2
. So the current L4T distro as installed by ./flash.sh
is BROKEN on TX1.
In U-boot shell over UART, I edited the cbootargs
variable and added root=/dev/mmcblk2p1
at the end, then it booted correctly to the Ubuntu desktop. Good job nvidia.
To set this fix permanently, edit /boot/extlinux/extlinux.conf
and set the APPEND line accordingly. I decided to remove "quiet" and place root=/dev/mmcblk2p1
TIMEOUT 30
DEFAULT primary-fixed
MENU TITLE L4T boot options
LABEL primary-fixed
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=/dev/mmcblk2p1
Now you need to connect the display and keyboard + mouse, boot the OS, and accept the EULA again in the first-run config wizard.