You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Yocto变量将Kirkstone版本构建镜像复制至指定目录?

基于Yocto Kirkstone版本复制构建镜像的方法

方法一:自定义BitBake自动复制任务

通过添加自定义BitBake类,让镜像构建完成后自动执行复制操作:

  1. 在自定义层中创建classes/image-copy.bbclass文件,写入以下内容:
# 给镜像后处理命令添加自定义复制步骤
IMAGE_POSTPROCESS_COMMAND += "copy_custom_images;"

copy_custom_images() {
    # 定义目标目录,TOPDIR是Yocto内置的构建根目录变量
    DEST_DIR="${TOPDIR}/../build/new_directory"
    # 确保目标目录存在
    mkdir -p "${DEST_DIR}"
    # 复制当前机器的所有镜像文件,可根据需求过滤类型
    cp "${DEPLOY_DIR_IMAGE}/"*"${MACHINE}"* "${DEST_DIR}/"
    # 示例:仅复制rootfs压缩包和wic镜像
    # cp "${DEPLOY_DIR_IMAGE}/"*"${MACHINE}"*.rootfs.tar.xz "${DEPLOY_DIR_IMAGE}/"*"${MACHINE}"*.wic "${DEST_DIR}/"
}
  1. 在你的镜像配方(如core-image-minimal.bb)中添加继承,或者在build/temp/conf/local.conf里追加:
INHERIT += "image-copy"

后续构建镜像时,完成后会自动把文件复制到目标目录。

方法二:结合Yocto环境变量的手动脚本

先加载Yocto构建环境,再通过脚本批量复制:

  1. 创建copy-images.sh脚本:
#!/bin/bash
# 加载Yocto构建环境(temp为你的build子目录)
source oe-init-build-env temp > /dev/null 2>&1

# 设置目标目录
DEST_DIR="${TOPDIR}/../build/new_directory"
mkdir -p "${DEST_DIR}"

# 利用Yocto内置变量复制镜像
cp "${DEPLOY_DIR_IMAGE}/"*"${MACHINE}"* "${DEST_DIR}/"

echo "镜像已成功复制到 ${DEST_DIR}"
  1. 赋予脚本执行权限并运行:
chmod +x copy-images.sh
./copy-images.sh

方法三:直接在终端执行复制命令

加载Yocto环境后,直接执行以下命令:

# 创建目标目录
mkdir -p ../build/new_directory
# 复制镜像,DEPLOY_DIR_IMAGE和MACHINE为Yocto内置变量
cp ${DEPLOY_DIR_IMAGE}/*${MACHINE}* ../build/new_directory/

注意事项

  • ${DEPLOY_DIR_IMAGE}是Yocto内置变量,对应路径就是../build/temp/deploy/images/<$MACHINE>/,无需手动硬编码路径
  • ${MACHINE}会自动替换为当前构建的机器名称,确保复制的是对应机器的镜像
  • 可根据需求调整复制的文件后缀,避免复制日志、符号链接等非必要文件

内容的提问来源于stack exchange,提问作者rpr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:22:18