yocto系列之构建与运行第一个镜像

回顾

在前面的文章中,我们介绍了Yocto,并展示了如何在Ubuntu PC上进行Yocto构建。这里是对应的链接:

Yocto: 第1部分 - yocto系列之yocto是个什么东东

https://mp.csdn.net/mp_blog/creation/editor/136742286

Yocto: 第2部分 - yocto系列之配置ubuntu主机

https://mp.csdn.net/mp_blog/creation/editor/136742286

在这篇文章中,我们直接进入构建过程说明,构建第一个Yocto镜像。 不论要为实际的目标机器构建什么镜像,按着操作说明去做都非常方便,可以快速检查我们最初想在镜像中添加的功能!

创建一个工作目录

第一步是为Yocto创建一个工作目录。这不是强制性的,但是是一个良好的实践,有一个专用的工作目录而不是在PC的随机位置进行所有操作是非常好的linux 操作习惯。

假设在用户主目录中。执行以下命令创建一个工作目录。

mkdir yocto

cd yocto

这将在主目录中创建一个名为 "yocto" 的目录,并将当前工作目录更改为该目录。

下载Poky并选择所需的发布版本

下载Poky源代码,然后检出我们所需的发布版本。在这个示例中,我们将使用kirkstone发布版本。

$ git clone git://git.yoctoproject.org/poky

$ cd poky

$ git checkout -b kirkstone origin/kirkstone

创建构建目录

构建目录是存放所有Yocto构建的地方。这使我们能够清晰地划分构建,同时尽可能地重复使用资源。在构建目录中,包含着平台配置、镜像/平台需要的特定变量、要添加到镜像中的其他recipes等。

同时,可重用的组件,如通用recipes、源代码、tarballs、构建状态缓存等,都存放在poky文件夹中。这使得我们可以为其他平台或项目简单地创建一个新的构建目录,同时仍然重复使用已经下载、创建或构建的现有组件。

要创建一个构建目录,只需执行一个名为 oe-init-build-env 的脚本,它将创建构建环境(路径、快捷方式、变量等)。

$ source poky/oe-init-build-env <name of your build directory>

如果没有指定名称,将自动创建一个名为 "build" 的构建目录。下次要使用相同的目录时,只需再次调用相同的命令。此外,一旦执行了这个命令,就已经位于新创建的构建目录中。

开始首次编译

第一次构建通常是最耗时的,因为它从recipe提及的各种上游源下载数百个tarballs。因此,将其分为两个部分是个好主意。第一步只是获取所有的源代码、tarballs等。第二步是使用下载的资源以及配置元数据和配方进行实际构建。

谈到recipe,已经有许多核心镜像recipe可供我们使用。这些核心recipe使我们能够创建一个可工作的Linux镜像,而无需对平台进行任何自定义。成功创建这样一个镜像证明了我们的构建设置有效,然后我们可以继续为目标平台进行更复杂的构建。

如果上一条命令执行正确,即我们已经位于构建目录中,那屏幕上可能已经显示了这些核心镜像的一个小子集。一些流行的核心镜像包括:

core-image-minimal: 一个允许设备仅进行启动的小型镜像。

core-image-full-cmdline: 一个仅支持控制台的镜像,安装了更多功能丰富的Linux系统功能。

core-image-sato: 一个具有Sato支持的镜像,适用于移动设备的移动环境和视觉风格。

core-image-weston 这个图像配置通常包括 Weston 显示服务器,它是用于嵌入式系统的 Wayland 协议的参考实现。core-image-weston 提供了一个基本的 Weston 环境,适用于测试和验证嵌入式图形系统。Yocto构建默认选择的目标平台是 qemux86-64 。此选择可以在文件 `conf/local.conf` 中查看。Qemu是一个非常方便的工具,用于测试Yocto镜像,它允许我们查看镜像中是否存在所需要的所有功能,而无需实际将镜像下载到目标机器上。同事它还是一个相当酷的Linux学习工具,因为qemu使用虚拟化运行镜像,并且可以访问与我们主机平台相同的资源(例如Ubuntu)。

