#!/usr/bin/env bash set -euo pipefail L4T_VERSION="${L4T_VERSION:-r36.4.4}" L4T_DIR="${L4T_DIR:-/opt/nvidia/Linux_for_Tegra}" ROOTFS_DIR="${ROOTFS_DIR:-${L4T_DIR}/rootfs}" l4t_download_url() { local version="$1" local major minor patch IFS='.' read -r major minor patch <<< "${version#r}" echo "https://developer.nvidia.com/downloads/embedded/l4t/r${major}_release_v${minor}.${patch}/release/Jetson_Linux_${version}_aarch64.tbz2" } rootfs_download_url() { local version="$1" local major minor patch IFS='.' read -r major minor patch <<< "${version#r}" echo "https://developer.nvidia.com/downloads/embedded/l4t/r${major}_release_v${minor}.${patch}/release/Tegra_Linux_Sample-Root-Filesystem_${version}_aarch64.tbz2" } if [[ -f "$L4T_DIR/flash.sh" ]]; then echo "L4T BSP already installed at $L4T_DIR" else echo "L4T BSP not found at $L4T_DIR" echo "Downloading and installing L4T $L4T_VERSION..." bsp_url="$(l4t_download_url "$L4T_VERSION")" rootfs_url="$(rootfs_download_url "$L4T_VERSION")" tmp_dir="$(mktemp -d)" echo " Downloading BSP from $bsp_url ..." wget -q --show-progress -O "$tmp_dir/bsp.tbz2" "$bsp_url" echo " Downloading Sample Root Filesystem from $rootfs_url ..." wget -q --show-progress -O "$tmp_dir/rootfs.tbz2" "$rootfs_url" echo " Extracting BSP to $(dirname "$L4T_DIR")/ ..." sudo mkdir -p "$(dirname "$L4T_DIR")" sudo tar -xjf "$tmp_dir/bsp.tbz2" -C "$(dirname "$L4T_DIR")" echo " Extracting rootfs to $L4T_DIR/rootfs/ ..." sudo tar -xjf "$tmp_dir/rootfs.tbz2" -C "$L4T_DIR/rootfs/" echo " Running apply_binaries.sh ..." sudo "$L4T_DIR/apply_binaries.sh" rm -rf "$tmp_dir" echo "L4T $L4T_VERSION installed to $L4T_DIR" fi for tool in flash.sh odmfuse.sh; do if [[ ! -f "$L4T_DIR/$tool" ]]; then echo "ERROR: $L4T_DIR/$tool not found after L4T setup" >&2 exit 1 fi done NV_RELEASE="$L4T_DIR/rootfs/etc/nv_tegra_release" if [[ -f "$NV_RELEASE" ]]; then echo "L4T release: $(head -1 "$NV_RELEASE")" fi