> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenEmbedded 层和构建系统的变更

要从 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 1.0 层**                                                                                  |                                             **Qualcomm Linux 2.0 层**                                             |
| :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------: |
| <ul><li>板级支持包 (BSP) 层：`meta-qcom`、`meta-qcom-hwe`、`meta-qcom-qim-product-sdk` 和 `meta-qcom-realtime`</li><li>参考发行版层：`meta-qcom-distro`</li><li>面向注册用户的可选 BSP 层：`meta-qcom-extras`</li></ul> | <ul><li>BSP 层：`meta-qcom`</li><li>参考发行版层：`meta-qcom-distro`</li><li>面向注册用户的可选 BSP 层：`meta-qcom-extras`</li></ul> |

下表列出了作为 Qualcomm Linux 2.0 一部分、由 Qualcomm 编写的 OpenEmbedded 层的变更：

**表：Qualcomm 编写的 OpenEmbedded 层的变更**

| Qualcomm Linux 1.0 中的 OpenEmbedded 层 | Qualcomm Linux 2.0 中对应的 OpenEmbedded 层 | Qualcomm Linux 2.0 中的变更摘要                                                         | 迁移说明                                                                                                                                                                                             |
| ------------------------------------ | -------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `meta-qcom`                          | `meta-qcom`                            | 对于 Qualcomm Linux 2.0，此层提供 Qualcomm 编写的所有 BSP 配方。                                 | 此层为 Qualcomm Linux 2.0 提供所有 BSP 配方。它与 Yocto Project Wrynose 和 Master 版本兼容。                                                                                                                       |
| `meta-qcom-hwe`                      | `meta-qcom`                            | Qualcomm Linux 2.0 不再支持 `meta-qcom-hwe` 层。该层中的 BSP 配方现已并入 `meta-qcom`。            | 如果您的集成层依赖此层，请移除该依赖，因为在 Qualcomm Linux 2.0 中 `meta-qcom` 提供了所有 OpenEmbedded 功能。要移除依赖，请从您的 OpenEmbedded 层的 `layer.conf` 中删除 `qcom-hwe`：`LAYERDEPENDS_<you-layer> "qcom-hwe"`                       |
| `meta-qcom-qim-product-sdk`          | `meta-qcom`                            | Qualcomm Linux 2.0 不再支持 `meta-qcom-qim-product-sdk` 层。此前位于该层中的配方已迁移到 `meta-qcom`。 | 如果您的集成层依赖此层，请移除该依赖，因为在 Qualcomm Linux 2.0 中 `meta-qcom` 提供了这些 OpenEmbedded 功能。要移除依赖，请从您的 OpenEmbedded 层的 `layer.conf` 中删除 `qti-qim-product-sdk`：`LAYERDEPENDS_<you-layer> "qti-qim-product-sdk"` |
| `meta-qcom-realtime`                 | `meta-qcom`                            | Qualcomm Linux 2.0 不再支持 `meta-qcom-realtime` 层。实时 Linux 配方现已并入 `meta-qcom`。       | 如果您的集成层依赖此层，请移除该依赖，因为在 Qualcomm Linux 2.0 中 `meta-qcom` 提供了所有 OpenEmbedded 功能。要移除依赖，请从您的 OpenEmbedded 层的 `layer.conf` 中删除 `qcom-realtime`：`LAYERDEPENDS_<you-layer> "qcom-realtime"`             |
| `meta-qcom-distro`                   | `meta-qcom-distro`                     | 此层为 Qualcomm Linux 提供参考发行版镜像。                                                     | 对于 Qualcomm Linux 2.0，支持的关键镜像配方为 `qcom-multimedia-image` 和 `qcom-multimedia-proprietary-image`。                                                                                                  |

## **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.conf` 和 `bblayers.conf`
* 通过执行标准 BitBake 流程，减少设置工作区所需的步骤。例如，`kas build <config.yml>` 会执行以下操作：
  * 克隆层仓库
  * 设置环境
  * 启动 BitBake `<image>`
* 提供 kas-container 包装器，可在 Docker 中运行构建过程

下表在机器选择、发行版选择和 BSP 风格（flavor）等参数上对 Repo 工具与 KAS 进行了比较：

**表：Repo 工具与 KAS 的比较**

