如何在Yocto构建的recovery镜像中包含main-image.wic.bz2文件?
实现Recovery镜像嵌入Main镜像的Yocto方案
1. 创建Recovery镜像配方
在你的Yocto项目recipes-core/images/目录下新建main-recovery-image.bb文件,内容可参考下面示例(根据你的main image配方调整继承的基础镜像):
# 继承基础镜像(示例:树莓派基础镜像+核心镜像特性) inherit core-image rpi-basic-image # 依赖main-image,确保构建recovery前先完成main镜像的构建 DEPENDS += "main-image" # 安装阶段:将main-image.wic.bz2复制到recovery镜像的指定目录 do_install() { # 创建目标目录 install -d ${D}/opt/recovery # 从部署目录复制main镜像文件到目标路径,设置权限 install -m 0644 ${DEPLOY_DIR_IMAGE}/main-image.wic.bz2 ${D}/opt/recovery/ } # 声明要包含到镜像中的文件路径 FILES_${PN} += "/opt/recovery/main-image.wic.bz2" # 设置Recovery镜像的输出格式(根据你的USB启动需求调整,比如wic.bz2) IMAGE_FSTYPES += "wic.bz2"
2. 配置构建环境
- 确保main-image所在的layer已添加到
conf/bblayers.conf中,否则Yocto无法找到依赖的main-image配方。 - 确认MACHINE参数已设置为树莓派对应的型号(比如
raspberrypi4-64),保证构建环境与main-image一致。
3. 构建Recovery镜像
在构建终端执行以下命令启动构建:
bitbake main-recovery-image
构建完成后,含main-image.wic.bz2的Recovery镜像产物会出现在tmp/deploy/images/<你的MACHINE>/目录下,直接烧写到USB闪存即可使用。
额外注意事项
- 如果
main-image.wic.bz2文件较大,需调整Recovery镜像的根文件系统大小,可在配方中添加:IMAGE_ROOTFS_SIZE = "2048000"(单位KB,根据实际需求修改)。 - 若要实现自动恢复逻辑,可在配方中添加恢复脚本(比如
/usr/bin/recover.sh),设置可执行权限后,通过systemd服务配置开机启动。
内容的提问来源于stack exchange,提问作者Thugmek
相关产品推荐
相关产品推荐

