10 手动设置 Poky 参考发行版

设置 Poky 参考发行版的默认方法是使用 bitbake-setup,但也可以 手动设置环境。本文逐步介绍手动设置过程。

备注

本文生成的环境类似于 Yocto Project 快速构建 中通过 bitbake-setup 设置 Poky 的结果。

10 获取源码仓库

构建 Poky 参考发行版所需的源码仓库,可以通过以下两种方式获取: 使用 Git 克隆仓库, 或 下载已发布的归档包。

10 使用 Git 克隆层

访问 发行版本 页面,选择最新稳定版 或长期支持版,例如 yocto-6.1_M3。

完成机器设置(见 Yocto Project 参考手册的 系统要求) 后,创建作为项目基础目录的 Source Directory。本文使用 bitbake-builds 作为该目录名称,创建方法如下:

$ mkdir bitbake-builds
$ cd bitbake-builds

需要获取构建主机上设置 Poky 参考发行版所需的各个 层。 使用以下命令:

$ mkdir layers/
$ git clone -b yocto-6.1_M3 https://git.openembedded.org/bitbake ./layers/bitbake
$ git clone -b yocto-6.1_M3 https://git.openembedded.org/openembedded-core ./layers/openembedded-core
$ git clone -b yocto-6.1_M3 https://git.yoctoproject.org/meta-yocto ./layers/meta-yocto

10 使用源码归档包

Yocto Project 还提供发行版本的源码归档包,可从 https://downloads.yoctoproject.org/releases/yocto/ 获取。选择所需发行版本所在的子目录,例如 yocto-6.1_M3。

其中包含 OpenEmbedded-Core (OE-Core)、BitBake 和 meta-yocto 的源码归档包。

备注

推荐通过 Git 克隆上游仓库 获取 Yocto Project 组件,并在本地克隆的仓库中工作。

10 构建镜像

按以下步骤构建镜像。构建过程会从源码创建完整 Linux 发行版,包括工具链。

备注

  • 如果位于防火墙后方,且构建主机未设置代理,获取源码时可能遇到构建问题, 例如获取器失败或 Git 失败。

  • 如果不知道代理设置,请向本地网络基础设施管理方咨询,也可以先检查 Web 浏览器设置。更多信息见 Yocto Project Wiki 的 “在网络代理后工作” 页面。

  1. 初始化构建环境: 在当前工作目录中运行以下命令设置构建环境:

    $ source ./layers/openembedded-core/oe-init-build-env
    

    脚本会创建 Build Directory 等内容,本例为 Source Directory 下的 build。脚本运行后,当前工作目录切换为 Build Directory。 构建完成后,此目录将包含构建过程中创建的全部文件。

  2. 检查本地配置文件: 设置构建环境后,Build Directory 的 conf 子目录中会出现本地配置文件 build/conf/local.conf。本例默认面向适合模拟运行的 qemux86-64 目标构建,使用 RPM 软件包管理器。

    小技巧

    使用 共享状态缓存 镜像站并启用 哈希等价,可显著加快构建, 并减少获取器失败的影响。这样可使用预构建产物,无需重新构建。只有 网络和服务器下载产物的速度快于本地构建时,这种方式才有意义。

    要使用这些镜像站,运行以下命令:

    $ bitbake-config-build enable-fragment core/yocto/sstate-mirror-cdn
    

    哈希等价服务器需要 9.1 或更高版本的 Python websockets 模块。 Debian GNU/Linux 12(Bookworm)及更高版本、Fedora、CentOS Stream 9 及更高版本、Ubuntu 22.04(LTS)及更高版本都提供足够新的软件包。 其他受支持发行版需要从软件包源之外获取模块,例如通过 pip。 也可以按 Yocto Project 参考手册的 所需的 Git、tar、Python、make 和 gcc 版本 一节安装 Buildtools 归档包。

  3. 开始构建: 运行以下命令为目标构建操作系统镜像,本例为 core-image-sato:

    $ bitbake core-image-sato
    

    bitbake 命令的用法见 Yocto Project 概述与概念手册的 BitBake 一节,或 BitBake 用户手册的 The BitBake Command。

  4. 使用 QEMU 模拟镜像: 此镜像构建完成后,可以启动 Yocto Project 附带的快速模拟器 QEMU(Quick EMUlator):

    $ runqemu qemux86-64
    

    QEMU 的更多运行信息见 Yocto Project 开发任务手册的 使用快速模拟器(QEMU) 一章。

  5. 退出 QEMU: 点击关机图标,或在启动 QEMU 的终端窗口中输入 Ctrl-C。