yocto是个什么东东

yocto不是个什么东东

在我们了解Yocto项目是什么之前,让我们先了解一下它不是什么。

Yocto项目不是用于现有硬件的软件开发工具包(SDK),而是用于构建这样一个工具包。

Yocto项目不是可以部署到硬件上的系统二进制镜像,而是用于构建这样一个镜像。

Yocto项目不是可以用于在硬件上安装的Linux发行版,而是用于为资源受限的硬件构建一个定制的发行版。

yocto是个什么东东

Yocto项目是一个开源协作项目,旨在帮助开发人员为嵌入式产品创建定制的基于Linux的系统,而不受硬件架构的限制。该项目提供了一套灵活的工具和一个空间,嵌入式开发人员可以在全球范围内共享技术、软件堆栈、配置和最佳实践,这些可以用于为嵌入式设备创建定制的Linux镜像。

Yocto项目整合、维护和验证了三个关键的开发元素。

一套集成工具,可使嵌入式Linux开发取得成功,包括用于自动构建和测试的工具,用于板级支持和许可合规性的流程,以及用于定制Linux嵌入式操作系统的组件信息。

一个参考嵌入式发行版(称为Poky)。

与OpenEmbedded项目一同维护的OpenEmbedded构建系统。

poky是什么?

Poky(发音为Pock-ee)是一个参考嵌入式发行版和一个参考测试配置,其目的是:

提供一个基本的功能发行版,可用于演示如何定制发行版。

用于测试Yocto项目的组件,Poky用于验证Yocto项目。

作为用户下载Yocto项目的工具。Poky不是一个产品级别的发行版,而是一个很好的定制起点。Poky是在oe-core之上的一个集成层。

oe-core是什么?

oe-core或者OpenEmbedded-Core是一个由基础recipes、类别和相关文件组成的元数据,旨在在许多不同的OpenEmbedded衍生系统中通用,包括Yocto项目。它是OpenEmbedded社区原始存储库的筛选子集,已经经过精简,形成了一个经过持续验证的recipes,从而形成了一个严格控制和质量保证的核心recipes。

简而言之,oe-core是一个经过质量保证的核心基础recipes,Poky使用它来生成一个良好且可工作的基础Linux镜像。

recipe是什么?

recipe是最常见的元数据形式。一个recipe包含一个构建软件包的设置和任务(指令)列表,然后用于构建二进制镜像。一个recipe描述了从哪里获取源代码以及应用哪些补丁。recipe描述了库或其他recipe的依赖关系,以及配置和编译选项。

它们存储在层中。实际上,Poky的分层特性使其具有极高的可扩展性、多功能性,并且易于适应各种系统。例如,可以将与网络有关的所有recipe放在一个层中,将与对应的应用程序相关的所有recipe放在另一个层中,为图形子系统专门创建一个层,依此类推!

类似地,还有被称为配置文件的文件。这些文件包含全局变量的定义、用户定义的变量以及硬件配置信息。它们告诉构建系统在image中构建和放置什么,以支持特定的平台。

配置文件和recipe通常被称为Poky构建系统中的元数据。除了这些之外,用于使用recipe和配置文件构建图像的命令和数据也构成了元数据。

我们有oe-core,其中包含由经过验证的元数据形成的有效image。进而会想到对于这些recipe,怎么使之形成目标image呢?答案是借助BitBake。

Bitbake是什么?

BitBake是一个调度器和执行引擎,它解析指令(recipe)和配置数据。然后,它创建一个依赖树来排序编译,安排包含的代码的编译,最后执行构建指定的定制Linux镜像(发行版)。BitBake是一个类似于make的构建工具。BitBake recipe指定了如何构建特定软件包。它们包括所有软件包依赖项、源代码位置、配置、编译、构建、安装和删除指令。

在构建过程中,跟踪依赖关系并执行软件包的本地或交叉编译。在交叉构建设置的第一步中,框架将尝试创建一个适用于目标平台的交叉编译器工具链。

BitBake解析器确保顶层的层可以覆盖较低层中的设置,从而在解析器向下移动层时避免任何冲突!

BitBake引擎使用元数据来创建一个被称为软件包(packages)的构建输出。这些软件包组合在一起,形成了最终目标——最终镜像。

以下是Yocto项目组件的一个良好高层次表示:

Yocto 开发流程

首先,开发人员必须决定各种高级配置,比如要为哪个平台建镜像,构建所需的任何特殊配置数据,要构建的镜像类型等。

一旦配置就绪,接下来是源代码。源代码可以以tarballs的形式提取自项目发布,也可以从Git或SVN中提取,甚至可以在工作空间中本地添加。

通常,可能需要对源代码应用补丁,以定制软件组件以适应所需的机器或特定镜像。然后应用这些补丁。

对源代码进行构建。大多数常见的构建工具,如autotools、cmake等都受支持。BitBake负责进行必要的配置和编译。

构建过程输出,然后被放置到一个临时的分段区域,在这里进行打包,如.deb、.rpm、.ipk等。这个打包信息是在我们获取源代码之前在开始时指定的配置之一。

接下来是质量保证(QA)过程。尽管说这是QA发生的第一个阶段是不准确的——更准确地说,QA活动在整个过程中都发生——特别是在BitBake引擎的运行过程中。

一旦二进制软件包准备就绪,只需要创建一个适用于所请求镜像的软件包源。

这个软件包源最终形成了最终的镜像。Linux镜像并不是构建过程能够创建的全部。构建过程还可以选择生成一个SDK,该SDK可用于对应平台的开发和构建应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

客服销冠偷偷用的提效神器!无广很实用