在这篇文章中,我们使用 `core-image-minimal` 作为目标镜像,目标平台是`qemux86-64`。

资源获取,资源获取时间取决于网速与我们得CPU处理能力

$ bitbake core-image-minimal --runall=fetch

成功获取资源后我们进行编译, 编译时间取决于我们的系统资源

$ bitbake core-image-minimal

运行镜像

一旦构建完成,输出的镜像可以在 tmp/deploy/images/qemux86-64 文件夹中找到。Poky提供了一个方便的工具叫做 runqemu,它抽象出了运行镜像所需的许多步骤。一切都归结为执行一个简单的命令,以第一次启动第一个Yocto镜像!

要执行此操作,请执行以下命令:

$ runqemu qemux86-64 nographic

nographic 参数告诉 runqemu 我们不希望启动图形用户界面(GUI)。这很方便,因为有时图形访问可能会有问题,可能导致崩溃。

第一次启动可能需要很长时间...也许需要一分钟或更长时间。耐心等待一会!

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

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

相关文章

Linux学习(6)——Linux环境变量

1.环境变量简介 通过设置环境变量&#xff0c;可以满足不同用户的需求。 直接定义的变量是全局变量&#xff0c;不是环境变量。shell进程的子进程无法访问这种变量。 用export命令可以将全局变量导出为环境变量。子进程就可以访问了。 &#xff08;虽然用export命令修饰后&…

闲聊电脑(7)常见故障排查

闲聊电脑&#xff08;7&#xff09;常见故障排查 夜深人静&#xff0c;万籁俱寂&#xff0c;老郭趴在电脑桌上打盹&#xff0c;桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭&#xff1a;冰箱大哥&#xff0c;平时遇到电脑故障该咋处理呢&#xff1f; 冰箱&#xf…

数据结构——动态顺序表

数据结构的动态顺序表有以下几个操作&#xff1a;创建&#xff0c;销毁&#xff0c;初始化&#xff0c;增删查改和打印以及内存空间不够时的扩容 本文的宏定义&#xff1a; #define SeqTypeData int 1.动态顺序表的创建 typedef struct SeqListInit{//动态顺序表的创建SeqT…

自学rabbitmq入门到精通

交换机的fault &#xff08;发布与订阅模式&#xff09; 因为消息是由生产者发送给excahnge&#xff0c;exchange发送给队列&#xff0c; 然后由队列发送给消费者的。 展示使用图形化界面使用fanout模式。 创建交换机 然后创建三个队列&#xff0c;绑定对应的交换机&#xff…

docker的常用指令

docker的常用指令 从docker镜像仓库&#xff0c;搜索所有和mysql有关的镜像 docker search mysql 从docker仓库拉取mysql docker pull mysql这里的mysql是指使用search搜索出来的所有容器的NAME 如果和我一样遇到以下问题&#xff1a; 我可以登录阿里云的官网&#xff0c;找…

[mysql面试必备技能]-一条SQL的执行过程

天天和数据库打交道&#xff0c;一天能写上几十条 SQL 语句&#xff0c;但你知道我们的系统是如何和数据库交互的吗&#xff1f;MySQL 如何帮我们存储数据、又是如何帮我们管理事务&#xff1f;....是不是感觉真的除了写几个 「select * from dual」外基本脑子一片空白&#xf…

使用Python打造一款摸鱼倒计时界面

目录 一、引言 二、需求分析 三、技术选型 四、代码实现 导入必要的库和模块 创建主窗口 添加倒计时设置和显示组件 实现倒计时逻辑 运行主循环 五、案例测试与优化 六、总结 一、引言 在日常的工作和生活中&#xff0c;我们经常会遇到需要暂时离开工作岗位的情况&…

Docker容器化技术(使用Dockerfile制作镜像)

Docker中的镜像分层 Docker 支持通过扩展现有镜像&#xff0c;创建新的镜像。实际上&#xff0c;Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。 1、Docker 镜像为什么分层 镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相…

springboot“力炫”健身馆网站

