Offline, command-line provisioning for Jetson Orin NX (8GB / 16GB) modules (“tinderbox”).
Goal for this repo (phase 0):
- Flash Jetson Linux / JetPack base onto the OS NVMe (boot-from-NVMe).
- On first boot, automatically set up the DATA NVMe and mount it at
/data. - Print a loud Hello World on the serial/console logs so you can prove it’s alive.
- ✅ CLI-only, no SDK Manager GUI.
- ✅ Designed for airgapped / offline use after you run
./tools/prepare-installer-media.sh. - ✅ Fail-fast: refuses to flash anything except Jetson Orin NX 8GB/16GB in Force Recovery.
- ❌ Not trying to support Xavier, Nano, Thor, emmc, etc. Not in scope.
- Jetson Orin NX 16GB (Force Recovery
lsusbid0955:7323) - Jetson Orin NX 8GB (Force Recovery
lsusbid0955:7423)
This repo targets the NVIDIA reference configuration used by the Jetson Linux docs:
jetson-orin-nano-devkit board config (works for Orin NX modules on the reference Orin Nano / Orin NX carrier).
git clone --recurse-submodules https://github.com/techofourown/img-ourbox-tinderbox.git
cd img-ourbox-tinderboxThe NVIDIA Jetson Linux artifacts are not stored in git.
This is the only step that requires internet access.
./tools/fetch-nvidia-artifacts.shThat script will:
- show the NVIDIA release + license URLs
- ask you to confirm you accept NVIDIA’s terms
- download the tarballs into
artifacts/nvidia/
If you prefer to place files manually, the required filenames are:
artifacts/nvidia/
Jetson_Linux_R36.5.0_aarch64.tbz2
Tegra_Linux_Sample-Root-Filesystem_R36.5.0_aarch64.tbz2
This will erase the selected USB drive and write a self-contained offline flasher onto it.
sudo ./tools/prepare-installer-media.shIf the NVIDIA artifacts are missing, prepare-installer-media.sh will offer to download them for you.
When it finishes, you’ll have a USB drive labeled TINDERBOX_INSTALLER.
On your airgapped flashing host:
- Put the Jetson into Force Recovery Mode
- Connect Jetson to the host over USB
- Plug in the prepared
TINDERBOX_INSTALLERUSB drive - Run:
cd /media/$USER/TINDERBOX_INSTALLER/tinderbox
sudo ./flash-jetson.shThe script will prompt you for which NVMe should be the OS drive (nvme0n1 vs nvme1n1) and will refuse to run if the Jetson is not an Orin NX 8GB/16GB.
After flashing completes:
- power-cycle the Jetson
- it should boot from the OS NVMe
- you should see a Hello Tinderbox message in the console/journal
- the second NVMe should be mounted at
/data(auto-created on first boot)
Edit config/defaults.env before preparing the installer USB if you want to change:
- default username/password/hostname
- which NVMe is assumed to be OS vs DATA (defaults: OS=nvme0n1, DATA=nvme1n1)
Tinderbox is intentionally not part of the first Matchbox/Woodbox shared installer-selection resolver migration.
Why:
- today it is a host-side Jetson flasher, not a catalog-driven registry installer
- its hard parts are NVIDIA Force Recovery, initrd diagnostics, BSP/rootfs staging, and offline USB media
What still applies:
sw-ourbox-osremains the upstream owner of install-defaults and the installer-selection contractsw-ourbox-osalso owns the future ourbox-substrate selection lane and its shared vocabularyinstall-defaults/defaults/tinderbox.envexists upstream as the future control-plane profile for a Tinderbox payload-selection lane
Reserved future installer control names:
OURBOX_SUBSTRATE_REPOOURBOX_SUBSTRATE_ARCHOURBOX_SUBSTRATE_CHANNELOURBOX_SUBSTRATE_CATALOG_ENABLEDOURBOX_SUBSTRATE_CATALOG_TAG
Reserved future installed provenance names:
OURBOX_SUBSTRATE_SOURCEOURBOX_SUBSTRATE_REVISIONOURBOX_SUBSTRATE_VERSIONOURBOX_SUBSTRATE_CREATEDOURBOX_SUBSTRATE_ARCHOURBOX_SUBSTRATE_PROFILEOURBOX_SUBSTRATE_K3S_VERSIONOURBOX_SUBSTRATE_IMAGES_LOCK_SHA256OURBOX_SUBSTRATE_REFOURBOX_SUBSTRATE_DIGEST
When Tinderbox grows that lane, it should adopt the upstream shared installer-selection contract and reference resolver rather than inventing a fourth vocabulary. Until then, its flashing flow remains hardware-specific by design.
tools/fetch-nvidia-artifacts.sh— downloads NVIDIA artifacts (online step; requires license acceptance)tools/prepare-installer-media.sh— builds the offline installer USBmedia/flash-jetson.sh— copied onto the USB; flashes the Jetson via Linux_for_Tegra initrd flashrootfs-overlay/— files injected into the Jetson rootfsourbox-hello.serviceprints hello world every bootourbox-firstboot.servicesets up the DATA NVMe on first boot