yocto

yocto

关键词: yocto Poky BitBake openembedded yocto构建系统

定制你的Linux

主要内容:

  • yocto简介和概念
  • yocto资源
  • BitBake和openembedded
  • yocto的工作流程

文档参考:

最新文档 https://taotaodiy-yocto.readthedocs.io/en/latest/yocto/yocto.html

yocto-taotaodiy

什么是Yocto

Yocto项目(YP)是一个开源协作项目,可帮助开发人员创建基于Linux的自定义系统,而无需考虑其硬件体系结构。
该项目提供了一套灵活的工具和空间,全世界的嵌入式开发人员可以在其中共享技术,软件堆栈,配置和最佳实践,这些技术,
可用于为嵌入式和IOT设备或需要定制Linux OS的地方创建量身定制的Linux映像。

yocto的发行版为Poky,也是用来构建系统的基本工具。Poky包含定制版OpenEmbedded(OE
Core)和BitBake构建引擎,以及帮助我们构建系统的其他元数据,
在BitBake的调度下,很好的协调meta-poky、meta-yocto-bsp等元数据层,定制我们所需要的系统。
Poky是典型嵌入式系统所需功能的基本规范,也是Yocto项目中允许您将发行版构建成可用二进制映像的基本规范。

Yocto
Project适用于任何架构。无论是芯片还是ODM供应商都编写了支持性的BSP,或者如果您有自定义芯片,您可以按照YP的规格创建BSP。Yocto
Project支持Intel,ARM,MIPS,AMD,PPC等
大多数ODM,OSV和芯片供应商提供SDK,BSP和其他支持结构,以便与Yocto
Project一起使用。 它专为受限制的嵌入式和物联网设备需求而设计。Yocto
Project的设计使您只需根据需要添加所需内容或包,而无需删除和减少默认分发。Yocto
Project提供了一个示例嵌入式发行版(Poky),以帮助您快速入门。 Yocto
Project提供全面的工具链功能。此工具链已经过Yocto社区在各种架构和平台上的测试。
Yocto
Project遵循严格的发布计划,在所有受支持的版本中包含安全补丁。最新的2个版本支持CVE(常见漏洞和风险)问题。

相关资源

yocto官网 https://www.yoctoproject.org/

官方文档 https://docs.yoctoproject.org/index.html

官方论坛 https://wiki.yoctoproject.org/wiki/TipsAndTricks

BitBake文档
https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-intro.html

OpenEmbedded http://www.openembedded.org/

资源

meta-openembedded https://gitee.com/warery/meta-openembedded

imx项目 https://source.codeaurora.org/external/imx/imx-manifest

一些硬件bsp层

https://layers.openembedded.org/layerindex/branch/master/layer/meta-qcom/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-ti/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-freescale/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-amd/

一些关键的软件层

https://layers.openembedded.org/layerindex/branch/master/layer/meta-mender-core/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-qt5/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-nodejs/
https://layers.openembedded.org/layerindex/branch/master/layer/meta-snappy/

博客

为什么将Yocto项目用于我的物联网项目?

OpenEmbedded 中文手册

Yocto在Ubuntu上创建一个最小化的Linux发行版

Yocto tips 系列(1-20)

工程

nxp https://source.codeaurora.org/external/imx/imx-manifest

openembedded,poky和yocto的关系

yocto工作流程

OpenEmbedded包含核心元数据层和BitBake构建工具

BitBake是任务执行程序和调度程序,它是OpenEmbedded构建系统的核心。

OpenEmbedded-Core(OE-Core)元数据,其中包括共享配置,全局变量定义,共享类,包装和配方。其中,类定义了构建逻辑的封装和继承。配方是要构建的软件和图像的逻辑单元。

Poky既是Yocto的构建示例也是一套构建工具,Poky是位于OE-Core之上的集成层。

meta-poky,这是特定于Poky的元数据。

meta-yocto-bsp,这是Yocto项目特定的董事会支持包(BSP)。

文档,其中包含用于制作用户手册集的Yocto Project源文件。

而Yocto大致类似于桌面Linux发行版的概念;它是配方,配置值和依赖项的集合,用于创建针对特定需求的定制Linux运行时映像。

BitBake是什么

从根本上讲,BitBake是一个通用的任务执行引擎,它允许Shell和Python任务在复杂的任务间相关性约束内工作时高效且并行地运行。
BitBake的主要用户之一OpenEmbedded以此内核为基础,并使用面向任务的方法构建嵌入式Linux软件堆栈。

从概念上讲,BitBake在某些方面类似于GNU Make,但有很大的区别:

  • BitBake根据提供的构成任务的元数据执行任务。元数据存储在配方(.bb)和相关的配方"追加"(.bbappend)文件,配置(.conf)和基础包含(.inc)文件以及类(.bbclass)文件中。元数据向BitBake提供有关要运行哪些任务以及这些任务之间的依赖关系的说明。
  • BitBake包含一个提取程序库,用于从各个地方(例如本地文件,源代码控制系统或网站)获取源代码。
  • 每个要构建的单元的指令(例如,一个软件)被称为"配方"文件,其中包含有关该单元的所有信息(依赖项,源文件位置,校验和,描述等)。
  • BitBake包括客户端/服务器抽象,可以从命令行使用,也可以通过XML-RPC用作服务,并且具有多个不同的用户界面。

yocto的工作流程

