回顾
在前面的文章中,我们介绍了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)。这很方便,因为有时图形访问可能会有问题,可能导致崩溃。
第一次启动可能需要很长时间...也许需要一分钟或更长时间。耐心等待一会!