nvidia/jetson-init-image
>- Extract Jetson Linux + sample-rootfs tarballs and run apply_binaries.sh for the active target, then record bsp_image in the profile. Use after jetson-init-target; not for source-tree setup.
npx skills add https://github.com/NVIDIA/skills --skill jetson-init-image
Output is only bsp_image: in the active profile: derived version
plus root_path only when overriding <workspace>/Image.
<bsp_image.root_path>/Linux_for_Tegra/.
bsp_image: block yet.Resolve the active profile per
../../context/target-platform-contract.md.
Refuse if there is no active profile or reference_devkit: is missing.
<workspace> is the parent of the active profile's target-platform/
directory. <bsp_image.root_path> defaults to <workspace>/Image.
| Profile state | Action |
|---|---|
| bsp_image.root_path exists | Use it without prompting. |
| bsp_image: exists without root_path | Use <workspace>/Image. |
| No bsp_image: block | Ask once: Enter for default, or absolute override path. |
For an override, validate that the closest existing parent is writable.
Omit root_path when the default is used.
Use the shared GPU-driver invariant from
../../context/target-platform-contract.md.
Derive the expected stack from reference_devkit.module.id and the
catalogue:
| Chip family | Module IDs | Stack | apply_binaries.sh flag |
|---|---|---|---|
| T234 / Orin | p3701, p3767 | nvgpu | none |
| T264 and later / Thor+ | p3834 | OpenRM | --openrm |
Refuse unknown module IDs. The --openrm flag is only valid on BSP
releases that ship the OpenRM stack; if the active BSP doesn't expose
the flag, omit it regardless of what the target wants.
If <bsp_image.root_path>/Linux_for_Tegra/ already exists:
re-extraction and accepted the overwrite risk.
Linux_for_Tegra/nv_tegra_release.Ask before replacing a different recorded bsp_image.version.
expectation when possible. Detection precedence (first probe that
yields a definitive answer wins):
Linux_for_Tegra/rootfs/etc/nv_tegra_release carries anINSTALL_TYPE= token on BSP releases that expose it (newer
lines). Read and compare directly.
find Linux_for_Tegra -name nvgpu.ko: present →nvgpu, absent → OpenRM.
Orin is always nvgpu in current BSPs), fall back to the
catalogue-derived expectation without disk probing.
If the installed stack conflicts with the active target, refuse and ask
the user to re-extract with the correct stack or fix the target profile.
Otherwise skip extraction and update the profile.
When extraction is needed, search:
<bsp_image.root_path>/<workspace>/Prompt for absolute paths for anything missing. Required filenames:
Jetson_Linux_R<ver>_aarch64.tbz2Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2Both filenames must contain the same R<ver> token. Refuse mismatches
and record <ver> as bsp_image.version. Do not download tarballs.
Use absolute tarball paths; they may live outside
<bsp_image.root_path>.
ROOT="<bsp_image.root_path>"
BSP_TARBALL="<absolute path to Jetson_Linux_R<ver>_aarch64.tbz2>"
ROOTFS_TARBALL="<absolute path to Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2>"
mkdir -p "$ROOT"
tar xjf "$BSP_TARBALL" -C "$ROOT"
sudo tar xpjf "$ROOTFS_TARBALL" -C "$ROOT/Linux_for_Tegra/rootfs"
cd "$ROOT/Linux_for_Tegra"
if [ "$GPU_STACK" = "openrm" ]; then
sudo ./apply_binaries.sh --openrm
else
sudo ./apply_binaries.sh
fi
Set GPU_STACK from the "Determine GPU stack" step above. Abort on the first failing command and
surface the failed command.
Persist the resolved BSP image metadata in the active target profile so
later skills can find the BSP without re-prompting. Preserve existing
blocks, comments, and quoted SKU values; use a round-tripping YAML
writer such as ruamel.yaml.
bsp_image:
root_path: <absolute override path> # omit for <workspace>/Image
version: "<derived version>"
Rules:
root_path: refuse automatic rewrite.version.Report the image path, extracted vs reused state, GPU stack, derived
version, and profile update status. Then suggest /jetson-init-source.
Materialize Linux_for_Tegra/ on disk by extracting the right Jetson
Linux + sample-rootfs tarballs and running apply_binaries.sh with
the GPU-stack flag derived from the active target (nvgpu for T234,
OpenRM for T264+). Then commit the derived BSP version into the
profile's bsp_image: block.
../../context/target-platform-contract.md.
on disk (e.g. by /jetson-download-bsp or hand-placed).
Image/ root (or the overridebsp_image.root_path).
sudo available for apply_binaries.sh.bsp_image: block; source tree, documents, andcarrier profile are owned by sibling skills.
Linux_for_Tegra/ without explicituser direction.
/jetson-download-bsp orhand-stage the inputs.
apply_binaries.sh exits non-zero — re-read its console output;most failures are missing sudo, missing rootfs tarball, or wrong
GPU stack flag for the SoC generation.
nv_tegra_release absent after extract — extraction stoppedearly; verify tarball integrity and rerun.
version disagrees with the tarball filename — thetarball was renamed; trust the value parsed from
Linux_for_Tegra/nv_tegra_release over filenames.
root_path already in profile — refuse andask the user to confirm before overwriting.
../../context/target-platform-contract.md../../references/bsp-platforms-catalogue.md../../references/platform_template.yaml../jetson-init-target/SKILL.md../jetson-init-source/SKILL.md../jetson-flash-image/SKILL.mdTake nvidia/jetson-init-image from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.