| **参数** |                                         **Repo-manifest 工作流**                                         |                                                                     **KAS 工作流**                                                                     |
| :----: | :---------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------: |
|  机器选择  |                                          通过 `MACHINE` 环境变量控制。                                         |                                                               在 `machine.yml` 配置文件中定义。                                                              |
|  发行版选择 |                                          通过 `DISTRO` 环境变量控制。                                          |                                                               在 `distro.yml` 配置文件中定义。                                                               |
| BSP 风格 | 通过 `QCOM_SELECTED_BSP` 显式控制（`base` 或 `custom`）。<br />`base` 包含上游源代码。<br />`custom` 包含 Qualcomm 专有软件包。 | 没有与 `QCOM_SELECTED_BSP` 直接对应的项。BSP 风格通过选择相应的发行版配置文件隐式确定：<br />`qcom-distro-multimedia-image.yml` 包含上游源代码。<br />`qcom-distro.yml` 包含 Qualcomm 专有软件包。 |

下表从高层次比较了 Repo 工具与 KAS 的工作流：

**表：高层次工作流比较：Repo 工具与 KAS**

|           **步骤**          |                                         **Repo-manifest 工作流**                                        |                                   **KAS 工作流**                                  |
| :-----------------------: | :--------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------: |
|   <ol><li>同步层。</li></ol>  |                         使用 `repo init` + `repo sync`，基于 manifest 文件获取 meta 层                         |                       `kas checkout` 获取 KAS 配置文件中定义的所有层。                       |
| <ol><li>配置构建环境。</li></ol> | 运行 `setup-environment`，基于 `MACHINE`、`DISTRO` 和 `QCOM_SELECTED_BSP` 生成 `local.conf` 和 `bblayers.conf` | `kas build` 基于 `machine.yml` 和 `distro.yml` 生成 `local.conf` 和 `bblayers.conf`。 |
|  <ol><li>构建镜像。</li></ol>  |                                      运行 `bitbake <target>` 构建镜像                                      |               `kas build` 自动运行 `bitbake`，构建 `distro.yml` 中配置的目标。               |

### **KAS 配置文件示例**