了解Yocto
Project工作流非常重要,因为它可以帮助您查明发生问题的位置以及构建的中断方式。工作流分为以下步骤:

  • 首先,开发人员指定架构,策略,补丁和配置详细信息。
  • 然后,构建系统从指定的位置获取并下载源代码。该项目支持标准方法(例如tarball)或源代码存储库系统(例如git)。
  • 下载后,将源提取到本地工作区中,在该工作区中将应用补丁,并且将运行用于配置和编译软件的常见步骤。
  • 然后将软件安装到临时暂存区域,在该区域中,您选择的二进制软件包格式(deb,rpm或ipk)将用于汇总软件。
  • 在整个构建过程中都会运行不同的质量检查和健全性检查。
  • 创建二进制文件后,将生成二进制程序包提要,然后将其用于创建最终的根文件映像。
  • 生成文件系统映像。

yocto工作流程

使用 Yocto Project 构建自定义嵌入式 Linux 发行版

用于嵌入式
Linux 开发的专业级开源工具
https://developer.ibm.com/zh/tutorials/l-yocto-linux/

yocto tips

yocto的特点

  • 在整个行业中被广泛采用:
    存在半导体,操作系统,软件和服务供应商,其产品和服务采用并支持Yocto项目。
  • 不可知的体系结构: Yocto
    Project支持Intel,ARM,MIPS,AMD,PPC和其他体系结构。大多数ODM,OSV和芯片供应商都会创建并提供支持其硬件的BSP。除了大量的体系结构支持之外,Yocto
    Project还通过Quick EMUlator(QEMU)全面支持各种设备仿真。
  • 轻松进行图像和代码传输: Yocto
    Project输出可以轻松地在体系结构之间移动,而无需迁移到新的开发环境。
  • 灵活性: 公司使用Yocto
    Project的方式多种多样。通过定制和分层,项目组可以利用基础Linux发行版来创建适合其产品需求的发行版。
  • 受约束的嵌入式和IoT设备的理想选择:
    与完整的Linux发行版不同,您可以使用Yocto
    Project完全创建嵌入式设备所需的内容。
  • 全面的工具链功能:
    支持的体系结构的工具链可满足大多数用例。也可以使用自定义该工具链和第三方工具链。
  • 策略上的机制规则:
    关注机制而不是策略,可以确保您可以自由地根据设计需求设置策略,而不必采用某些系统软件提供商强制执行的决策。
  • 使用层模型: Yocto
    Project层基础结构将相关功能分为单独的捆绑包。使用层来隔离和分组功能可以降低项目的复杂性和冗余度,使您可以轻松扩展系统,进行自定义并保持功能的组织性。
  • 支持部分构建: 您可以根据需要构建和重建单个软件包。
  • 根据严格的时间表发布: 主要发布周期为
    六个月,分别是在十月和四月。
  • 个人和组织的丰富生态系统:
    对于开源项目,社区的价值非常重要。支持论坛,专业知识和继续推动Yocto项目前进的活跃开发人员随时可用。
  • 二进制可重现性:
    Yocto项目使您可以非常具体地描述依赖项,并实现很高百分比的二进制可重现性(例如的99.8%core-image-minimal)。
  • 许可证清单: Yocto项目提供了一个许可证清单,
    以供需要跟踪开源许可证使用情况的人员(例如法律团队)进行审查。
03-17
### Yocto Project 使用指南与构建系统介绍 Yocto Project 是一个开源协作项目,旨在帮助开发者创建针对嵌入式设备的定制化 Linux 系统[^5]。该项目提供了灵活的工具集和开发环境,支持全球范围内的嵌入式开发人员通过共享技术、软件堆栈以及最佳实践来生成自定义的 Linux 镜像。 #### 1. Yocto Project 的核心组件 Yocto Project 主要依赖两个关键组件:BitBakeOpenEmbedded-Core。 - **BitBake**: 这是一个构建引擎,负责解析并执行构建任务中的指令文件(称为 Recipe)。它是整个构建流程的核心驱动器[^3]。 - **OpenEmbedded-Core**: 提供了一组基础配方(Recipe),用于描述如何构建特定的软件包或功能模块。这些配方构成了系统的底层框架。 #### 2. 开发环境设置 为了使用 Yocto Project 创建目标镜像,需要完成以下准备工作: - 下载 Poky 项目源码库,这是 Yocto Project 的参考实现部分[^4]。 - 设置编译所需的主机环境变量(如 `MACHINE` 定义目标硬件平台)。 - 初始化构建目录并通过运行脚本(例如 `oe-init-build-env`)激活工作空间。 #### 3. 编译过程概览 启动实际构建之前,需指定所需的目标镜像类型(比如最小根文件系统或者完整的桌面环境)。随后调用命令触发 BitBake 工具处理对应的任务列表直至生成最终产物——即适合部署到目标硬件上的二进制映像文件。 如果遇到任何错误提示,则应参照官方文档或其他社区资源排查问题;必要时升级相关依赖项版本号以匹配当前使用的发行版需求。 以下是简单的 Python 脚本来演示如何自动化某些重复性的操作步骤: ```python import os def setup_yocto_environment(): poky_url = "https://git.yoctoproject.org/git/poky" clone_command = f"git clone {poky_url}" init_env_script = "./oe-init-build-env" try: # Clone the repository if it doesn't exist locally. if not os.path.exists("poky"): print(f"Cloning Poky from {poky_url}...") os.system(clone_command) # Initialize environment by sourcing script within Python subprocess call. activate_cmd = f"./{init_env_script}; echo $BUILD_DIR" result = os.popen(activate_cmd).read().strip() if result.startswith("/"): # Assuming absolute path returned upon success. print("Environment initialized successfully.") else: raise Exception("Failed initializing build env.") except Exception as e: print(e) if __name__ == "__main__": setup_yocto_environment() ``` 此代码片段展示了如何克隆 Poky 源码仓库,并初始化必要的构建环境以便进一步开展具体项目的开发活动。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪贪贪丶慎独

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值