RDK S100 环境批量移植到其他RDK S100

RDK S100 环境批量移植到其他RDK S100,有什么比较好的方案吗

您好,S100 V4.0.5 版本会加入这个功能,一键备份并且支持烧录备份的镜像

目前该版本已经提测 :saluting_face:

1 个赞

现在功能完成了吗? 如何操作

功能已经落地了:官方烧录工具 XBurn 从 V1.1.9 起支持 S100「指定区域备份」,V1.1.10 起支持 S100「批量烧录 + 指定分区镜像烧录」,配合板端固件 V4.0.5+ 即可实现「一台调好、批量复制」。

操作流程:

1. 备份源板(调好的那台)

  • 板子进下载模式接 PC,打开 XBurn,产品类型选 RDK S100,选好连接类型/下载模式/存储介质
  • 「高级配置」勾选 备份指定区域,把当前系统镜像导出到 PC

2. 烧录到其他板子

  • 目标板同样接 PC 进下载模式,镜像目录选刚才备份出来的镜像,执行烧录
  • 多台可同时接(软件上限 8 台,建议每批 ≤4 台),批量时建议关闭「烧录完成自动重启」,避免单台重启影响其他设备

注意点:

  • 多设备并发对 USB 供电/线材要求高,优先用主板原生 USB 口,别走劣质 hub
  • 「备份指定区域 / 烧录指定区域 / 烧录指定分区镜像」三个高级选项互斥,一次只能选一个

文档:

指定区域我怎么判断呢? 比如我在 /home/sunrise 部署了python 代码, 还用apt 安装了一些依赖,我该备份那个? 如果备份整个emmc, 那 也没啥区别啊? 另外备份emmc 出来的文件有60G左右,实际我emmc上都没用多少啊,这个能压缩吗?

选哪个区域不用纠结:S100 的「备份指定区域」只有两档——miniboot_flash(NOR 上的启动组件)和 emmc(整盘)。你的 python 代码、apt 依赖都在 rootfs 里,属于整盘范围,备份不支持分区级粒度,所以emmc 整盘就对了(想连 bootloader 一起克隆可以两个都勾,不过同型号板子 miniboot 一般不用动)。对你这个需求,备份整个 eMMC 和「移植环境」确实就是一回事。

60G 是因为备份出来的是原始整盘镜像,文件大小 = eMMC 容量(64G),跟实际用了多少无关。XBurn 本身没有压缩选项,但可以自己压:镜像里大片空区都是零,压缩率很可观:

xz -T0 emmc_disk_backup.img        # 压缩存档

# 烧录前先解压、去掉 _backup 改名
unxz emmc_disk_backup.img.xz
mv emmc_disk_backup.img emmc_disk.simg

另外一个更轻的思路:如果只是批量移植你的环境而不是整台机器状态,可以官方镜像 + 脚本恢复,比 60G 克隆快得多:

# 母板上导出
apt-mark show manual > pkgs.txt
tar czf home.tar.gz -C /home sunrise

# 新板烧官方镜像后恢复
xargs -a pkgs.txt apt install -y
tar xzf home.tar.gz -C /home

文档:S100 烧录步骤(备份指定区域)

烧录工具最好支持压缩啊。 还有你更轻的思路也不太行,因为有依赖会安装到别的目录啊

说得对,apt 装的依赖散落在系统各处,拷目录或脚本重装确实不保证一致——批量移植还是走整盘克隆最稳。这条路官方工具已经支持了:

XBurn(V1.1.9+)对 S100 支持「指定区域备份」,可以备份整个 eMMC 区域,流程:

  1. 拿一台配好环境的 S100 当「金样板」,进下载模式连 PC,XBurn 高级配置 → 备份指定区域 → 选 emmc(整盘),导出备份镜像
  2. 回烧时把文件名去掉 _backup,整盘区域后缀用 .simg(如 emmc_disk_backup.imgemmc_disk.simg),放进镜像目录
  3. 其他 S100 进下载模式,用「烧录指定区域」只烧 emmc 区域即可;XBurn 支持批量烧录,软件上限 8 台,推荐每批 ≤4 台

文档:

关于压缩:XBurn 目前没有内置镜像压缩选项,整盘备份导出的是 sparse 格式镜像,空块不占空间,实际文件一般远小于裸盘容量;存档/传输还嫌大的话,自己 xzzip 压一下,烧录前解压即可。压缩功能这个诉求可以在帖子里 @官方 反馈下。

两个注意点:

  • 克隆出来的板子 hostname、machine-id 和金样板完全一样,组网/跑 ROS 的话烧完后要逐台改
  • 建议只烧 emmc 区域、别动 miniboot_flash,保留各板自己的底层启动区

