在yocto(poky)中为什么在构建/文件夹中配置图层?

时间:2017-08-24 14:59:22

标签: yocto bitbake

我是yocto的新手。我正在尝试学习如何添加包,如何创建新图层等等......只是在四处寻找。通过克隆poky和玩游戏开始。

据我了解,bblayers.conf文件对于项目配置以及最终构建的内容(最终图像中包含哪些图层和包)至关重要。

这可能是错误的假设,但我也有一种感觉,构建/文件夹是您构建(bitbake)的东西。图像,构建它们需要的很多东西,大量的东西...你可以删除它并重建它,如果你以某种方式打破它。或者您可以在没有构建/文件夹的情况下复制所有内容,并继续在另一台计算机上工作。

显然情况并非如此。 build/conf/文件夹包含重要的.conf文件,例如bblayers.conf

有人可以解释为什么会这样吗?是否有一种优雅的方法来分离项目配置和构建文件夹?

3 个答案:

答案 0 :(得分:1)

Yocto项目有几层,主要是:

- BSPDIRTOPDIR(构建),来源,设置环境
- BSPDIR/setup-environment:为bitbake初始化所有变量;
- BSPDIR/sources:元数据/
- TOPDIR:conf / sstate-cache / cache / tmp / downloads /
- TOPDIR/downloads:食谱获取包;

- TOPDIR/conf/:存储了所有配置。主要是bblayers.conf,local.conf,sanity_info;
- TOPDIR/conf/bblayers.conf:存储将要加载的元数据的所有路径;
- TOPDIR/conf/local.conf:构建的配置
- TOPDIR/conf/sanity_info:路径重复检查以确保最后一次编译中使用的所有路径与当前编译匹配;
- TOPDIR/tmp/:所有编译和构建工作都在哪里

BSPDIR/sources/poky/meta/conf/bitbake.conf

sources/poky/meta/conf/bitbake.conf:TMPDIR ?= "${TOPDIR}/tmp"
sources/poky/meta/conf/bitbake.conf:PERSISTENT_DIR = "${TOPDIR}/cache"
sources/poky/meta/conf/bitbake.conf:DL_DIR ?= "${TOPDIR}/downloads"
sources/poky/meta/conf/bitbake.conf:SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

TOPDIR是您在运行setup-environmentoe-init-build-env时初始化的位置;所有其他bitbake配置环境变量都可以根据您在conf/local.conf中的需要进行更改;

e.g。修改conf/local.conf以从TOPDIR/downloads更改下载目录;

DL_DIR ?= "/home/downloads/"

要创建新图层,请观看此视频:https://www.youtube.com/watch?v=3HsaoVqX7dg

答案 1 :(得分:0)

您可能已关注Yocto Project Quick Start Guide

安装(克隆git存储库和安装包)之后yocto中最早的步骤是创建您的OE(OpenEmbedded)环境,该环境通过以下方式完成:

source oe-init-build-env

这会自动创建并引导您进入构建文件夹。 您可以将系统的任何目录作为此调用的参数(Reference Manual - Build Overview):

source oe-init-build-env [build_dir]

⤑这也是“项目配置”与实际构建文件夹分开的步骤。

⤑正如您所假设的,在实践中,您最多只能复制图层而不是构建文件夹。更好的方法是将其他人的资源留在他们的git存储库中,只复制和维护自己的图层。

答案 2 :(得分:0)

这确实是现代 Yocto 构建系统中的一个问题。

文件 bblayers.conf 必须根据 MACHINEDISTRO 信息使用所有提供的信息进行合成(通常在 repo manifest file) 通过以下方式分层:从每个可用的层文件 layer.conf 以及 conf/machineconf/distro图片

相反,bblayers.conf 通常是在 setup-environment 脚本的帮助下从基础层 conf/bblayers.conf 位置复制过来的.

这种方法不提供“一键式”可构建环境,但需要维护人员/开发人员查看自述文件,以确定缺少哪些层要添加到 build/conf/bblayers.conf