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

# OpenEmbedded 层和构建系统中的变更

考虑 OpenEmbedded 层、构建系统、BitBake 变量、配方和发行版中的变更,以便从 Qualcomm Linux 1.0 迁移到 Qualcomm Linux 2.0。

## **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` 的一部分。      | 如果您的集成层依赖此层,请移除该依赖,因为 `meta-qcom` 提供了 Qualcomm Linux 2.0 中的所有 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`。  | 如果您的集成层依赖此层,请移除该依赖,因为 `meta-qcom` 提供了 Qualcomm Linux 2.0 中的 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` 的一部分。 | 如果您的集成层依赖此层,请移除该依赖,因为 `meta-qcom` 提供了 Qualcomm Linux 2.0 中的所有 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 风味等参数上比较了 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 工具 vs. KAS**

|           **步骤**          |                                         **Repo-manifest 工作流**                                        |                                   **KAS 工作流**                                  |
| :-----------------------: | :--------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------: |
|   <ol><li>同步层。</li></ol>  |                             使用 `repo init` + `repo sync`,基于清单文件获取 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 从清单同步 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>。                                              |

## **Overrides 中的变更**

Qualcomm Linux 1.0 支持 `qcom-base-bsp` 和 `qcom-custom-bsp` overrides。它使用这些 overrides 执行以下操作:

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

Qualcomm Linux 2.0 不支持这些 overrides。下表列出了 Qualcomm Linux 2.0 支持的配方:

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

对于 Qualcomm Linux 2.0,出于以下原因不使用 overrides:

* 构建 `qcom-multimedia-image` 和 `qcom-multimedia-proprietary-image` 时使用相同的内核树和内核二进制文件。
* 构建 `qcom-multimedia-image` 和 `qcom-multimedia-proprietary-image` 时,相同的设备树二进制文件和设备树二进制覆盖被打包到生成的扁平化镜像树(FIT)镜像中。
  **注意**\
  如果您正在使用 `qcom-base-bsp` 和 `qcom-custom-bsp` overrides,请在 Qualcomm Linux 2.0 中停止使用它们。
  要迁移在 Qualcomm Linux 1.0 中使用 overrides 的变更,请根据以下示例修改使用 overrides 的实现:
  表:Overrides 迁移示例
  | 方面              | Qualcomm Linux 1.0 中的 Override | 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) 中的 override 使用方式如下:<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) 中的 override 使用方式如下:<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) 中的 override 使用方式如下:<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` overrides 的 `KERNEL_DEVICETREE`。 | 对上游设备树(DT)使用 `KERNEL_DEVICETREE`,对未上游化、仅存在于 `linux-qcom` 内核中的 DT 使用 `LINUX_QCOM_KERNEL_DEVICETREE`。                                                                                                                         |
| 使用 `KERNEL_TECH_DTBOS` 在构建时将设备树覆盖 blob(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 overrides。

下表列出了在 `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 中使用 override 的情况,该 packagegroup 包含在 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 override 用于有条件地包含 packagegroup。当您在 Qualcomm Linux 1.0 工作区中运行 BitBake \<image> 时,根据构建环境是使用 custom 还是 base override 设置,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`        |                                在设备上启用软件包管理;默认的打包方式为带有 DNF 前端的 RPM Package Manager(RPM)。                               |
