如何在源 poky/oe-init-env 之后显示新的 Yocto 图像选项

How to display new Yocto image option after source poky/oe-init-env

假设我有一个新的 yocto 图像调用 stargazer-cmd 我应该编辑什么文件以便每次我获取 poky/oe-init-env 它显示为用户的构建选项?

kj@kj-Aspire-V3-471G:~/stm32Yoctominimal$ source poky/oe-init-build-env  build-mp1/

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

我想在 core-image-minimal 之上添加 stargazer-cmd,我不确定 google 以及我需要更改的文件是什么。

conf/conf-notes.txt 在你的图层中。

OECORENOTESCONF 应该指向文件。

让我解释一下如何将自定义配置添加到 OpenEmbedded 构建过程。

首先,这里是运行时完成的过程:

source poky/oe-init-build-env
  1. oe-init-build-env 脚本初始化 OEROOT 变量以指向脚本本身的位置。

  2. oe-init-build-env 脚本获取另一个文件 $OEROOT/scripts/oe-buildenv-internal,它将:

  • 检查是否设置了OEROOT
  • BUILDDIR 设置为您的自定义构建目录名称 </code>,或者如果您不提供 <code>build
  • BBPATH 设置为 poky/bitbake 文件夹
  • $BBPATH/binOEROOT/scripts 添加到 PATH(这将启用 bitbakebitbake-layers 等命令 ...)
  • 导出BUILDDIRPATH到下一个文件
  1. oe-init-build-env 脚本通过 运行 最终构建脚本继续:
TEMPLATECONF="$TEMPLATECONF" $OEROOT/scripts/oe-setup-builddir
  1. oe-setup-builddir 脚本将:
  • 检查是否设置了BUILDDIR
  • $BUILDDIR
  • 下创建conf目录
  • 获取一个模板文件,该文件将检查是否设置了 TEMPLATECONF 变量:
. $OEROOT/.templateconf

该文件包含:

# Template settings
TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf}

表示如果没有设置TEMPLATECONF变量,则设置为meta-poky/conf,这就是默认的local.confbblayers.conf的来源。

  • 复制$TEMPLATECONF$BUILDDIR/conf/templateconf.cfg
  • 设置一些变量指向自定义 local.confbblayers.conf:
OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
OECORENOTESCONF="$TEMPLATECONF/conf-notes.txt"

oe-setup-builddir里面有评论说TEMPLATECONF可以指向一个目录:

# 
# $TEMPLATECONF can point to a directory for the template local.conf & bblayers.conf
#
  • local.conf.samplebblayers.conf.sampleTEMPLATECONF 目录复制到 BUIDDIR/conf:
cp -f $OECORELOCALCONF "$BUILDDIR/conf/local.conf"

sed -e "s|##OEROOT##|$OEROOT|g" \
    -e "s|##COREBASE##|$OEROOT|g" \
        $OECORELAYERCONF > "$BUILDDIR/conf/bblayers.conf"

最后它会打印出 OECORENOTESCONF 里面指向 TEMPLATECONF/conf-notes.txt:

的内容
[ ! -r "$OECORENOTESCONF" ] || cat $OECORENOTESCONF

并且默认位于 meta-poky/conf/conf-notes.txt 下:

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

Other commonly useful commands are:
 - 'devtool' and 'recipetool' handle common recipe tasks
 - 'bitbake-layers' handles common layer tasks
 - 'oe-pkgdata-util' handles common target package tasks

所以,现在,在了解所有这些之后,您可以执行以下操作:

  1. 为您的项目创建自定义模板目录,其中包含:
  • local.conf.sample
  • bblayers.conf.sample
  • conf-notes.txt
  1. 不要忘记将 bblayers.conf 中的 poky 路径设置为 ##OEROOT##,因为它将由构建脚本自动设置。

  2. conf-notes.txt

    中设置您的自定义消息
  3. 在任何新构建之前,只需设置 TEMPLATECONF:

TEMPLATECONF="<path/to/template-directory>" source poky/oe-init-build-env <build_name>

然后,您将找到一个带有自定义 local.confbblayers.conf 的构建,其中包含包含 TEMPLATECONF

路径的附加文件 conf/templateconf.cfg