以下示例演示了 `meta-qcom` 中的 KAS 配置文件示例，并解释了每个部分如何映射到 repo-manifest 工作流的概念以及 KAS 如何解读它们。有关配置文件格式的更多信息，请参阅 [KAS 文档](https://kas.readthedocs.io/en/latest/userguide/project-configuration.html)。

#### **base.yml**

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

```text theme={null}
header:
  version: 14

distro: poky-altcfg

defaults:
  repos:
    branch: master

repos:
  meta-qcom:

  oe-core:
    url: https://github.com/openembedded/openembedded-core
    layers:
      meta:

  bitbake:
    url: https://github.com/openembedded/bitbake
    layers:
      .: disabled

  meta-yocto:
    url: https://git.yoctoproject.org/meta-yocto
    layers:
      meta-poky:

local_conf_header:
  base: |
    CONF_VERSION = "2"
    INHERIT += "buildstats-summary"
    INHERIT += "buildhistory"
    INHERIT += "rm_work"
  diskmon: |
    BB_DISKMON_DIRS ??= "\
      STOPTASKS,${TMPDIR},1G,100K \
      STOPTASKS,${DL_DIR},1G,100K \
      STOPTASKS,${SSTATE_DIR},1G,100K \
      STOPTASKS,/tmp,100M,100K \
      HALT,${TMPDIR},100M,1K \
      HALT,${DL_DIR},100M,1K \
      HALT,${SSTATE_DIR},100M,1K \
      HALT,/tmp,10M,1K"
  clo-mirrors: |
    MIRRORS:append = " \
    git://github.com git://git.codelinaro.org/clo/yocto-mirrors/github/ \
    git://.*/.*/ git://git.codelinaro.org/clo/yocto-mirrors/ \
    https://.*/.*/ https://artifacts.codelinaro.org/codelinaro-le/ \
    "
  cmdline: |
    KERNEL_CMDLINE_EXTRA:append = " qcom_scm.download_mode=1"
  qcomflash: |
    IMAGE_CLASSES += "image_types_qcom"
    IMAGE_FSTYPES += "qcomflash"
  extra: |
    DISTRO_FEATURES:append = " efi pni-names"
    EXTRA_IMAGE_FEATURES = "allow-empty-password empty-root-password allow-root-login"
    IMAGE_ROOTFS_EXTRA_SPACE = "307200"
    WATCHDOG_RUNTIME_SEC:pn-systemd = "30"
  uninative: |
    INHERIT:remove = "uninative"

machine: unset

target:
  - core-image-base
```

#### **machine.yml**

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

```text theme={null}
header:
  version: 14
  includes:
  - ci/base.yml

machine: qcs8300-ride-sx
```

#### **distro.yml**

`distro.yml` 文件记录发行版特定的配置以及要构建的目标。

```text theme={null}
header:
  version: 14

distro: qcom-distro

repos:
  meta-qcom-distro:
    url: https://github.com/qualcomm-linux/meta-qcom-distro
    branch: main

  meta-openembedded:
    url: https://github.com/openembedded/meta-openembedded
    layers:
      meta-filesystems:
      meta-gnome:
      meta-multimedia:
      meta-networking:
      meta-oe:
      meta-python:
      meta-xfce:

  meta-virtualization:
    url: https://git.yoctoproject.org/git/meta-virtualization
    branch: master

  meta-audioreach:
    url: https://github.com/AudioReach/meta-audioreach
    branch: master

  meta-selinux:
    branch: master
    url: https://git.yoctoproject.org/meta-selinux

  meta-updater:
    branch: master
    url: https://github.com/uptane/meta-updater

local_conf_header:
  virtualization:
    SKIP_META_VIRT_SANITY_CHECK = "1"

target:
  - qcom-multimedia-image
```

下表列出了 KAS 文件结构：

**表：KAS 文件结构**

|        **部分**       |                                                   **描述**                                                  |
| :-----------------: | :-------------------------------------------------------------------------------------------------------: |
|       machine       |                           构建中使用的机器名称。等同于在 `local.conf` 中设置 `MACHINE=<machine>`。                           |
|        distro       |                             指示要构建的发行版。等同于在 `local.conf` 中设置 `DISTRO=<distro>`。                            |
|        repos        | 定义要获取的所有 Yocto/OE meta 层。每个仓库条目包括 URL、分支、提交（可选），以及该仓库中使用的层列表。它直接对应 repo-manifest 中的 meta 层 \<project> 元素。 |
| local\_conf\_header |         将片段附加到生成的 `local.conf` 中。等同于 repo-manifest 工作流中 `setup-environment` 注入到 `local.conf` 的内容。         |
|        target       |                           指定要构建的镜像。等同于在 repo-manifest 工作流中运行 `bitbake <target>`。                          |

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

使用 KAS 时，请克隆包含 KAS YAML 文件的仓库，然后使用以下方法之一进行构建：

* 运行 KAS 构建命令
* 启动 KAS shell，然后运行 BitBake

要使用 KAS 构建命令运行构建，请运行以下命令：

```text theme={null}
git clone https://github.com/qualcomm-linux/meta-qcom.git
kas build meta-qcom/ci/<machine-name>.yml:meta-qcom/ci/<distro-name>.yml
```

要启动 KAS shell 然后运行 BitBake，请运行以下命令：

```text theme={null}
git clone https://github.com/qualcomm-linux/meta-qcom.git
kas shell meta-qcom/ci/<machine-name>.yml:meta-qcom/ci/<distro-name>.yml
```

输出如下：

```text theme={null}
2026-02-13 10:36:33 - INFO     - kas 4.7 started
2026-02-13 10:36:33 - INFO     - Using /local/mnt/workspace/sbanerje/QSBT/meta-qcom as root for repository meta-qcom
2026-02-13 10:36:33 - INFO     - Repository oe-core already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository bitbake already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-yocto already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-qcom-distro already contains main as commit
2026-02-13 10:36:33 - INFO     - Repository meta-openembedded already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-virtualization already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-audioreach already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-selinux already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository meta-updater already contains master as commit
2026-02-13 10:36:33 - INFO     - Repository oe-core checked out to 983cb2171e53564bc9dd188136439f3e2ad9e188
2026-02-13 10:36:33 - INFO     - Repository bitbake checked out to c16e7ba2088dcd119e93bad6cf22d9026ec1736b
2026-02-13 10:36:33 - INFO     - Repository meta-yocto checked out to c23c19e0b300812bad314f1d0a901965315271ae
2026-02-13 10:36:33 - INFO     - Repository meta-qcom-distro checked out to c902dc1e60f2aea45cf69879830e9bb062613f07
2026-02-13 10:36:33 - INFO     - Repository meta-openembedded checked out to 3e3f0eac0f599e92442d8c6c0000eb961d8c4170
2026-02-13 10:36:33 - INFO     - Repository meta-virtualization checked out to 28d26fd95397bf575e65fcca0cbb302b1e9bc7ff
2026-02-13 10:36:33 - INFO     - Repository meta-audioreach checked out to 44c7cd7a46012d9b0d2595b7110f4a10dee41da0
2026-02-13 10:36:33 - INFO     - Repository meta-selinux checked out to 54d455a48ef4a86615ccbfde68ad742b05433d3d
2026-02-13 10:36:33 - INFO     - Repository meta-updater checked out to 835ad81bdb30326c542b5740cacad0e68ad8a8e2
2026-02-13 10:36:33 - INFO     - To start the default build, run: bitbake -c build qcom-multimedia-image qcom-multimedia-proprietary-image qcom-container-orchestration-image
```

要开始构建 `qcom-multimedia-image`，请在上述输出之后出现的 KAS shell 中运行以下命令：

```text theme={null}
bitbake qcom-multimedia-image
```

有关更多信息，请参阅 [KAS 文档](https://kas.readthedocs.io/en/1.0/)。

要将您的 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](https://github.com/qualcomm-linux/meta-vendor-example)

**注意**

要设置 Yocto Project 构建环境，请参阅 [Yocto Project 参考手册](https://docs.yoctoproject.org/ref-manual/index.html)。

要运行基于 KAS 的构建，请执行以下操作：

1. 要安装 KAS 工具，请运行以下命令：
   ```text theme={null}
   sudo pip3 install kas
   ```
2. 要克隆 `meta-vendor-example` 层，请运行以下命令：
   ```text theme={null}
   git clone https://github.com/qualcomm-linux/meta-vendor-example.git
   ```
3. 要针对受支持的开发板之一使用 KAS 配置进行构建，请运行以下命令：
   ```text theme={null}
   kas build meta-vendor-example/ci/qcs9100-ride-sx.yml:meta-vendor-example/ci/qcom-distro.yml
   ```

### **Qualcomm Linux 2.0 repo-manifest 工作流**

Qualcomm Linux 2.0 提供了基于 repo-manifest 的工作流。Qualcomm Linux 2.0 的高层次变更如下：

* 使用 repo 从 manifest 同步 meta 层。
  ```text theme={null}
  repo init -u https://github.com/qualcomm-linux/qcom-manifest -m <manifest-release-tag>.xml
  repo sync
  ```
* 使用 setup environment 生成 BitBake 配置。在 Qualcomm Linux 2.0 中，BitBake 配置基于 `machine.yml` 和 `distro.yml` 配置文件生成。因此，setup environment 将这些配置文件作为输入。
  ```text theme={null}
  source setup-environment --machine meta-qcom/ci/qcs9100-ride-sx.yml --distro meta-qcom/ci/qcom-distro.yml
  ```
* 手动调用 BitBake 构建镜像。
  ```text theme={null}
  bitbake <image-recipe>
  ```

### **构建步骤比较**

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

**表：构建步骤比较**

|      **步骤**     |                                             **Qualcomm Linux 1.0**                                            |                                              **Qualcomm Linux 2.0**                                             |
| :-------------: | :-----------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: |
|     同步（无变更）     | 使用 `repo init -u https://github.com/qualcomm-linux/qcom-manifest -m <manifest-release-tag>.xml && repo sync`。 |  使用 `repo init -u https://github.com/qualcomm-linux/qcom-manifest -m <manifest-release-tag>.xml && repo sync`。  |
|        配置       |                   使用 `MACHINE=qcs9100-ride-sx DISTRO=qcom-distro source setup-environment`。                   | 使用 `source setup-environment --machine meta-qcom/ci/qcs9100-ride-sx.yml --distro meta-qcom/ci/qcom-distro.yml`。 |
| BitBake 构建（无变更） |                                             使用 BitBake \<recipe>。                                             |                                              使用 BitBake \<recipe>。                                              |

## **覆盖（override）的变更**

Qualcomm Linux 1.0 支持 `qcom-base-bsp` 和 `qcom-custom-bsp` 覆盖。它使用这些覆盖来实现以下功能：

* 为 `qcom-base-bsp` 和 `qcom-custom-bsp` 使用不同的内核树
* 在 `rootfs` 镜像中包含不同的配方软件包集合
* 在 `DTB.bin` 中包含不同的设备树二进制文件集合

Qualcomm Linux 2.0 不支持这些覆盖。下表列出了 Qualcomm Linux 2.0 中支持的配方：

|               `qcom-multimedia-image`              |                    `qcom-multimedia-proprietary-image`                   |
| :------------------------------------------------: | :----------------------------------------------------------------------: |
| `qcom-multimedia-image` 配方将上游软件包添加到生成的 `rootfs` 中。 | `qcom-multimedia-proprietary-image` 配方将 Qualcomm 增值软件包添加到生成的 `rootfs` 中。 |

对于 Qualcomm Linux 2.0，不再使用覆盖的原因如下：

* 构建 `qcom-multimedia-image` 和 `qcom-multimedia-proprietary-image` 时使用相同的内核树和内核二进制文件。
* 构建 `qcom-multimedia-image` 和 `qcom-multimedia-proprietary-image` 时，相同的设备树二进制文件和设备树二进制覆盖会打包到生成的扁平化镜像树 (FIT) 镜像中。
  **注意**\
  如果您正在使用 `qcom-base-bsp` 和 `qcom-custom-bsp` 覆盖，请在 Qualcomm Linux 2.0 中停止使用它们。
  要迁移 Qualcomm Linux 1.0 中使用覆盖的更改，请参考以下示例修改实现方式：
  表：覆盖迁移示例
  | 方面              | Qualcomm Linux 1.0 中的覆盖 | Qualcomm Linux 2.0 迁移示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
  | :-------------- | :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | MACHINEOVERRIDE | qcom-base-bsp           | 对于 Qualcomm Linux 1.0 meta-qcom-hwe 中使用 qcom-base-bsp 的任何条件包含，在 Qualcomm Linux 2.0 中已移至 qcom-multimedia-image。例如，在 Qualcomm Linux 1.0 中，meta-qcom-hwe/recipes-products/packagegroups/[packagegroup-qcom-camera.bb](http://packagegroup-qcom-camera.bb) 中的覆盖使用如下：<br /><br />RDEPENDS:\${PN}:qcom-base-bsp:qcm6490= "libcamera v4l-utils media-ctl yavta"<br /><br />在 Qualcomm Linux 2.0 中，它已移至 recipes-products/packagegroups/[packagegroup-qcom-test-pkgs.bb](http://packagegroup-qcom-test-pkgs.bb)，该文件包含在 recipes-products/images/[qcom-multimedia-image.bb](http://qcom-multimedia-image.bb) 中。也就是说，包含上游组件的镜像。                                                                                                                                                                                                                                                                                                                                                                                  |
  | MACHINEOVERRIDE | qcom-custom-bsp         | 对于 Qualcomm Linux 1.0 meta-qcom-hwe 中使用 qcom-custom-bsp 的任何条件包含，在 Qualcomm Linux 2.0 中已移至 qcom-multimedia-proprietary-image。例如，在 Qualcomm Linux 1.0 中，meta-qcom-hwe/recipes-products/packagegroups/[packagegroup-qcom-camera.bb](http://packagegroup-qcom-camera.bb) 中的覆盖使用如下：<br /><br />RDEPENDS:\${PN}:qcom-custom-bsp:qcs9100 = "camxcommon camxlib camx chicdk cameradlkm"<br /><br />在 Qualcomm Linux 2.0 中，它已移至 recipes-products/images/[qcom-multimedia-proprietary-image.bb](http://qcom-multimedia-proprietary-image.bb)。也就是说，包含 Qualcomm 软件组件的镜像。                                                                                                                                                                                                                                                                                                                                                                                                                                         |
  | DISTROOVERRIDE  | qcom-custom-distro      | 对于 Qualcomm Linux 1.0 meta-qcom-distro 中使用 qcom-custom-distro 的任何条件包含，在 Qualcomm Linux 2.0 中已移至 qcom-multimedia-proprietary-image。例如，在 Qualcomm Linux 1.0 中，meta-qcom-distro/recipes-products/packagegroups/[packagegroup-qcom-multimedia.bb](http://packagegroup-qcom-multimedia.bb) 中的覆盖使用如下：<br /><br /> RDEPENDS:\${PN}:append:qcom-custom-distro = "\\<br />   packagegroup-qcom-fastcv \\<br />   packagegroup-qcom-graphics \\<br />   packagegroup-qcom-iot-base-utils \\<br />   packagegroup-qcom-video \\<br />"<br /><br />在 Qualcomm Linux 2.0 中，它已移至 recipes-products/images/[qcom-multimedia-proprietary-image.bb](http://qcom-multimedia-proprietary-image.bb)：<br /><br />CORE\_IMAGE\_BASE\_INSTALL += " \\<br />     camx-dlkm \\<br />     camx-kodiak \\<br />     camx-lemans \\<br />     camx-nhx \\<br />     camx-talos \\<br />     iris-video-dlkm \\<br />     kgsl-dlkm \\<br />     libdiag-bin \\<br />     qcom-adreno \\<br />     qcom-sensors-binaries \\<br />" |

## **机器配置的变更**

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

**表：机器配置更新**

|  **Qualcomm Linux 1.0 中的机器名称**  | **Qualcomm Linux 2.0 中的机器名称** |
| :-----------------------------: | :---------------------------: |
|    `qcs8275-iq-8275-evk.conf`   |       `iq-8275-evk.conf`      |
|    `qcs9075-iq-9075-evk.conf`   |       `iq-9075-evk.conf`      |
| `qcs6490-rb3gen2-core-kit.conf` |    `rb3gen2-core-kit.conf`    |

## **BitBake 变量的变更**

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

|                                                                   | **表：Qualcomm Linux 1.0 和 Qualcomm Linux 2.0 中的 BitBake 变量**                                                                                                                                                                 |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Qualcomm Linux 1.0 BitBake 变量**                                 | **Qualcomm Linux 2.0 BitBake 变量**                                                                                                                                                                                           |
| 使用带有 `qcom-base-bsp` 和 `qcom-custom-bsp` 覆盖的 `KERNEL_DEVICETREE`。 | 对上游设备树 (DT) 使用 `KERNEL_DEVICETREE`，对未上游、仅存在于 `linux-qcom` 内核中的 DT 使用 `LINUX_QCOM_KERNEL_DEVICETREE`。                                                                                                                        |
| 使用 `KERNEL_TECH_DTBOS` 在构建时将设备树覆盖二进制 (DTBO) 叠加到内核设备树上。            | 由于 Qualcomm Linux 2.0 支持多 DTB FIT 镜像，不再需要构建时覆盖支持。有关更多信息，请参阅 [Qualcomm Linux Yocto 指南](https://dragonwingdocs.qualcomm.com/Key-Documents/Yocto-Guide/configure-and-secure-boot-with-systemd-boot-and-uki#multi-dtb-support)。 |
| 在机器文件中添加的 `inc` 文件中使用 `DBG_CMDLINE` 和 `KERNEL_CMDLINE_EXTRA`。     | 使用机器特定的内核命令行。                                                                                                                                                                                                               |
| 使用 `MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS` 添加模块。                    | 使用 `packagegroup-qcom-boot-essential` 添加模块。                                                                                                                                                                                 |

## **Linux 配方的变更**

Qualcomm Linux 2.0 支持单一内核配方及其对应的实时变体。下表列出了 Qualcomm Linux 1.0 与 Qualcomm Linux 2.0 之间 Linux 内核配方的变更：

**表：Linux 内核配方变更**

|                   **Qualcomm Linux 1.0 中的 Linux 配方**                  |           **Qualcomm Linux 2.0 中的 Linux 配方**           |
| :-------------------------------------------------------------------: | :----------------------------------------------------: |
|      `meta-qcom-hwe/recipes-kernel/linux/linux-qcom-base_6.6.bb`      |   `meta-qcom/recipes-kernel/linux/linux-qcom_6.18.bb`  |
|     `meta-qcom-hwe/recipes-kernel/linux/linux-qcom-custom_6.6.bb`     |   `meta-qcom/recipes-kernel/linux/linux-qcom_6.18.bb`  |
|  `meta-qcom-realtime/recipes-kernel/linux/linux-qcom-base-rt_6.6.bb`  | `meta-qcom/recipes-kernel/linux/linux-qcom-rt_6.18.bb` |
| `meta-qcom-realtime/recipes-kernel/linux/linux-qcom-custom-rt_6.6.bb` | `meta-qcom/recipes-kernel/linux/linux-qcom-rt_6.18.bb` |
|                                                                       |                                                        |

**注意**

对于 Qualcomm Linux 2.0，只从 [qcom-next](https://github.com/qualcomm-linux/kernel/tree/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 版本 | 镜像配方                                                            | 代码片段                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 1                 | 使用 bitbake OVERRIDES qcom-custom-distro 的 qcom-multimedia-image | 以下示例展示了在 packagegroup-qcom-multimedia 中使用覆盖的情况，该软件包组包含在 qcom-multimedia-image 中：<br /><br />RDEPENDS:\${PN} = "\\<br />    gstreamer1.0 \\<br />    gstreamer1.0-plugins-base \\<br />    gstreamer1.0-plugins-good \\<br />    gstreamer1.0-plugins-bad \\<br />    gstreamer1.0-rtsp-server \\<br />    tensorflow-lite \\<br /><br />RDEPENDS:\${PN}:append:qcom-custom-distro = "\\<br />    packagegroup-qcom-fastcv \\<br />    packagegroup-qcom-graphics \\<br />    packagegroup-qcom-iot-base-utils \\<br />    packagegroup-qcom-video \\<br />    "<br /><br />这里使用 qcom-custom-distro 覆盖来有条件地包含软件包组。当您在 Qualcomm Linux 1.0 工作区中运行 BitBake \<image> 时，根据构建环境设置为 custom 还是 base 覆盖，qcom-multimedia-image 生成的 rootfs 内容会有所不同。 |
| 2                 | qcom-multimedia-image 和 qcom-multimedia-proprietary-image       | 如果查看 qcom-multimedia-proprietary-image 镜像，它 require（引用）了 qcom-multimedia-image，并在其之上添加 Qualcomm 维护的技术栈。<br /><br />require [qcom-multimedia-image.bb](http://qcom-multimedia-image.bb)<br /><br /><br />CORE\_IMAGE\_BASE\_INSTALL += " \\<br />    camx-dlkm \\<br />    camx-kodiak \\<br />    camx-lemans \\<br />    camx-nhx \\<br />    camx-talos \\<br />    iris-video-dlkm \\<br />    kgsl-dlkm \\<br />    libdiag-bin \\<br />    qcom-adreno \\<br />    qcom-sensors-binaries \\<br /> "<br /><br /><br />这种镜像配方的分离组织方式展示了 Qualcomm 维护的组件如何被添加到 qcom-multimedia-proprietary-image 镜像中。                                                                                                                                  |

## **参考发行版配置的变更**

Qualcomm Linux 2.0 对参考发行版配置进行了变更。在 Qualcomm Linux 1.0 中，`qcom-wayland` 的参考发行版位于 [distro](https://github.com/qualcomm-linux/meta-qcom-distro/tree/scarthgap/conf/distro) 文件夹中。

下表列出了 Qualcomm Linux 2.0 中的参考发行版：

**表：Qualcomm Linux 2.0 参考发行版**

| **Qualcomm Linux 2.0 参考发行版** |                                                         **描述**                                                        |
| :--------------------------: | :-------------------------------------------------------------------------------------------------------------------: |
|      `qcom-distro-sota`      |            启用用于 OS 更新的 OSTree 框架。如果您在 Qualcomm Linux 1.0 中使用 `qcom-wayland`，请在 Qualcomm Linux 2.0 中使用此发行版。            |
|    `qcom-distro-catchall`    | 启用用于 OS 更新的 OSTree 框架和 SELinux。如果您在 Qualcomm Linux 1.0 中使用启用了 SELinux 的 `qcom-wayland`，请在 Qualcomm Linux 2.0 中使用此发行版。 |
|     `qcom-distro-selinux`    |                                             启用用于安全的 SELinux 框架；不启用 OSTree。                                            |
|         `qcom-distro`        |                                     在设备上启用软件包管理；默认的打包方式为 RPM 软件包管理器 (RPM)，前端为 DNF。                                    |
