Jetson边缘嵌入式实战课程第四讲:用 Yocto 定制 Jetson 系统,从开发走向产品化


大家好,我是孙杰。

最近我和 与非网、贸泽电子 合作,做了一套 Jetson 边缘嵌入式实战课程。

前三讲,我们从 Jetson 硬件平台讲到 JetPack,再进入 L4T,逐渐把 Jetson 的硬件能力、开发环境和底层 BSP 串了起来。

到了第四讲,要继续往产品方向走一步:

JetPack 很适合开发,但真正做产品,系统怎么裁剪、怎么冻结版本、怎么长期维护?

这就是这一讲的主题:用 Yocto 定制 Jetson 系统。

B站视频-配套博文视频:

Jetson Edge AI实战04|Yocto是什么?Jetson系统定制与产品化开发详解


一、为什么 Jetson 产品需要 Yocto?

1. JetPack 很适合开发,但产品阶段需求变了

JetPack 使用 Ubuntu 作为根文件系统,对开发者非常友好。

软件安装方便、生态成熟、Demo 跑得快,非常适合开发和验证。

但设备进入量产阶段以后,我们关心的问题会变成:

  • Kernel、Bootloader、Driver 版本能不能固定?
  • RootFS 里到底有哪些软件?
  • 不需要的软件和服务能不能裁掉?
  • 每次构建出来的系统能不能保持一致?
  • 一个版本能不能稳定维护几年?
  • OTA、安全、应用能不能进入统一构建体系?

Ubuntu 组件多、依赖关系复杂,软件包更新也可能带来版本变化。对于需要长期维护的产品,系统的可控性会变得越来越重要。

可以简单理解:

text 复制代码
JetPack / Ubuntu
更适合:开发、调试、快速验证

Yocto
更适合:裁剪、定制、版本冻结、长期维护

并不是 JetPack 不好,而是开发阶段和产品阶段解决的问题不同。


二、Yocto 到底是什么?

1. Yocto 不是一个 Linux 发行版

这是第一次接触 Yocto 最容易混淆的地方。

Yocto 不是 Ubuntu、Debian 这样的现成 Linux 发行版,而是一套 用来构建 Linux 系统的框架和工具链。

它允许我们从构建阶段决定:

text 复制代码
Bootloader 用什么版本
        ↓
Kernel 用什么配置
        ↓
加入哪些 Driver
        ↓
RootFS 安装哪些 Package
        ↓
启动哪些 Service
        ↓
最终生成什么 Image

所以 Yocto 最核心的几个特点就是:

可控、可裁剪、可重现。

课程中也重点介绍了 Yocto 对产品级 Linux 系统的意义:从源码和元数据层面控制内核、驱动、RootFS 和系统组件,并支持长期维护。

2. 学 Yocto,真正应该学什么?

初学 Yocto 很容易把注意力放到:

bash 复制代码
bitbake
devtool
bitbake-layers

但命令只是表面。

更重要的是理解:

text 复制代码
Layer
Recipe
Machine
Distro
Package
Image

也就是:

一个 Linux 系统究竟是怎样被描述、组织和构建出来的。

我之前也专门写过一本 《Yocto 项目实战教程》,重点就是从实际项目出发,把 Layer、Recipe、Image、SDK 和产品系统构建这套逻辑串起来。

京东链接:

《Yocto项目实战教程》


三、为什么 Yocto 很适合 Jetson 产品?

Jetson 并不是一个简单的 ARM Linux 单板。

除了 CPU,还包含:

text 复制代码
GPU
DLA
ISP / CSI / VI
NVENC / NVDEC
VIC
Camera
NVIDIA 多媒体与 AI 组件

实际做工业相机、机器人、AI Box 等产品时,经常还要修改 Camera、I2C、PCIe、Device Tree、Kernel Driver、图形系统以及上层应用。

这时系统是否可控就非常关键。

课程里总结了一些比较典型的需求:

