Jetson BSP 镜像初始化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/jetson-init-image。
技能介绍
要解决什么问题
在 Jetson 上刷机或构建镜像之前,工作区里必须有一份可用的 Linux_for_Tegra/ 树:Jetson Linux BSP 与匹配的 sample-rootfs 已解压,且 apply_binaries.sh 已按目标 SoC 选对 GPU 栈(T234/Orin 的 nvgpu,T264 及更新代的 OpenRM)。若下游技能报缺少 /Linux_for_Tegra/,或活动目标配置文件里还没有 bsp_image:,就需要先把 BSP「落地」并写回配置,避免每次手工解压和猜路径。
技能如何工作
技能以 ../../context/target-platform-contract.md 解析活动目标配置文件为入口:没有活动配置或缺少 reference_devkit: 会直接拒绝。随后解析镜像根路径(默认 /Image),按 bsp_image.root_path 是否存在决定是否询问覆盖路径,并校验可写父目录。
GPU 栈由 reference_devkit.module.id 与目录约定推导(如 p3701/p3767 → nvgpu,p3834 → OpenRM);未知模块 ID 拒绝;--openrm 仅在当前 BSP 的 apply_binaries.sh 实际支持时才带上。
重用或解压:若 Linux_for_Tegra/ 已存在,默认不在其上重复解压;从 nv_tegra_release 读版本,在替换已记录的 bsp_image.version 前会询问;并通过 INSTALL_TYPE=、nvgpu.ko 等探测校验已安装栈是否与目标一致,冲突则拒绝并提示换包或改配置。需要解压时在 /、/ 与当前工作目录查找 Jetson_Linux_R_aarch64.tbz2 与 Tegra_Linux_Sample-Root-Filesystem_R_aarch64.tbz2,R 令牌必须一致,版本写入 bsp_image.version,不下载压缩包。解压后用绝对路径执行流程,任一步命令失败即中止并展示失败命令。最后用可往返的 YAML 写入器更新活动配置中的 bsp_image:(相同版本与同一路径不重写;不同版本更新前询问;已记录的不同 root_path 拒绝自动覆盖)。
边界与注意点
仅维护 bsp_image: 块;源码树、文档与载板配置由兄弟技能负责。依赖磁盘上已有 BSP 包(如由 /jetson-download-bsp 或手动放置)。apply_binaries.sh 通常需要 sudo。完成后会建议继续运行 /jetson-init-source。
使用场景
- 活动目标 YAML 已写好 reference_devkit,但配置里还没有 bsp_image,需要先解压并写入版本与根路径
- 本地已有 Jetson_Linux 与 sample-rootfs 压缩包,要把它们展开并执行 apply_binaries.sh 得到可用 Linux_for_Tegra
- 刷机或 init-source 前检查发现工作区缺少 /Linux_for_Tegra/,需要按目标模块 ID 选对 nvgpu 或 OpenRM 栈再初始化
- 磁盘上已有 Linux_for_Tegra 目录,需要在不盲目覆盖的前提下核对 nv_tegra_release 版本与 GPU 栈是否仍匹配当前目标
适合人员
- 负责 Jetson 量产或实验室刷机流水线的 BSP 工程师,要把下载好的 tbz2 稳定落到 Image 目录并写回配置
- 在 Orin/Thor 载板上做 Bring-up 的嵌入式 Linux 工程师,需按 p3701/p3834 等模块 ID 自动区分 nvgpu 与 OpenRM
- 维护 target-platform 合约与多技能链路的集成者,希望下游不再反复报缺少 Linux_for_Tegra
- 刚跑完 jetson-download-bsp 或手工暂存 BSP 包,下一步必须 apply_binaries 且不能误覆盖已有树的人