树莓派3基于Yocto构建SWupdate镜像对接Eclipse Hawkbit报错咨询
问题解决方案
1. 解决do_swuimage找不到ext4.gz镜像报错
不要仅保留wic作为唯一镜像格式,修改local.conf中的镜像格式配置:
# 同时生成wic烧录底包和供swupdate打包的ext4.gz根文件系统 IMAGE_FSTYPES += "wic ext4.gz"
不需要硬改update-image.bb中的FSTYPE为.wic,改回默认的ext4.gz即可,构建时会自动生成两类镜像,不会再触发找不到文件的报错。
2. 解决注释WKS_FILE后启动仅显示闪烁光标问题
默认wic分区布局没有适配树莓派U-boot启动的参数,你开启了RPI_USE_U_BOOT = "1",默认布局不会将U-boot引导文件、内核镜像放到正确的启动分区位置,导致启动失败。
不需要直接使用meta-swupdate-boards提供的ts-raspberrypi.wks,该配置默认采用整盘备份的打包逻辑,会把SD卡全分区内容都打包进swu镜像,是导致swu体积过大的核心原因。
3. 解决swu体积过大+SWUpdate报无可用镜像问题
体积过大优化
- 调整swu打包逻辑:不要打包完整wic镜像,仅打包需要更新的根文件系统ext4.gz,sw-description中指定更新到对应的A/B冗余根分区,swu体积可压缩到和根文件系统接近的大小,完全符合Hawkbit默认上传限制。如果需要调大Hawkbit上传上限,修改Hawkbit配置文件
application.properties中的spring.servlet.multipart.max-file-size参数即可。 - 自定义wks文件:根据实际需求划分分区大小,比如boot分区128M、A/B根分区各1.5G,剩余空间留给用户数据分区,避免默认wks的冗余空间占用。
无可用镜像报错修复
ts-raspberrypi.wks对应的sw-description配置和你修改后的FSTYPE不匹配,改回ext4.gz作为swupdate打包的根文件系统格式后,sw-description里的镜像类型、设备路径和实际运行环境一致,即可解决该报错。
临时验证步骤
- 按上述要求修改
local.conf的IMAGE_FSTYPES配置 - 回退
update-image.bb的FSTYPE修改,注释WKS_FILE配置 - 构建wic底包镜像,烧录到SD卡确认系统可正常启动、SWUpdate服务运行正常
- 构建swu更新包,上传到Hawkbit测试更新流程
内容的提问来源于stack exchange,提问作者artur_roomman
相关产品推荐
相关产品推荐