Jetson 产品需求 Yocto 的价值
Camera / ISP / I2C / PCIe 定制 Kernel、DTS、Driver 统一管理
GPU / ISP / 编解码能力 NVIDIA BSP 组件统一进入构建体系
Weston / Wayland 图形系统可以按产品需求选择
Qt / Chromium 通过 Layer 统一集成
系统裁剪 精确控制 RootFS
OTA 可以构建 A/B 等升级机制
长周期维护 版本冻结、构建可重现
多型号产品 BSP 与产品 Layer 可以复用

本质上,是开发思维发生了变化:

text 复制代码
开发阶段:
先把功能跑起来

        ↓

产品阶段:
系统、版本、升级、维护全部要可控

这正是 Yocto 最有价值的地方。


四、Jetson Yocto 的关键:BSP 与 meta-tegra

1. 先理解什么是 BSP Layer

在 Yocto 中,BSP Layer 解决的是:

这个 Linux 系统怎样在指定硬件上启动并正常工作?

通常包括:

text 复制代码
Bootloader
Kernel
Device Tree
Driver
Firmware
Board Patch

这和第三讲介绍的 L4T BSP 已经开始对应起来。

2. meta-tegra 把 Jetson 能力带进 Yocto

Jetson 上使用 Yocto,一个非常关键的 BSP Layer 就是 meta-tegra。

它以 L4T 为基础,将 Jetson 平台需要的 Kernel、设备树、GPU、DLA、Camera、NVENC/NVDEC、多媒体以及相关底层组件组织进 Yocto 构建体系。

可以简单理解:

text 复制代码
L4T
提供 Jetson 底层 BSP
        ↓
meta-tegra
把 Jetson 能力组织进 Yocto
        ↓
Product Layer
加入自己的驱动、配置和应用
        ↓
最终产品镜像

这样前三讲和第四讲就真正串起来了:

text 复制代码
JetPack
快速把 Jetson 跑起来
        ↓
L4T
理解 Jetson 系统底座
        ↓
Yocto + meta-tegra
构建自己的产品系统

五、Yocto SDK:应用开发也和系统保持一致

Yocto 不只是生成一个 RootFS。

它还可以针对当前系统生成配套的 SDK / Toolchain。

例如产品系统里使用:

text 复制代码
特定版本 GLIBC
特定版本 Qt
特定版本 GStreamer
特定版本 CUDA
特定版本 TensorRT

对应的 Header、Library 和 Toolchain 可以一起进入 SDK。

这样可以减少嵌入式开发中一个很常见的问题:

text 复制代码
开发环境编译成功
        ↓
程序拷到目标板
        ↓
缺少动态库
ABI 不一致
GLIBC 版本不匹配

课程里把 Yocto SDK 的价值归纳为三个方面:

  • SDK 与目标系统保持 ABI 一致;
  • 系统启用的组件可以进入配套 SDK;
  • 工具链和软件版本可以统一冻结。:chatgpt-content-reference{index="4"}

对于工业相机、机器人、边缘 AI Box 这种需要维护多年的产品,这一点非常实用。


六、Yocto 怎么扩展应用?以 Chromium 为例

Yocto 并不只是用来做一个很小的命令行 Linux。

它有丰富的 Layer 生态,可以继续扩展:

text 复制代码
Qt
Chromium
GStreamer
Docker
Wayland / Weston
各种应用和系统服务

课程中以 Chromium 为例,演示了一次比较直观的软件扩展过程。

整体思路是:

text 复制代码
找到对应 Layer
        ↓
加入 BBLAYERS
        ↓
把 Chromium 加入 Image
        ↓
BitBake
        ↓
生成新的系统镜像

例如先加入对应 Layer:

bash 复制代码
git clone https://github.com/OSSystems/meta-browser.git

然后把 Chromium 加入镜像:

bash 复制代码
IMAGE_INSTALL += "chromium"

重新构建:

bash 复制代码
bitbake core-image-weston

这里真正需要理解的不是这几条命令,而是两种思路的区别。

Ubuntu 上通常是:

bash 复制代码
apt install chromium

