Jetson 作为中继的 Mender OTA 实战详解:Rockchip 远程升级的完整逻辑

Jetson中继Mender OTA实战

作者书籍推荐:
内地版本:电子工业出版社已出版,并在大陆热销。Yocto项目实战教程:高效定制嵌入式Linux系统
海外版本:繁体中文版支持全球华人购买,让更多开发者轻松掌握嵌入式系统核心技能。 金石堂购买链接
🎥 更多学习视频请关注 B 站:嵌入式Jerry


Jetson 作为中继的 Mender OTA 实战详解:Rockchip 远程升级的完整逻辑

一、前言:从传统升级到中继式 OTA

在嵌入式系统维护中,OTA(Over-The-Air)远程升级已成为核心机制。传统的做法要求每个终端直接访问外部网络,但在许多边缘场景(例如工业相机、无人设备、AI 监控节点)中,设备往往无法直接连入公网。此时,一个更灵活的架构是:

使用 Jetson 作为中继节点,Rockchip 设备通过 Jetson 的热点连接,再由 Jetson 转发网络访问外部的 Mender OTA 云端服务器。

这种架构兼具灵活性与安全性,能够实现真正意义上的“远程 OTA”,而不是单纯的“本地文件升级”。本文将系统讲解这一方案的原理、配置、Mender 工作机制、以及完整逻辑流程。


在这里插入图片描述

二、场景描述与整体架构

系统结构如下:

           ┌────────────────────────────┐
           │        Mender Cloud        │
           │   OTA Server + Artifacts   │
           └──────────┬─────────────────┘
                      │  HTTPS 连接
                      │
        (Jetson 外部 Wi-Fi 模块 wlan1)
                      │
              ┌───────┴────────┐
              │    Jetson (中继节点) │
              │ ────────────────── │
              │  wlan1: 外部网络   │
              │  wlan0: 本地 AP    │
              │  NAT 转发服务     │
              └───────┬────────┘
                      │
               Wi-Fi 网络(AP)
                      │
           ┌──────────v──────────┐
           │  Rockchip 设备 (Client) │
           │ ───────────────────── │
           │  Mender Client 模块   │
           │  rootfsA/B 双分区    │
           │  自动回滚机制       │
           └──────────────────────┘

这就是所谓的 Jetson 中继式 OTA 架构

  • Jetson 对外通过 外部 Wi-Fi 模块(wlan1) 访问互联网。
  • Jetson 对内通过 内置 AP(wlan0) 让 Rockchip 板卡接入。
  • Rockchip 使用 Mender Client 访问 Mender Server,由 Jetson 负责网络转发。

这种方式兼具:

  • 云端统一管理;
  • 内网设备集中升级;
  • 可靠的回滚机制。

三、Mender OTA 基本概念

1. Mender 的角色组成
组件功能
Mender Server云端控制中心,负责设备注册、Artifact 管理、升级调度
Mender Client运行在设备端的守护进程,检测版本、下载、验证并执行升级
ArtifactMender 升级包,包含 rootfs 镜像、签名、版本号等信息
2. OTA 升级核心流程
1️⃣ 设备启动 → Client 上报当前版本信息
2️⃣ Server 检查版本差异
3️⃣ Server 下发更新指令
4️⃣ Client 下载 Artifact(通过 HTTPS)
5️⃣ 写入备用 rootfs 分区(B)
6️⃣ 更新 Boot 环境 → 重启
7️⃣ 新系统启动 → 上报成功
8️⃣ 若失败 → 自动回滚到 A 分区

这就是 Mender 的核心机制:A/B 分区 + 自动回滚 + 签名验证


四、Jetson 中继节点的实现逻辑

1. 网络层设计

Jetson 作为中继节点,需要两张网络接口卡:

  • wlan1:连接外部互联网。
  • wlan0:建立本地 AP,供 Rockchip 连接。
2. 开启 AP 模式
sudo nmcli dev wifi hotspot ifname wlan0 ssid OTA_AP password 12345678
3. 启用网络转发
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

这样 Rockchip 板子连接到 Jetson 的 AP 后,就能访问外部网络。

4. 验证外部连通性

在 Rockchip 上执行:

ping 8.8.8.8
curl https://mender.yourdomain.com

如果可以访问,说明 Jetson 的转发配置正确。


五、Rockchip 设备端配置(Client)

1. 使用 Yocto 集成 Mender

假设 Rockchip Yocto BSP 基于 linux-rockchip-5.10 分支,可通过添加 meta-mender 层支持 OTA。

bitbake-layers add-layer ../meta-mender/meta-mender-core
bitbake-layers add-layer ../meta-mender/meta-mender-demo

修改 conf/local.conf

INHERIT += "mender-full"
MENDER_SERVER_URL = "https://mender.yourdomain.com"
MENDER_TENANT_TOKEN = "YOUR_TOKEN"
MENDER_ARTIFACT_NAME = "rockchip-v1.0"
MENDER_STORAGE_DEVICE = "/dev/mmcblk0"

配置分区:

part /boot --source bootimg-partition --fstype=vfat --size=32M
part / --source rootfs --fstype=ext4 --label rootfsA --size=512M
part / --source rootfs --fstype=ext4 --label rootfsB --size=512M
part /data --fstype=ext4 --label data --size=256M
2. 启动 Mender 服务
systemctl enable mender-client.service
systemctl start mender-client.service
3. 检查连接状态
mender show-artifact
journalctl -u mender-client -f

