| 名称 | 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-image、jetson-init-source 和 jetson-link-docs 负责。
何时调用
/jetson-quick-start选择了自动设置。- 用户希望把 NVIDIA BSP 工件下载到当前工作区中,之后才运行设置技能。
输入和输出
根据 ../../context/target-platform-contract.md 解析活动配置文件。
如果没有活动配置文件则拒绝。
遵循共享的 quick_start_prefill 契约。
当由 /jetson-quick-start 调用时,此技能使用 quick_start_prefill.mode 和
quick_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.4、36.4.4、38.2、
38.2.1、38.4 等);不要使用系列占位符如 R38.x。具体版本标记是可选的前导 R
后跟两个或三个数字点分部分。保留官方页面呈现的标记形式;不要添加 .0、删除补丁部分,
或以其他方式规范化。按点数字降序排序版本选项(最新的在前),比较存在的组成部分;保留
来源提供的描述。
解析 quick_start_prefill.download.bsp_release 如下:
- 具体且受支持:继续使用该版本。
- 缺失、
skip、空白或系列占位符(R38.x、38.x):显示受支持的具体版本并询问用户选择。 - 具体但不受支持或不确定:在发现工件之前停止,并显示活动平台、请求的 BSP 版本、受支持的具体版本以及来源归档或版本页面。
即使只有一个受支持选项,也永远不要自动替换请求的版本。
对于不受支持或不明确的预填,使用共享的 用户输入提示样式 询问,选择恰好一个点击选择动作:
pick_supported_release— 用户选择一个受支持的具体版本。confirm_override— 用户确认不兼容的版本并输入覆盖原因。cancel— 停止且不下载。
在所选版本是具体且受支持,或用户明确确认覆盖之前,不要继续到“定位版本工件”。在最终摘要中记录任何覆盖原因。如果用户取消,停止且不下载。不要声称支持,除非归档或关联版本页面明确列出活动平台。
发现重试
对于“解析目标版本”和“定位版本工件”中的每个工件 WebFetch(BSP、rootfs、
public_sources.tbz2、x-tools.tbz2、Developer Guide、User Guide),在标记缺失前尝试 3 次:
- 聚焦提示 — 工件名称 + 文件类型。
- 在同一 URL 上逐字链接转储 — “列出每个超链接,文本和 href,不过滤”。接受特定产品名称和
.html索引。 - 在兄弟页面上的逐字转储 — 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.name和flash_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.2、R38.2.1、R38.4 等)。不要从 R38.2 推断 R38.2.0,也不假定所选的两个组件版本映射到三个组件的压缩包名称:
Jetson_Linux_R<ver>_aarch64.tbz2Tegra_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 文档命名不如压缩包一致。
结束
报告选定的版本、已下载/重用/跳过的工件以及确切的本地路径。然后按以下顺序交回给调用者:
/jetson-init-image/jetson-init-source/jetson-link-docs
注意事项
- 保持此技能仅下载;解压属于
jetson-init-image和jetson-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。- 目的地存在文件 — 未经确认拒绝覆盖;下载必须由用户自行决定为幂等。