Skip to main content
要从 Qualcomm Linux 1.0 迁移到 Qualcomm Linux 2.0,需要考虑 OpenEmbedded 层、构建系统、BitBake 变量、配方(recipe)和发行版方面的变更。

OpenEmbedded 层的变更

Qualcomm Linux 使用 OpenEmbedded 层来交付技术组件和参考发行版。 下表列出了 Qualcomm Linux 1.0 与 Qualcomm Linux 2.0 之间 OpenEmbedded 层的变更: 表:OpenEmbedded 层的变更 下表列出了作为 Qualcomm Linux 2.0 一部分、由 Qualcomm 编写的 OpenEmbedded 层的变更: 表:Qualcomm 编写的 OpenEmbedded 层的变更

Qualcomm Linux 2.0 构建系统的变更

请考虑传统的 Qualcomm Linux 1.0 repo-manifest Yocto 构建工作流与 Qualcomm Linux 2.0 基于配置自动化系统 (KAS) 的工作流之间的以下关键差异。

KAS 概述

Qualcomm Linux 支持基于 KAS 的构建执行。KAS 是一款面向基于 BitBake 项目的开源工具。它使用 YAML 配置文件简化了配置和启动 OpenEmbedded 构建的过程。KAS 可自动完成以下操作,使其既适合开发者也适合持续集成/持续部署 (CI/CD) 场景:
  • 克隆并检出所需的层 Git 仓库> - 基于 YAML 输入生成所需的 BitBake 配置文件,例如 local.confbblayers.conf
  • 通过执行标准 BitBake 流程,减少设置工作区所需的步骤。例如,kas build <config.yml> 会执行以下操作:
    • 克隆层仓库
    • 设置环境
    • 启动 BitBake <image>
  • 提供 kas-container 包装器,可在 Docker 中运行构建过程
下表在机器选择、发行版选择和 BSP 风格(flavor)等参数上对 Repo 工具与 KAS 进行了比较: 表:Repo 工具与 KAS 的比较 下表从高层次比较了 Repo 工具与 KAS 的工作流: 表:高层次工作流比较:Repo 工具与 KAS

KAS 配置文件示例

以下示例演示了 meta-qcom 中的 KAS 配置文件示例,并解释了每个部分如何映射到 repo-manifest 工作流的概念以及 KAS 如何解读它们。有关配置文件格式的更多信息,请参阅 KAS 文档

base.yml

base.yml 文件记录所有构建组合使用的基础配置。

machine.yml

machine.yml 文件记录机器特定的配置。此文件通常扩展 base.yml 配置。

distro.yml

distro.yml 文件记录发行版特定的配置以及要构建的目标。
下表列出了 KAS 文件结构: 表:KAS 文件结构

使用基于 KAS 的构建系统运行构建

使用 KAS 时,请克隆包含 KAS YAML 文件的仓库,然后使用以下方法之一进行构建:
  • 运行 KAS 构建命令
  • 启动 KAS shell,然后运行 BitBake
要使用 KAS 构建命令运行构建,请运行以下命令:
要启动 KAS shell 然后运行 BitBake,请运行以下命令:
输出如下:
要开始构建 qcom-multimedia-image,请在上述输出之后出现的 KAS shell 中运行以下命令:
有关更多信息,请参阅 KAS 文档 要将您的 OpenEmbedded 层迁移到 Qualcomm Linux 2.0 支持的基于 KAS 的构建,请参考以下机器文件为机器创建 KAS CI 文件:
  • meta-qcom/ci/rb3gen2-core-kit.yml
  • meta-qcom/ci/qcm6490.yml
  • meta-qcom/ci/base.yml
同样,参考以下文件为发行版创建 KAS CI 文件:
  • meta-qcom/ci/qcom-distro.yml
  • meta-qcom/blob/master/ci/qcom-distro-multimedia-image.yml

使用示例仓库通过 KAS 设置 CI