Yocto 的思路则是:

text 复制代码
在系统构建阶段就定义:

这个产品应该包含 Chromium

然后由构建系统生成完整镜像。

这就是 Yocto 所强调的 系统可重复构建和配置可追踪。


七、这一讲真正需要掌握什么?

1. JetPack 和 Yocto 并不是二选一
text 复制代码
JetPack:
快速开发、验证功能

Yocto:
系统定制、产品交付、长期维护

不同阶段解决不同问题。

2. Yocto 的核心不是 BitBake

比记命令更重要的是理解:

text 复制代码
Layer → Recipe → Package → Image

以及这些元数据如何共同定义一个 Linux 系统。

3. 学 Jetson Yocto,要先理解 BSP

如果:

text 复制代码
Bootloader
Kernel
Device Tree
Driver
RootFS

之间的关系还没有理顺,直接进入 Yocto 会很容易迷失。

所以课程按照:

text 复制代码
JetPack → L4T → Yocto

这个顺序来讲。

4. 产品阶段才真正体现 Yocto 的价值

当项目开始出现:

text 复制代码
BSP 深度定制
系统裁剪
版本冻结
CI 自动构建
SDK 统一
OTA
Secure Boot
长期维护

Yocto 的优势就会越来越明显。


八、第四讲小结

第四讲是整个系列从"开发"走向"产品"的一个转折点。

前三讲解决的是:

text 复制代码
第1讲:Jetson 是什么?
        ↓
第2讲:JetPack 怎么开发?
        ↓
第3讲:L4T 和 BSP 是什么?

第四讲开始讨论:

text 复制代码
第4讲:
Jetson 真正做成产品以后,
Linux 系统应该怎么构建和维护?

整个路线就变得很清楚:

text 复制代码
认识硬件
    ↓
JetPack 快速开发
    ↓
L4T 理解系统
    ↓
Yocto 构建产品

这一讲最值得记住的,其实就一句话:

JetPack 解决"快速开发",Yocto 解决"系统长期可控"。

对于刚学习 Jetson 的同学,不一定马上就要搭一套复杂的 Yocto 工程。

但建议尽早理解这种系统构建思路。

因为一个项目真正从 Demo 走向产品以后,我们最终关心的不再只是:

这个程序现在能不能运行?

而是:

text 复制代码
这个系统能不能重复构建?
版本能不能冻结?
几年以后还能不能维护?
出了问题能不能追溯?
升级能不能安全完成?

这才是嵌入式 Linux 产品化真正要解决的问题。

All in AI,不如走向边缘🌞

相关推荐
这张生成的图像能检测吗1 小时前
(论文速读)DI-CDM:微调条件扩散模型在结构健康监测中的损伤成像
人工智能·lora·扩散模型·高分辨率成像·结构健康监测
阿伟玩不懂1 小时前
接入第一个 MCP Server:让 AI 自己看你的数据库
ide·人工智能
中电金信1 小时前
中电金信参编的团体标准《商业银行应用程序接口治理能力要求》正式发布
大数据·运维·人工智能
Data-Miner1 小时前
怎么用AI给Excel去重?先核对这7条再下手,别让好数据被删错:数以轻舟方案解析
人工智能·excel
小宋10211 小时前
MCP 工具也有供应链风险:注册中心、签名校验、版本锁定与白名单
开发语言·网络·人工智能·php
悟天特斯1 小时前
AI驱动的楼宇节能:从经验粗放到数据精准的转型路径
人工智能·物联网
IT古董1 小时前
AI 资讯日报|2026年9月19日:模型迭代进入高频节奏,国产全模态与算力持续突破,AI应用与具身智能加速落地
人工智能
2601_962380762 小时前
节气民俗科普视频的 AI 动效分镜工作流:从文案到成片怎么做
人工智能·音视频
启雀AI2 小时前
培训管理系统的 AI 智能陪练完整功能逻辑,以家电门店销售为例的剧本框架
人工智能·ai·软件需求·培训系统·培训平台