标签: openembedded

如何查找哪个Yocto Project配方填充图像根文件系统上的特定文件

我在Yocto项目中工作了很多,而且常见的挑战是确定rootf上包含文件的原因(或从哪个配方开始).这可以从构建系统的环境,日志和元数据中获得.理想情况下,一组命令将允许将文件链接回源(即配方).

我通常的策略是对元数据执行搜索(例如grep -R filename ../layers/*)并在互联网上搜索所述文件名以找到可能负责任的食谱的线索.但是,这并不总是非常有效.在许多情况下,文件名未在配方中明确说明.此外,在许多情况下,文件名由多个配方提供,这导致额外的工作以找到最终提供它的配方.当然还有很多其他线索可以找到答案.无论如何,当构建系统看起来应该有足够的信息来简单地解决答案时,这种调查通常非常费力.

linux embedded-linux openembedded bitbake yocto

16
推荐指数
1
解决办法
5298
查看次数

使用bitbake加速项目构建时间的方法?

我正在一个项目中工作,这个项目有许多bitbake食谱并且需要花费很多时间 - 在某些情况下长达13个小时.我是bitbake的新手,我要求某种方式:

  • 检查哪些包需要更多构建
  • 检查很长的依赖项(我已经使用过bitbake -g)
  • 检查是否存在任何循环依赖关系以及如何解决它们
  • 检查是否有未使用的配方以及如何安全地移除它们

或任何使用任何工具来更好地管理和理解食谱的建议.

或者通常用于加速构建过程的任何方法/方法.

欢迎提出建议和确切技术.

编辑日期07/08/2013:

找到这个用于跟踪依赖关系的有用工具

https://github.com/scottellis/oe-deptools

描述:

./oey.py -h

Usage: ./oey.py [options] [package]

Displays OE build dependencies for a given package or recipe.
Uses the pn-depends.dot file for its raw data.
Generate a pn-depends.dot file by running bitbake -g <recipe>.

Options:
-h      Show this help message and exit
-v      Show error messages such as recursive dependencies
-r      Show reverse dependencies, i.e. packages dependent on package
-f      Flat output instead of default tree …
Run Code Online (Sandbox Code Playgroud)

python embedded build openembedded bitbake

15
推荐指数
1
解决办法
1万
查看次数

是否可以将命令行变量传递给bitbake构建?

我有一个使用bitbake的OpenEmbedded环境来做一些构建.我希望得到一些"交互式"的东西,bitbake会暂停并询问输入然后继续构建,但我发现这是不可能的.

因为我不能这样做,所以我正在寻找一些方法来为构建传递额外的标志.有没有办法将标志传递给bitbake构建类似gcc的-D选项?

即:

bitbake -Dfoo=bar oe-myimage
Run Code Online (Sandbox Code Playgroud)

因此在oe-myimage变量的构建过程foo中将设置为bar.

build compiler-flags command-line-arguments openembedded bitbake

14
推荐指数
5
解决办法
1万
查看次数

Docker图像格式

我想建立一个没有docker iself的Docker镜像.我看过Packer,但它要求在构建器主机上安装Docker.

我查看了Docker Registry API文档,但这些信息似乎并不存在.

我想这个图像只是一个tarball,但我希望看到格式的完整规范,即需要什么样的格式,并且需要任何元数据文件.我可以尝试从注册表中下载图像并查看其中的内容,但是没有关于如何获取图像本身的信息.

我的项目的想法是实现一个脚本,从我编译的atefacts创建一个图像,并将其上传到注册表.我想将OpenEmbedded用于此目的,基本上这将是对Bitbake的扩展.

packer openembedded docker yocto

14
推荐指数
2
解决办法
1万
查看次数

有人可以指向我的bitbake或openembedded教程吗?

我一直在为BeagleBoard 的Angstrom Linux发行版工作.任何人都可以指点我的bitbake和OpenEmbedded如何实际工作的教程或参考?例如,当我像这样调用bitbake时:

bitbake virtual/kernel
Run Code Online (Sandbox Code Playgroud)

实际发生了什么?我已经研究了Angstrom的配方并搜索了Angstrom文件系统,但我似乎无法找到对虚拟或内核的引用.我觉得使用这个工具链并制作内核补丁并没有真正了解bitbake的工作方式,我感到有点沮丧.

linux kernel beagleboard openembedded angstrom-linux

13
推荐指数
1
解决办法
5157
查看次数

Yocto错误:"非调试包包含.debug目录"与yocto配方

我正在尝试构建一个自定义的yocto配方,它涉及编译一个小的C程序.在构建期间 -

$ bitbake -f interface-configuration
...
ERROR: QA Issue: non debug package contains .debug directory: interface-configuration path /work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/packages-split/interface-configuration/etc/interfaces/bin/.debug/set
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/git/poky/build-atmel/tmp/work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/temp/log.do_package.28986
ERROR: Task 10 (/home/git/poky/meta-atmel/recipes-intelli/interface-configuration/interface-configuration_0.1.bb, do_package) failed with exit code '1'
Run Code Online (Sandbox Code Playgroud)

我想知道这里是否有人知道如何禁用调试信息或删除QA检查.到目前为止,谷歌搜索错误已经证明毫无结果.

干杯

使用interface-configuration.bb进行更新

DESCRIPTION = "Interface configuration files and tools"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
SRC_URI = "file://interface-configuration-0.1.tar.gz"

do_compile() {
    install -vd ${D}/
    ${CC} -g0 set.c …
Run Code Online (Sandbox Code Playgroud)

openembedded

13
推荐指数
2
解决办法
1万
查看次数

Yocto中的共享状态缓存如何工作?

任何人都可以更全面地向我解释sstate缓存如何在yocto中工作?

这种解释还不清楚.

我不明白何时出现这种情况:

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Running setscene task 118 of 155 (virtual:native:/home/lulianhao/poky-build/edwin/poky/meta/recipes-devtools/pseudo/pseudo_git.bb:do_populate_sysroot_setscene)
NOTE: Running setscene task 119 of 155 (/home/lulianhao/poky-build/edwin/poky/meta/recipes-devtools/quilt/quilt-native_0.48.bb:do_populate_sysroot_setscene)
Run Code Online (Sandbox Code Playgroud)

当它找到工件或得到候选人,然后检查签名.我想知道什么时候setcene任务实际运行.

附加问题:当它在本地sstate_cache文件夹中查找并进入镜像时?

openembedded bitbake yocto

13
推荐指数
1
解决办法
1万
查看次数

跟踪bitbake中的变量赋值

我正在使用bitbake/openembedded,但是我的配方失败了,因为我认为某些路径变量最终没有正确设置.具体来说,我正在向SRC_URI添加文件,但错误表明尝试复制文件是使用错误的路径完成的.因此

1)如何验证使用file:// protocol时使用的"当前"路径变量

2)鉴于我以某种方式确认哪个变量用于搜索文件,我可以在我的依赖图中跟踪对所述变量的赋值吗?我的意思是,bitbake必须在某些配方文件集中以某种顺序遇到变量的追加/前置,我想检查以便找到我的错误

奖金问题:我认为我当前用于检测配方中错误的"调试方法"过于原始(例如将-D -D -D添加到命令行,然后通过成堆输出来查找提示)."专业人士"如何调试他们的bitbake食谱?

更新:我发现了一种更好的调试配方的方法:

事实证明,在成功完成给定配方的"获取"任务之后,将创建配方的工作文件夹.在这个文件夹里面是一个"临时"子文件夹,里面包含执行的代码(例如run.do_fetch.######)和配方中每个任务的结果(例如log._do_fetch.######) .

检查"run .. ###"文件将告诉您任何变量的确切值,以及为该任务执行的确切命令/ Python函数.给定"run"的输出存储在"log .. ###"文件中,其id/number与"run"文件相同.不知何故,这个非常基本的信息在我阅读手册时没有注册,但现在我总是在配方失败时查看"temp"文件夹.

openembedded bitbake

11
推荐指数
1
解决办法
2万
查看次数

Yocto使用.bbappend文件来覆盖initramfs的默认init脚本的编写

我正在尝试编写一个.bbappend文件,该文件将附加到initramfs-live-boot_1.0.bb其中有一个语句,该语句do_install()init-live.sh管理引导过程的shell脚本的内容写入启动时init运行的初始化脚本.我的.bbappend文件的目的是引用要复制的启动脚本的修改版本来代替原始版本而不更改基础openembedded-core和/或poky环境.因此,该.bbappend文件和我的脚本版本将放在我的项目目录中,并构建其余的自己的食谱.

initramfs-live-boot_1.0.bbappend看起来像这样:

SUMMARY = "Replacement recipe"
FILESEXTRAPATH_prepend := "${THISDIR}/files:"
SRC_URI += "file://init.sh"

do_install_append() {
        install -m 0755 ${WORKDIR}/init.sh ${D}/init
}
Run Code Online (Sandbox Code Playgroud)

files在与.bbappend包含init.sh应该从中读取的脚本的文件所在的目录中有一个文件夹.

问题是当我尝试构建图像时,它会吐出这个错误:

WARNING: Failed to fetch URL file://init.sh, attempting MIRRORS if available
Run Code Online (Sandbox Code Playgroud)

然后尝试在poky目录中搜索缺少的文件,而不是在我的项目目录中.

.bbappend写错了文件吗?我如何initramfs使用该.bbappend文件编辑脚本?

init openembedded bitbake yocto

11
推荐指数
1
解决办法
2万
查看次数

如何编写需要内核源头文件的BitBake驱动程序配方?

介绍

do_install在BitBake配方中有一个任务,我为驱动程序编写了执行自定义install脚本的任务.任务失败,因为安装脚本无法在其中找到内核源头文件<the image rootfs>/usr/src/kernel.此脚本在生成的OS上运行正常.

发生了什么

这是我食谱的相关部分:

SRC_URI += "file://${TOPDIR}/example"
DEPENDS += " virtual/kernel linux-libc-headers "
do_install () {  
   ( cd ${TOPDIR}/example/Install ; ./install )
}
Run Code Online (Sandbox Code Playgroud)

这是install脚本的相关部分:

if [ ! -d "/usr/src/kernel/include"  ]; then
  echo ERROR: Linux kernel source include directory not found.  
  exit 1
fi
cd /usr/src/kernel
make scripts
...
./install_drv pci ${DRV_ARGS}
Run Code Online (Sandbox Code Playgroud)

我检查了改变if [ ! -d "/usr/src/kernel" ],也失败了.install传递不同的选项install_drv,我有以下相关部分:

cd ${DRV_PATH}/pci
make NO_SYSFS=${ARG_NO_SYSFS} NO_INSTALL=${ARG_NO_INSTALL} ${ARGS_HWINT}
if …
Run Code Online (Sandbox Code Playgroud)

header-files linux-kernel openembedded bitbake yocto

11
推荐指数
1
解决办法
7865
查看次数