近期发现我的同事每天上班必登录的一款软件——客服宝聊天助手,用过才发现:真客服办公的提效神器!感兴趣的小伙伴请往下看~一、客服宝的简介:客服宝聊天助手,是一款跨平台快捷回复工具。自带多种功能,有效帮…

leetcode判断子序列

本题中,我们可以删除原始字符串的一些字符但是不能改变其他字符的位置,这种求子序列的题都可以用动态规划来解决。 首先我们要确定dp数组的定义,这里我们将dp数组定义为dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的…

蓝桥杯[OJ 1621]挑选子串-CPP-双指针

目录 一、题目描述: 二、整体思路: 三、代码: 一、题目描述: 二、整体思路: 要找子串,则必须找头找尾,找头可以遍历连续字串,找尾则是要从头的基础上往后遍历,可以设头…

OSCP靶场--BlackGate

OSCP靶场–BlackGate 考点(1.redis rce 2. CVE-2021-4034提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.176 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 03:32 EDT Nmap scan report for 192.168.163.…

MongoDB实战面试指南:常见问题一网打尽

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! MongoDB是一款流行的非关系型数据库,以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结…

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容:做题 例题1:蓝桥骑士 问题描述: 小蓝是蓝桥王国的骑士,他喜欢不断突破自我。 这天蓝桥国王给他安排了N个对手,他们的战力值分别为a1,a2,...,an,且按顺序阻挡在小蓝的前方。对于这些对手小…

剪辑设计软件如何跨系统使用?PC也能用Mac Final Cut

我猜你工作中,常常遇到这样那样的麻烦: 临时接手一个项目,之前的同事用Final Cut,而你是Windows系统; 临时有紧急需求要调整,而本地电脑却没有工作软件/性能不给力; 那这样的情况&#xff0c…

SSL证书如何实现数据加密传输?

在当前互联网的洪流中,用户对网站隐私与安全性的重视程度日益提升。为了确保用户信息和交易数据的安全传输,SSL证书在网络世界中扮演了关键角色。本文将深入解析SSL证书的核心功能及其重要作用。 1、SSL证书采用加密技术保障数据传输安全 通过应用公钥加…

Mysql 无法启动,mysql-bin.日志丢失删除处理

在linux操作系统中,当mysql无法启动时候,先看日志 2024-03-15T05:20:16.352075Z 0 [Warning] [MY-000081] [Server] option max_allowed_packet: unsigned value 107374182400 adjusted to 1073741824. 2024-03-15T05:20:16.352156Z 0 [Warning] [MY-010…

(008)Unity StateMachineBehaviour的坑

文章目录 StateMachineBehaviour同名函数的调用问题StateMachineBehaviour 的 OnState*、OnStateMachine* 的区别 StateMachineBehaviour同名函数的调用问题 1.如果脚本中,两个同名的函数都存在,那么两个函数都会被调用;如果只有其中一个同名…

IO流——字节流

常见字符集 标准ASCII码字符集 ASCII(American Standard Code for Information Interchange):美国信息交换标准代码,包括英文、符号等标准ASCII码使用1个字节存储一个字符,首位是0,总共可表示128个字符 而对于国内而言&a…

橡胶工厂5G智能制造数字孪生可视化平台,推进橡胶工业数字化转型

橡胶5G智能制造工厂数字孪生可视化平台,推进橡胶工业数字化转型。随着信息技术的迅猛发展和智能制造的不断推进,数字化转型已成为制造业转型升级的重要方向。橡胶工业作为传统制造业的重要领域,正面临着产业升级和转型的迫切需求。橡胶5G智能…

计算机网络笔记(湖科大教书匠版本)

第一章、 ①三种交换方式 电路交换、分组交换、报文交换(被分组交换所取代) 1.电路交换:会一直占用通道,不适合计算机之间的数据通信 2.分组交换:通常我们把表示该数据的整块数据称为一个报文。 先把较长的报文划…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性:ACID,即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的,一份是redo log日志,一份是undo log日志&#xff…

Linux——基础指令

一、Linux目录结构 1、树形结构 Linux只有一个根目录 / ,所有文件都在它下面 2、Linux路径的描述方式 在Linux系统中,路径之间的层级关系,使用: / 来表示 eg: /usr/local/hello.txt 注意: 开头/表示根…

解决:黑马webpack视频中出现的问题总结

问题 1 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 解决 Webpack 中 ERROR in main Module not found: Error: Can‘t resolve ‘./src‘ 问题 黑马AJAX-Node.js-Webpack教学视频(BV1MN411y7pw 其中P98)中webpack部分&#xff0c…

phpcms上传导致getshell详解及案例

一、环境 这里我根据大佬的文章将环境复原 phpcms上传导致getshell详解及案例 | 离别歌 回忆phpcms头像上传漏洞以及后续影响 | 离别歌 二、代码&#xff1a; php&#xff1a; <?php header("Content-Type:text/html; charsetutf-8"); require_once(pclzip…

Unload-labs

function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传的文件类型var allow_ext ".jpg|.png|.gif";//提取上传文件的类…

Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss、反向传播)

Loss loss的作用如下&#xff1a; 计算实际输出和真实值之间的差距为我们更新模型提供一定的依据&#xff08;反向传播&#xff09; L1Loss 绝对值损失函数&#xff1a;在每一个batch_size内&#xff0c;求每个输入x和标签y的差的绝对值&#xff0c;最后返回他们平均值 M…

python创建虚拟环境-Anaconda安装配置和使用

Anaconda提供了一个名为conda的包管理工具&#xff0c;可以方便地创建、管理和分享Python环境。用户可以根据自己的需要创建不同的环境&#xff0c;每个环境都可以拥有自己的Python版本、库和依赖项&#xff0c;这样就可以避免因为不同项目之间的依赖关系而导致的冲突问题。 一…