标签: openembedded

在 OpenEmbedded 中选择内核版本

我想使用 OpenEmbedded在Ubuntu 13.04 主机上构建 Angstrom 内核。

git clone git://github.com/Angstrom-distribution/setup-scripts.git
cd setup-scripts
MACHINE=beagleboard./oebb.sh config beagleboard
MACHINE=beagleboard./oebb.sh update
MACHINE=beagleboard./oebb.sh bitbake virtual/kernel
Run Code Online (Sandbox Code Playgroud)

构建内核的原因是为了能够在主机上交叉编译内核驱动程序,针对 Angstrom 发行版(BeagleBoard)。Beagleboard 运行 2.6.32 的预构建映像。

据我所知,交叉编译不仅必须针对 Angstrom 发行版,还必须针对 BeagleBoard 运行的相同内核版本。OE如何选择“首选”版本?有什么办法可以选择 BitBake 将构建的内核版本吗?

build linux-kernel openembedded angstrom-linux bitbake

3
推荐指数
1
解决办法
3408
查看次数

新的 Yocto 配方构建但编译后工作目录被删除

我正在尝试将 zbar 的配方从 0.10.0 更新到 0.20.1。这是原始配方:

https://github.com/openembedded/meta-openembedded/blob/master/meta-oe/recipes-support/zbar/zbar_0.10.bb

我修改过的食谱在这个问题的底部。包确实可以编译,但问题是在“打包”步骤期间发生了一些事情,并且“work”目录被清除,除了“work”目录中的“temp”目录。在编译过程中,如果我列出工作目录中的文件,我期望的一切都存在,但是在编译成功后,有些东西会清理文件。我究竟做错了什么?

编译期间:

user@ubuntu:~/rpi/build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/zbar/0.20.1-r0$ cd ../0.20.1-r0/ ; ls
build              image            pkgdata                sysroot-destdir
configure.sstate   license-destdir  pseudo                 temp
debugsources.list  package          recipe-sysroot
git                packages-split   recipe-sysroot-native
Run Code Online (Sandbox Code Playgroud)

编译后:

user@ubuntu:~/rpi/build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/zbar/0.20.1-r0$ cd ../0.20.1-r0/ ; ls
temp
Run Code Online (Sandbox Code Playgroud)

约克托食谱:

DESRIPTION = "2D barcode scanner toolkit."
SECTION = "graphics"
LICENSE = "LGPL-2.1"

DEPENDS = "pkgconfig intltool-native libpng jpeg"

LIC_FILES_CHKSUM = "file://LICENSE;md5=243b725d71bb5df4a1e5920b344b86ad"

S = "${WORKDIR}/git"

SRCREV = "edcf08b49e0a5fe71c18fa9d4b8ed83ed8fc9082"
SRC_URI = "git://github.com/mchehab/zbar.git"

inherit autotools pkgconfig

EXTRA_OECONF = " --without-x --without-imagemagick --without-qt --without-python2 --disable-video --without-gtk"

FILES_${PN} += …
Run Code Online (Sandbox Code Playgroud)

linux openembedded zbar yocto

3
推荐指数
1
解决办法
1672
查看次数

如何在arago项目构建中为配方编写自己的包

如何在arago项目构建中编写自己的配方包?我知道它可以是bitbake文件.但我怎么写,不知道.我在互联网上搜索,但没有找到任何好的来源开始.有人可以提供链接或示例开始吗?

关心
Linux学习者.

linux cross-compiling embedded-linux openembedded bitbake

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

调试bitbake pkg_postinst _ $ {PN}:附加到其他配方安装的配置文件

我正在为openembedded-classic编写openembedded/bitbake配方.关于keyutils的我的食谱RDEPENDS,一切似乎都有效,除了一件事:我想在keyutils包安装的/etc/request-key.conf文件中附加一行.所以我在配方中添加了以下内容:

pkg_postinst_${PN} () {
  echo 'create ... more stuff ..' >> ${sysconfdir}/request-key.conf
}
Run Code Online (Sandbox Code Playgroud)

但是,我生成的图像中缺少预期添加的行.update-rc.d如果这有任何区别,我的食谱会继承.

我的主要问题是:我如何调试这个?目前我正构建一个完整的rootfs图像,然后在其中进行搜索,看看是否显示更改.当然有更好的方法吗?

更新: 将食谱更改为:

pkg_postinst_${PN} () {
  echo 'create ... more stuff ...' >> ${D}${sysconfdir}/request-key.conf
}
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气.

openembedded bitbake

2
推荐指数
2
解决办法
2845
查看次数

可以在SRC_URI中为BB配方定义多个下载位置吗?

我想要做的是在SRC_URI中定义文件(http://)或repo(git://)的辅助位置,如果第一个发生故障的话.

就像是:

SRC_URI = "http://site1/mytar.tar.gz \
           http://site2/mytar.tar.gz \
Run Code Online (Sandbox Code Playgroud)

要么

SRC_URI = "git://site1/myrepo.git \
           git://site2/myrepo.git
Run Code Online (Sandbox Code Playgroud)

如果第一个选项失败,它将尝试第二个选项而不是仅将它们相互下载.

我知道有预镜像,本地缓存和镜像,但我真的只想在BB配方中指定多个位置.

这似乎应该得到支持,但我找不到它.

openembedded bitbake yocto

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

ImportError:没有名为bb的模块

要创建一个HelloWorld .ipk程序包,所描述的在这里,我克隆bitbakeOpenEmbedded作为

git clone git://git.openembedded.org/bitbake
git clone git://git.openembedded.org/openembedded
Run Code Online (Sandbox Code Playgroud)

然后导出以下varibales

export OEBASE=/media/sda3/open_env/
export PATH=$OEBASE/bitbak/ebin:$PATH
export BBPATH=$OEBASE/build:$OEBASE/openembedded
export BB_ENV_EXTRAWHITE="OEBASE"
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时,我得到以下错误:

bitbake -b packages/myhelloworld/myhelloworld_0.1.bb

Traceback (most recent call last):
  File "/usr/bin/bitbake", line 35, in <module>
    import bb
ImportError: No module named bb
Run Code Online (Sandbox Code Playgroud)

我这样做ubuntu 10.04.我在这里缺少什么?

编辑:

如回答所示,我执行了以下命令并获得如下错误:

git clone git://git.openembedded.org/openembedded-core
cd openembedded-core
git clone git://git.openembedded.org/bitbake

cd ..
git checkout dylan
cd bitbake
git checkout 1.18
cd ..

. oe-init-build-env
Run Code Online (Sandbox Code Playgroud)

build/conf/local.confmyhelloworlddir中修改并创建dir openembedded-core/build/然后执行 …

python packages package openembedded bitbake

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

Yocto Jethro:没有gdbserver的软件包提供程序

我正在使用freescale.github.io飞思卡尔社区BSP。

在local.conf中MACHINE ?? = "wandboard",我添加了EXTRA_IMAGE_FEATURES += "tools-debug"

这会将gdb,gdbserver和其他一些工具添加到rootfs。

SUMMARY = "Debugging tools"
LICENSE = "MIT"

inherit packagegroup

PR = "r3"

MTRACE = ""
MTRACE_libc-glibc = "libc-mtrace"

RDEPENDS_${PN} = "\
    gdb \
    gdbserver \
    strace \
    ${MTRACE} \
    "
Run Code Online (Sandbox Code Playgroud)

但是,我收到了以下错误,即bitbake无法找到PN gdbserver。

Computing transaction...error: Can't install packagegroup-core-tools-debug-1.0-r3@all: no package provides gdbserver

gdbserver是否已从bsp中删除?为什么将其删除?如果没有,在哪里可以找到gdbserver?

embedded-linux openembedded yocto

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

基于OpenEmbedded/Yocto的系统的强大软件更新解决方案

我们正在为我们的项目使用Variscite VAR-SOM-AM33平台,软件平台基于OpenEmbedded/Yocto.

为确保硬件与当前软件一起运行,设备已连接到互联网.到目前为止,我们一直在遵循OE配方并生成ipk并通过opkg应用软件更新.

但是,由于某些配方写得不好(在升级过程中无法卸载/安装),因此该过程并不令人满意.什么强大的技术/解决方案可用于基于OE/Yocto的系统?

提前致谢.

openembedded yocto

2
推荐指数
3
解决办法
3093
查看次数

如何在位烘焙配方中覆盖单个包装的优化级别?

默认情况下,所有Yocto项目都带有-O2优化级别

如何使用-O0覆盖单个包?

openembedded bitbake yocto

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

如何在yocto .bb配方中有条件地指定变量

我想做这样的事情:

if [ "${BB_NO_NETWORK}" == "1" ]; then
    SRCREV ?= "a2d1f0225692c7c054014ec4dfc4dd13a35245ee"
else
    SRCREV ?= "${AUTOREV}"
fi
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个无法解析的错误

这是我要工作的。

SRCREV_FORMAT = "${@bb.utils.contains('BB_NO_NETWORK', '1', "v16_pcmx", "${AUTOREV}", d)}"
SRCREV_d3v16 = "${@bb.utils.contains('BB_NO_NETWORK', '1', "a2d1f0225692c7c054014ec4dfc4dd13a35245ee", "${AUTOREV}", d)}"
SRCREV_v16 = "${@bb.utils.contains('BB_NO_NETWORK', '1', "a2d1f0225692c7c054014ec4dfc4dd13a35245ee", "${AUTOREV}", d)}"
SRCREV_pcmx-native = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pcmx-pn-pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pn-pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV = "${@bb.utils.contains('BB_NO_NETWORK', '1', "", "${AUTOREV}", d)}"
Run Code Online (Sandbox Code Playgroud)

此尝试失败:

SRCREV_FORMAT = "${@ "v16_pcmx" if …
Run Code Online (Sandbox Code Playgroud)

openembedded yocto

2
推荐指数
2
解决办法
4285
查看次数