输出应显示设备已注册到云端 Mender Server。


六、Mender Server 部署(云端)

1. 服务器搭建(Docker)

在云主机或 Jetson 外部服务器上执行:

git clone https://github.com/mendersoftware/mender-server
docker-compose up -d

Mender Web 控制台默认访问地址:

https://<server_ip>/ui/
2. 上传 Artifact

使用 Mender 工具创建升级包:

mender-artifact write rootfs-image \
  -t rockchip \
  -n rockchip-v1.1 \
  -f tmp/deploy/images/rootfs.ext4 \
  -o update-v1.1.mender

上传到 Mender Server → 分配到目标设备组。


七、OTA 升级逻辑流程(完整路径)

1️⃣ 阶段一:系统检测
  • Mender Client 定期轮询云端版本。
  • 若发现新版本,则准备下载。
2️⃣ 阶段二:网络中继
  • Rockchip 通过 Jetson 的 NAT 转发访问 Mender Server。
  • Jetson 并不参与升级决策,仅提供路由。
3️⃣ 阶段三:下载与验证
  • Rockchip 下载 .mender 升级包到 /var/lib/mender
  • 校验签名与版本号。
4️⃣ 阶段四:写入备用分区
  • 当前运行 rootfsA,则将更新写入 rootfsB。

  • 更新完成后修改 U-Boot 环境变量:

    fw_setenv mender_boot_part 3
    fw_setenv mender_boot_part_hex 3
    fw_setenv upgrade_available 1
    
5️⃣ 阶段五:重启测试
  • 系统重启进入 B 分区,Mender 标记“boot success”。
  • 若启动失败,自动回滚到 A。
6️⃣ 阶段六:上报状态
  • 若 B 启动成功,Client 向 Server 报告更新完成。
  • 若失败,回滚并上报“failure”。

八、逻辑图:Mender OTA 在 Jetson 中继下的传输路径

+------------------------------------------------------+
|                     Mender Cloud                     |
|------------------------------------------------------|
| Artifact Storage | Device Management | Web Console    |
+--------------------------+---------------------------+
                           │ HTTPS (443)
                           │
                +----------v----------+
                | Jetson (Relay Node) |
                |---------------------|
                | wlan1: Internet     |
                | wlan0: AP (NAT)     |
                | iptables 转发        |
                +----------+----------+
                           │ Wi-Fi
                           │
                +----------v----------+
                | Rockchip Client     |
                |---------------------|
                | Mender Client       |
                | rootfsA / rootfsB   |
                | 自动回滚机制        |
                +---------------------+

九、优点与工程价值

特性说明
云端统一管理Mender Server 可批量分发版本、回收设备信息
边缘安全隔离Rockchip 不直接暴露公网,仅通过 Jetson NAT 转发
自动回滚机制防止升级失败导致系统损坏
灵活部署可部署于局域网、云端或混合环境
扩展性强Jetson 可作为中继节点为多台 Rockchip 提供 OTA 接入

十、与本地升级的区别

维度OTA(Mender)本地升级(U盘/脚本)
控制方式云端集中控制手动触发
网络依赖需要外部网络不依赖网络
安全性支持签名验证一般无签名
回滚机制自动
适用场景长期维护、大规模部署小批量测试

所以,即使 Rockchip 是通过 Jetson 的 AP 间接上网,这仍然是 真正的 OTA(远程升级),区别仅在于中间多了一层转发逻辑。


十一、实战建议与注意事项

  1. 保证 Jetson 的 NAT 稳定性
    可使用 iptables-persistentsystemd 脚本在开机自动恢复转发表。

  2. 使用 HTTPS + 签名验证
    避免中间人攻击。

  3. 在 Rockchip 上配置 watchdog
    OTA 过程中若死机可自动重启。

  4. 限制带宽或使用压缩镜像
    Wi-Fi OTA 传输时间长时可压缩 rootfs 镜像。

  5. 测试回滚机制
    模拟升级失败,验证系统能否安全返回原分区。


十二、总结

✅ 这种方案是标准 OTA 架构的一种扩展形式,Jetson 作为中继节点提供网络桥接,而非 OTA 控制节点。

关键逻辑

  • Rockchip 运行 Mender Client
  • Jetson 提供双 Wi-Fi 网络与 NAT 转发
  • 云端 Mender Server 统一管理 Artifact 与设备状态

这种模式的优势在于可实现:

  • 多节点集中 OTA
  • 边缘隔离的安全升级
  • 跨网络环境的远程部署

最终,通过这种 Jetson 中继式 Mender OTA 架构,Rockchip 设备即便在无法直连公网的情况下,也能获得完整的云端 OTA 升级能力。它是目前工业类和 AI 边缘系统中一种安全、合理、工程上可落地的最佳实践方案。


内地版本:电子工业出版社已出版,并在大陆热销。Yocto项目实战教程:高效定制嵌入式Linux系统
海外版本:繁体中文版支持全球华人购买,让更多开发者轻松掌握嵌入式系统核心技能。 金石堂购买链接
🎥 更多学习视频请关注 B 站:嵌入式Jerry


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值