要通过 KAS 设置 CI,请使用以下示例仓库: https://github.com/qualcomm-linux/meta-vendor-example 注意 要设置 Yocto Project 构建环境,请参阅 Yocto Project 参考手册 要运行基于 KAS 的构建,请执行以下操作:
  1. 要安装 KAS 工具,请运行以下命令:
  2. 要克隆 meta-vendor-example 层,请运行以下命令:
  3. 要针对受支持的开发板之一使用 KAS 配置进行构建,请运行以下命令:

Qualcomm Linux 2.0 repo-manifest 工作流

Qualcomm Linux 2.0 提供了基于 repo-manifest 的工作流。Qualcomm Linux 2.0 的高层次变更如下:
  • 使用 repo 从 manifest 同步 meta 层。
  • 使用 setup environment 生成 BitBake 配置。在 Qualcomm Linux 2.0 中,BitBake 配置基于 machine.ymldistro.yml 配置文件生成。因此,setup environment 将这些配置文件作为输入。
  • 手动调用 BitBake 构建镜像。

构建步骤比较

下表列出了 Qualcomm Linux 1.0 与 Qualcomm Linux 2.0 之间构建步骤的关键差异: 表:构建步骤比较

覆盖(override)的变更

Qualcomm Linux 1.0 支持 qcom-base-bspqcom-custom-bsp 覆盖。它使用这些覆盖来实现以下功能:
  • qcom-base-bspqcom-custom-bsp 使用不同的内核树
  • rootfs 镜像中包含不同的配方软件包集合
  • DTB.bin 中包含不同的设备树二进制文件集合
Qualcomm Linux 2.0 不支持这些覆盖。下表列出了 Qualcomm Linux 2.0 中支持的配方: 对于 Qualcomm Linux 2.0,不再使用覆盖的原因如下:
  • 构建 qcom-multimedia-imageqcom-multimedia-proprietary-image 时使用相同的内核树和内核二进制文件。
  • 构建 qcom-multimedia-imageqcom-multimedia-proprietary-image 时,相同的设备树二进制文件和设备树二进制覆盖会打包到生成的扁平化镜像树 (FIT) 镜像中。 注意
    如果您正在使用 qcom-base-bspqcom-custom-bsp 覆盖,请在 Qualcomm Linux 2.0 中停止使用它们。 要迁移 Qualcomm Linux 1.0 中使用覆盖的更改,请参考以下示例修改实现方式: 表:覆盖迁移示例

机器配置的变更

下表列出了 Qualcomm Linux 1.0 与 Qualcomm Linux 2.0 之间机器配置名称的变更: 表:机器配置更新

BitBake 变量的变更

下表列出了 Qualcomm Linux 1.0 和 Qualcomm Linux 2.0 机器配置中使用的 BitBake 变量:

Linux 配方的变更

Qualcomm Linux 2.0 支持单一内核配方及其对应的实时变体。下表列出了 Qualcomm Linux 1.0 与 Qualcomm Linux 2.0 之间 Linux 内核配方的变更: 表:Linux 内核配方变更 注意 对于 Qualcomm Linux 2.0,只从 qcom-next 获取单一内核树。该内核树用于构建两种镜像:
  • qcom-multimedia-image 提供包含上游软件栈的 rootfs
  • qcom-multimedia-proprietary-image 提供包含 Qualcomm 维护组件的 rootfs

镜像配方的变更

meta-qcom-distro 层支持 Qualcomm Linux 中使用的所有镜像配方。Qualcomm Linux 2.0 对镜像配方的管理和组织方式进行了变更,并且不再在镜像配方中使用 BitBake 覆盖。 下表列出了在 meta-qcom-distro open-embedded 层中定义的镜像配方。这些镜像配方的命名约定及其从 Qualcomm Linux 1.0 的演变已发生变化。例如:
  • 镜像配方不再使用 DISTROOVERRIDES 来区分镜像中包含的软件包。
  • qcom-multimedia-proprietary-image 添加 Qualcomm 软件组件。
表:镜像配方的变更

参考发行版配置的变更

Qualcomm Linux 2.0 对参考发行版配置进行了变更。在 Qualcomm Linux 1.0 中,qcom-wayland 的参考发行版位于 distro 文件夹中。 下表列出了 Qualcomm Linux 2.0 中的参考发行版: 表:Qualcomm Linux 2.0 参考发行版