JetsonBSP下载Skill jetson-download-bsp

该技能用于自动下载 NVIDIA Jetson Linux BSP 相关工件(BSP 压缩包、示例根文件系统、public_sources、x-tools 及开发者/用户指南),供 Auto Setup 流程使用,不负责解压或配置修改。关键词:Jetson、BSP下载、L4T、Auto Setup、NVIDIA、嵌入式、BSP工件。

BSP与板级支持 0 次安装 0 次浏览 更新于 9/6/2026
名称 jetson-download-bsp
描述 >- 下载 NVIDIA Jetson Linux BSP 工件(BSP 压缩包、示例根文件系统、 public_sources、x-tools、指南),用于当前目标。适用于自动设置; 不用于解压或编辑配置文件。
版本 0.0.1
开源协议 “Apache-2.0” metadata: data-classification: public
作者 “Jetson Team” tags: [setup, bootstrap, download] domain: setup

下载 BSP 工件

jetson-download-bsp 负责自动设置路径的网络获取。 它不解压归档、初始化源代码树、注册文档,或编辑活动的目标配置文件。 这些仍由 jetson-init-imagejetson-init-sourcejetson-link-docs 负责。

何时调用

  • /jetson-quick-start 选择了 自动设置
  • 用户希望把 NVIDIA BSP 工件下载到当前工作区中,之后才运行设置技能。

输入和输出

根据 ../../context/target-platform-contract.md 解析活动配置文件。 如果没有活动配置文件则拒绝。

遵循共享的 quick_start_prefill 契约。 当由 /jetson-quick-start 调用时,此技能使用 quick_start_prefill.modequick_start_prefill.download.bsp_release 作为存在时的请求版本。缺失或无效的预填值 不致命,但在任何下载开始前需要具体版本。

使用工作区根作为 target-platform/ 的父目录。将文件放到下游设置技能 已搜索的位置:

工件 目的地
Jetson Linux BSP 压缩包 <bsp_image.root_path 或 workspace/Image>/Jetson_Linux_R<ver>_aarch64.tbz2
示例根文件系统压缩包 <bsp_image.root_path 或 workspace/Image>/Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2
public_sources.tbz2 <workspace>/Downloads/public_sources.tbz2
x-tools.tbz2 <workspace>/Downloads/x-tools.tbz2
开发者指南 <documents.root_path 或 workspace/Documents>/
用户指南 <documents.root_path 或 workspace/Documents>/

不要写 bsp_image:source:documents: 块。接下来的 设置技能将在解压或用户确认后注册派生的元数据。

过程

解析目标版本

从以下位置获取版本列表: https://developer.nvidia.com/embedded/jetson-linux-archive

从归档和关联的版本页面中,列出明确支持活动平台的版本。 让用户选择一个具体的 Jetson Linux / L4T 版本标记(R36.4.436.4.438.238.2.138.4 等);不要使用系列占位符如 R38.x。具体版本标记是可选的前导 R 后跟两个或三个数字点分部分。保留官方页面呈现的标记形式;不要添加 .0、删除补丁部分, 或以其他方式规范化。按点数字降序排序版本选项(最新的在前),比较存在的组成部分;保留 来源提供的描述。

解析 quick_start_prefill.download.bsp_release 如下:

  • 具体且受支持:继续使用该版本。
  • 缺失、skip、空白或系列占位符(R38.x38.x):显示受支持的具体版本并询问用户选择。
  • 具体但不受支持或不确定:在发现工件之前停止,并显示活动平台、请求的 BSP 版本、受支持的具体版本以及来源归档或版本页面。

即使只有一个受支持选项,也永远不要自动替换请求的版本。

对于不受支持或不明确的预填,使用共享的 用户输入提示样式 询问,选择恰好一个点击选择动作:

  • pick_supported_release — 用户选择一个受支持的具体版本。
  • confirm_override — 用户确认不兼容的版本并输入覆盖原因。
  • cancel — 停止且不下载。

在所选版本是具体且受支持,或用户明确确认覆盖之前,不要继续到“定位版本工件”。在最终摘要中记录任何覆盖原因。如果用户取消,停止且不下载。不要声称支持,除非归档或关联版本页面明确列出活动平台。

发现重试

对于“解析目标版本”和“定位版本工件”中的每个工件 WebFetch(BSP、rootfs、 public_sources.tbz2x-tools.tbz2、Developer Guide、User Guide),在标记缺失前尝试 3 次:

  1. 聚焦提示 — 工件名称 + 文件类型。
  2. 在同一 URL 上逐字链接转储 — “列出每个超链接,文本和 href,不过滤”。接受特定产品名称和 .html 索引。
  3. 在兄弟页面上的逐字转储 — Jetson Linux 归档、JetPack 下载或 https://docs.nvidia.com/jetson/archives/r<ver>/

只有全部 3 次失败后,才路由到用户粘贴/跳过。永远不要编造 URL。

定位版本工件

从选定的版本页面跟踪链接。永远不要通过字符串拼接构造 NVIDIA 下载 URL。

必需工件:

  • Jetson Linux BSP 镜像压缩包。
  • Tegra Linux 示例根文件系统压缩包。
  • public_sources.tbz2
  • x-tools.tbz2 / 与所选 BSP 版本匹配的 Crosstool-NG Toolchain gcc
  • Developer Guide。
  • User Guide。