批量烧录没有图片指示,你是指pc 上连出多根usbc 线? 每台设备连一根? xburn 也不能指定那台开始烧录啊? 直接批量烧录设置成4 就行 ?

对,就是这个意思:每台 S100 用一根 USB-C 数据线各自连到 PC(每台设备独立一根),XBurn 会同时识别所有接入的设备并行烧录,不需要也不能指定"先烧哪台"——接上就算一路,点烧录后各台同时开始。

数量上:软件上限 8 台,官方推荐并发 ≤4 台,超过 4 台建议分批烧。所以"设置成 4"是对的,4 台一批比较稳。

几个官方文档明确提过的注意点:

  • 尽量插主板原生 USB 口,别用劣质 hub;
  • 每台设备独立供电要充足,数据线选带屏蔽、尽量短、支持数据传输的;
  • 批量烧录时建议在 设置 → 高级配置 里关闭"烧录完成自动重启",避免一台完成重启时干扰其他设备。

并发数越多失败概率越高,线材/hub/供电这类硬件原因导致的失败软件兜不住,产线场景先用 2~4 台跑通再上量。

文档:批量烧录 | Xburn

再问个问题,我拿到的设备上S100P ,看了版本是 RDKS100-V4.0.3-Beta ,我现在要先升级到RDKS100-V4.0.5_20260507 , 再安装自己的应用环境,备份镜像用于后面烧录。 那升级烧录 需要指定区域还是都不选。 以及备份操作 是都不选还是选emmc ? 以及用备份烧录到新设备时 烧录指定区域怎么选?

三个问题分开说:

1. 升级到 V4.0.5:不勾选「烧录指定区域」,直接烧全镜像

从 V4.0.3-Beta 跨版本升级,烧全镜像最干净(会同时覆盖 eMMC 所有区域和 NOR Flash 上的 miniboot_flash,保证 bootloader 和系统版本一致)。设备当前系统能正常启动的话,下载模式选 Fastboot 即可;产品类型按实际型号选,存储介质选 eMMC

2. 备份:勾选「备份指定区域」,选 emmc

你的应用环境装在 eMMC 系统盘里,备份 emmc 区域就是整盘备份(含系统+应用),导出为 img_packages/disk/emmc_disk_backup.img。设备是同批次、bootloader 一致的话,miniboot_flash 可以不备。注意备份耗时较长。

3. 烧到新设备:推荐用「替换镜像 + 烧全镜像」的方式

# 备份镜像改名后,替换进 V4.0.5 官方 product 包对应目录
mv emmc_disk_backup.img emmc_disk.simg
cp emmc_disk.simg <V4.0.5_product目录>/img_packages/disk/emmc_disk.simg

然后对新设备直接烧全镜像(不勾指定区域)。这样新设备出厂自带的 miniboot_flash 也会一并刷成 V4.0.5,避免 bootloader 与系统版本不匹配。

如果新设备已经先烧过一遍 V4.0.5 全镜像,后续也可以走快路径:勾选「烧录指定区域」只选 emmc,烧录速度更快,适合批量复制。

文档:

一个提醒:烧录指定区域/备份指定区域/烧录指定分区镜像三项互斥,一次只能勾一个。

RDKS100-V4.0.5/                                    05-Mar-2026 14:06                   -
RDKS100-V4.0.5_20260507/                           12-May-2026 11:10                   -

这两个版本哪个是最新的? 我装了RDKS100-V4.0.5_20260507 ,cat /etc/version 显示是 4.0.5-Beta

RDKS100-V4.0.5_20260507 是更新的版本,你装的这个没问题。

两者关系(见官方 Release Note):

  • V4.0.5:2026-03-03 发布
  • V4.0.5_20260507:2026-05-07 发布,基于 V4.0.5 的修订版,只修复了 RDK S100 V1P1 硬件的支持问题

Release Note:

关于 cat /etc/version 显示 4.0.5:_20260507 只是带日期的修订构建后缀,底层软件主版本号仍是 4.0.5,所以 version 文件里不带日期后缀是正常现象。批量移植环境时以 20260507 这版为基准即可(如果你的板子是 V1P1 硬件,务必用这版)。

备份的emmc , emmc_disk_backup.img 改成emmc_disk.img后, 文件夹下有 emmc_disk.img 和 emmc_disk.simg两个同名不同扩展名的文件,再启动烧录 emmc ,烧录软件能识别使用哪个吗?

不能靠它自己识别,xburn 是按区域对应的固定文件名找镜像的——S100 的 eMMC 整盘区域认的是 emmc_disk.simg,你改成 emmc_disk.img 它不会用,烧进去的还是目录里原来那个官方 emmc_disk.simg