摘要 随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;网络技术如今已成为人们生活中不可缺少的一部分&#xff0c;而信息管理系统是通过计算机技术&#xff0c;针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有效地促…

当前组件端口莫名增加127.0.0.1:3658和8563

当部署组件到服务器中&#xff0c;可以通过下方的命令查询服务pid占用的端口&#xff0c; netstat -nap |grep PID | grep LISTEN查询之后发现除了自己组件的端口还增加 百思不得其解后&#xff0c;知道了3658 8563端口是近期使用的arthas组件的端口&#xff0c; 启动arthas组…

ROS——集成开发环境搭建

1.4 ROS集成开发环境搭建 和大多数开发环境一样&#xff0c;理论上&#xff0c;在 ROS 中&#xff0c;只需要记事本就可以编写基本的 ROS 程序&#xff0c;但是工欲善其事必先利其器&#xff0c;为了提高开发效率&#xff0c;可以先安装集成开发工具和使用方便的工具:终端、ID…

基于GT911触控IC的电容屏在MSP430上的驱动

背景 最近参加公司一个电池测试仪的项目&#xff0c;负责电容屏驱动开发&#xff0c;电容屏的触控IC是汇顶科技的GT911&#xff0c;电容屏的总线接口是I2C。 因为项目沟通方面的失误&#xff0c;本应接到主控芯片的电容屏&#xff0c;被连到了MSP430这款负责供电管理的MCU&…

NCP1380BDR2G芯片中文资料规格书PDF数据手册引脚图图片参数功能价格

产品描述&#xff1a; NCP1380 是一款高性能器件&#xff0c;旨在为准谐振转换器供电。该控制器基于专属的谷锁闭系统&#xff0c;可以在功率负载变轻时进行切换并降低开关频率。这样将产生稳定的运行&#xff0c;即使在漏极-源极谷中总是触发的开关事件下也是如此。此系统可在…

关于数据文件上传到服务器的格式及上传实现的方法

文件上传的格式&#xff1a; 第一种&#xff1a;form-data格式的&#xff1a; let fm new FormData; fm.append(file,file) fm.append(filename, ) // 在请求体中进行添加请求头的信息 axios.post(https://127.0.0.1:8888/upload_single,fm,{ headers:{ …

SPI机制详解

SPI机制详解 什么是SPI机制&#xff1f; SPI&#xff1a;Service Provider Interface&#xff0c;中文直译&#xff1a;服务提供者接口&#xff0c;它通过在ClassPath路径下的META-INF/service文件夹中查找文件&#xff0c;并自动加载文件里所定义的类 在面向对象的设计原则…

踩坑(乱改配置,电脑都打不开,无奈暴力重装)文末有惊喜喔

总结我的论文项目的傻逼开端。&#xff08;想的很好&#xff0c;思路也对&#xff0c;也做了&#xff0c;但是过程和结果好像并不是想象中那么容易&#xff09; 故事讲解&#xff1a; 本来我只有一台电脑&#xff0c;这个电脑上面东西比较杂。学习资料呀&#xff0c;笔记呀&a…

【使用postman测试python接口】

打开python服务 设置postman如下&#xff0c;并发送&#xff1a; postman新建请求设置请求方式为post设置地址、raw、json方式、内容如下 结果&#xff1a; python如下&#xff1a; from flask import Flask, request, jsonifyapp Flask(__name__) # 实例化对象app.route…

JVM理解学习

参考视频 运行时数据区 JVM架构总览图 绿色的&#xff1a;方法区&#xff0c;堆&#xff0c;是所有线程共享的 黄色的&#xff1a; 虚拟机栈&#xff0c;本地方法栈&#xff0c;程序计数器&#xff0c;是线程私有的 程序计数器 程序计数器是一块较小的内存空间&#xff0c;物…

macbook安装brew出现错误解决办法

我是使用国内的源安装brew的时候&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 我选择了 1: 就出错了&#xff0c;后来切换为2重新安装就好了 安装完成后提示获取不到系统版本&#xff1a; Failed to co…

Linux使用Docker部署Registry结合内网穿透实现公网远程拉取推送镜像

文章目录 1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)…