如果指南没有可直接下载的文件链接,则将版本文档 URL 作为工件并记录在最终摘要中。 如果工具链列在 JetPack 下载页面而非版本页面,则遵循官方页面链接并匹配所选 BSP 版本;不要从版本号合成 URL。 在下载、已存在于其目的地、由 URL 表示或由用户明确跳过每个必需工件之前,不要继续。

显示获取计划

在更改工作区之前,打印计划,包括:

  • 选定版本和版本页面 URL;
  • 活动平台摘要(reference_devkit.name、可选的 custom_carrier.nameflash_config);
  • 每个工件的来源 URL 和目的地路径,或文档 URL;
  • 任何将被重复使用的已存在目的地文件;
  • 任何需要浏览器/EULA 处理而非 curl 的工件。

默认设置为全部下载。当每个必需工件都可下载、已存在可重用、或需记录文档 URL 时,不要询问额外确认。打印计划并继续到磁盘空间验证。

在以下任何情况下,副作用前仍要停止并询问:

  • 版本需要不兼容覆盖;
  • 必需工件缺失且需要用户粘贴/跳过;
  • 目的地文件将被覆盖而非重用;
  • 工件需要浏览器/EULA 处理;
  • 磁盘空间验证失败或无法安全计算。

验证磁盘空间

跨待下载工件(curl -sI <url>)求和 Content-Length;如果 df -B1 --output=avail <workspace> 余量小于 总和 × 1.2,则拒绝。跳过仅 URL 工件。

安全下载

根据需要创建目的地目录。对于直接文件链接,使用临时的 .part 路径,仅在成功后才重命名:

mkdir -p "<destination-dir>"
curl -fL --retry 3 --retry-all-errors --retry-delay 5 -o "<destination>.part" "<artifact-url>"
mv "<destination>.part" "<destination>"

如果目的地文件已存在且非空,在显示其路径后默认重用。覆盖前询问。如果工件下载因 404、401/403、EULA/浏览器身份验证或网络错误失败,停止并显示工件 URL 和预期目的路径。请求用户手动下载文件、跳过该工件或取消。不要合成备用 NVIDIA URL。

验证文件名

在结束前,验证 BSP 和 rootfs 压缩包文件名包含在步骤 2 中发现的官方工件 URL 或文件名中的确切 R<ver> 标记。<ver> 可以有两或三个数字组件(R38.2R38.2.1R38.4 等)。不要从 R38.2 推断 R38.2.0,也不假定所选的两个组件版本映射到三个组件的压缩包名称:

  • Jetson_Linux_R<ver>_aarch64.tbz2
  • Tegra_Linux_Sample-Root-Filesystem_R<ver>_aarch64.tbz2

public_sources.tbz2 本地存在时验证它是 bzip2 压缩包:

file -b "<workspace>/Downloads/public_sources.tbz2" | grep -q "bzip2 compressed"

x-tools.tbz2 本地存在时同样验证:

file -b "<workspace>/Downloads/x-tools.tbz2" | grep -q "bzip2 compressed"

如果文档文件名与版本号不同,则警告但不失败;NVIDIA 文档命名不如压缩包一致。

结束

报告选定的版本、已下载/重用/跳过的工件以及确切的本地路径。然后按以下顺序交回给调用者:

  1. /jetson-init-image
  2. /jetson-init-source
  3. /jetson-link-docs

注意事项

  • 保持此技能仅下载;解压属于 jetson-init-imagejetson-init-source
  • 将镜像压缩包放在镜像根目录,而不是 Downloads/,因为 jetson-init-image 搜索镜像根目录、工作区根目录和当前目录。
  • public_sources.tbz2 放在 Downloads/,因为 jetson-init-source 会自动发现该路径用于分支 A。
  • x-tools.tbz2 放在 Downloads/,因为 jetson-init-source 会自动解压该路径并写入结果的 source.toolchain 前缀。
  • 用户指南映射到配置文件架构中的 documents.bsp_user_guide(与 bsp_developer_guide 一起)。jetson-link-docs 在用户确认后写入它;此技能仅暂存文件或 URL。

目的

将四个 NVIDIA 发货的工件(BSP、示例 rootfs、public_sources、x-tools)以及 Developer / User Guides 暂存到 Setup 技能查找的确切路径,以便 /jetson-init-image/jetson-init-source/jetson-link-docs 在此技能完成后离线运行。

先决条件

  • 根据 ../../context/target-platform-contract.md 解析的活动目标配置。
  • 可访问 developer.nvidia.com 和 Jetson Linux 归档页面。
  • 工作区布局具有预期的 Image/Source/Downloads/Documents/ 根目录(默认工作区形状)。

限制

  • 仅下载;绝不提取、运行 apply_binaries.sh、挂载源码、注册文档或修改活动配置文件。
  • 版本选择限于官方 Jetson Linux 存档中发布的条目;预发布或内部构建不在范围内。
  • 无重试 / 镜像逻辑 — 故障呈现给用户,而不是静默重试。

故障排除

  • 版本页面不可访问 — 检查 VPN / 代理;不要发明回退 URL。停止并报告。
  • 存档名称与活动平台不匹配 — 验证版本是否声明活动的参考 devkit;如果没有,请用户选择受支持的版本或通过 /jetson-set-target 切换目标。
  • public_sources.tbz2 在存档中缺失 — 某些版本将其作为单独页面提供;遵循版本页面链接而不是猜测 URL。
  • 目的地存在文件 — 未经确认拒绝覆盖;下载必须由用户自行决定为幂等。

参考