官方文档对备份镜像回烧的命名有明确规定:整盘区域的备份要改成 .simg 后缀emmc_disk_backup.imgemmc_disk.simg),只有 miniboot 这类基础启动区域才用 .img。见:存储介质与分区 | Xburn (「备份镜像再烧录」一节)

正确做法:

# 1. 先把官方原始镜像挪走(别留在烧录目录里)
mv emmc_disk.simg emmc_disk.simg.orig

# 2. 把你的备份改成整盘区域要求的文件名
mv emmc_disk_backup.img emmc_disk.simg

这样目录里 eMMC 整盘只有一个 emmc_disk.simg,xburn 烧的就是你的备份,不会有歧义。

已经烧录失败, 备份的是 emmc , 文件名改好,烧录到新的设备,选择的是 烧录指定区域-emmc 。断电插hdmi 线,启动界面出不来,插网线网络灯不亮。这种怎么处理? 正常备份的设备已经从 V4.0.3-Beta 升级成 V4.0.5-Beta, 新设备还是老的 V4.0.3-Beta ,直接刷 emmc 会不会是引导错误导致的?

很可能是你猜的这个原因:引导组件版本不匹配。

S100 的启动组件分两块存放:Norflash 里的 miniboot_flash(HSM/MCU0 等)和 eMMC 里的 miniboot_emmc(BL31/U-Boot)。「烧录指定区域-emmc」只覆盖 eMMC 整盘(含 miniboot_emmc),不会动 Norflash 里的老 V4.0.3 miniboot_flash。源机升 V4.0.5 时若同步更新过 Norflash 侧组件,新设备就成了"老底层引导 + 新系统"的混搭,可能直接起不来(HDMI 无输出、网口灯不亮)。

处理办法(二选一):

  1. 最稳:新设备先用官方 V4.0.5 的 product.zip烧录全镜像(会连 miniboot_flash 一起更新),确认能正常启动后,再用「烧录指定区域-emmc」刷入你的备份镜像。
  2. 或在源机上把 miniboot_flash 区域也备份一份,得到 miniboot_flash_backup.img,改名 miniboot_flash.img 放进镜像目录 img_packages/disk/,在新设备上同时勾选 miniboot_flash + emmc 两个区域烧录。批量移植建议走这条路,两块区域一起备、一起刷,版本永远配套。

另外核对两个易错点:

  • 备份镜像再烧录时要去掉 _backup,且整盘区域后缀必须是 .simg(如 emmc_disk_backup.imgemmc_disk.simg),基础启动区域才用 .img。如果只改名没改后缀,也刷不对。
  • 烧完先断电,把烧录模式拨码拨回正常启动位(SW3 选 eMMC 启动)再上电。仍不亮就接串口(波特率 921600)看日志卡在哪一级。

参考:

已经备份了源设备的 miniboot_flash , 在新设备刷刷入,但是系统还是启动不了,网口灯也不亮

先说结论:别继续走「克隆 miniboot_flash」这条路了。miniboot_flash(NOR 上的 HSM/MCU0 启动组件)是和板子硬件强绑定的,如果源板和新板型号/硬件版本不完全一致(S100 vs S100P、V1P0 vs V1P1、不同 SIP 批次),把源板的 miniboot_flash 刷进去就可能直接起不来——网口灯完全不亮,说明卡在最底层启动阶段,符合这个特征。

建议这样救回来:

  1. 新设备先刷官方全镜像恢复:用 V4.0.5_20260507 的 product.zip 烧全镜像(什么都不勾指定区域),会把 miniboot_flash 刷回和新设备硬件配套的官方版本。先确认这台能正常启动、网口灯正常。

  2. 再只刷你的 emmc 备份:确认能启动后,把备份改名替换进镜像目录,勾「烧录指定区域」只选 emmc

mv emmc_disk_backup.img emmc_disk.simg
# 替换进 img_packages/disk/,原官方 emmc_disk.simg 先挪走

这样 bootloader 用各板自己的、系统环境用你克隆的,版本也配套(源板就是 V4.0.5 全镜像升上去的)。

  1. 如果第 1 步刷官方全镜像后仍然不启动:那就不是镜像问题了——
    • 检查烧录/启动开关是否拨回正常位、SW3 是否选 eMMC 启动;
    • 接串口(波特率 921600)看上电有无日志:完全无输出基本是供电/开关/硬件问题,有输出但卡住则把卡住位置的日志发上来。

另外确认一下:源板和新板是不是同一型号、同一硬件版本?如果一台是 S100、一台是 S100P,这个移植方案本身就不成立,得分别做金样板。

文档: