Yocto
项目是一个开源项目提供样例、工具以及方法来帮助你创建商用的基于Linux
的嵌入式系统产品,而与硬件架构无关。
OpenBMC使用Yocto
提供的工具来管理配置以及创建BMC镜像。
在OpenBMC中有两个主要的使用案例:
master
或现有的tags
中进行构建master
中第一个是一个简单的案例,在使用bitbake
之前构建系统,例如
Palmetto
Zaius
cheatsheet.
第二个案例可以通过Yocto
的devtool
工具来实现。在运行. openbmc-env
之后,devtool
工具将出现在你的环境PATH
中,可以以多种方式使用。
如果你已经具有想要集成的源码树,首先运行devtool modify -n ${PACHAGE} ${SRCTREE}
在你的构建目录中创建一个新的Yocto layer
。然后它将为这个recipe包构建一个.bbappend
补充文件,并使用externalsource
类使用no-ops
替换掉download
,fetch
,patch
等步骤。此时,如果你对包进行编译,它将会使用本地的源目录。注意recipe包可能不会执行一个清除操作并依赖于当前要进行的动作,你可能在${SRCTREE}
中运行${PACKAGE}
构建系统的清理命令来清理所有的编译对象。如果你修改源,那么需要运行bitbake -c cleansstate ${PACKAGE}
来清理BitBake的缓存。
另外,如果你没有本地的源码树,但是依旧想要修改包,可以执行devtool modify ${PACKAGE}
将会处理fetch
,unpack
,patch
步骤,并将源码树放置到默认工作空间中。
当你完成了所有的内容,运行devtool reset ${PACKAGE}
来从devtool
的Yocto
层中移除.bbappend
。
更多关于devtool的使用方法可以在Yocto Mega Manual中找到。
有很多的使用BitBake进行工作的例子。OpenEmbedded中的recipe example是一个不错的内容。