> ## 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.

# Yocto concepts for Qualcomm Linux

This section establishes the mental models needed before working with Qualcomm Linux Yocto builds. Understanding these concepts reduces confusion when navigating layers, machines, distros, and images.

## **Yocto architecture overview**

The Yocto Project provides tools, software, configurations, and best practices to create customized Linux images for embedded and IoT devices, or anywhere a customized Linux OS is needed.

The core components of the Yocto Project are:

* **Poky** — the reference distribution and build system, combining OpenEmbedded-Core, BitBake, and configuration files.
* **OE-Core** (`openembedded-core`) — the minimal set of recipes and classes that form the foundation of any Yocto-based build.
* **BitBake** — the task execution engine that reads recipes and builds software packages and images.

For an introduction to Yocto, see the following pages created by the Yocto Project<sup>®</sup>:

* [The Yocto Project](https://www.yoctoproject.org/)
* [The Yocto Project documentation](https://docs.yoctoproject.org/dev/)
* [Yocto upstream reference](https://git.yoctoproject.org/yocto-docs) (wrynose branch)

## **Qualcomm Linux Yocto stack**

The Qualcomm Linux environment consists of several community-maintained metadata layers stacked on top of each other. Qualcomm-maintained layers sit on top of community layers to provide additional software components required for Qualcomm development kits.

| **Layer type**       | **Examples**                                                                                    |
| -------------------- | ----------------------------------------------------------------------------------------------- |
| Qualcomm-maintained  | `meta-qcom`, `meta-qcom-distro`, `meta-qcom-extras`                                             |
| Community (upstream) | `openembedded-core`, `meta-openembedded`, `meta-virtualization`, `meta-selinux`, `meta-updater` |

For a full description of each layer, see [Qualcomm Linux Metadata Layers](./qualcomm-linux-metadata-layers).

## **Key concepts**

### **Layers**

A layer is a collection of recipes, configuration files, and classes that extend or override the build system. Layers are stacked, with higher layers taking precedence. Qualcomm uses the `kas` tool to manage which layers are included in a build.

### **Recipes**

A recipe (`.bb` file) describes how to fetch, configure, compile, and install a single software component. BitBake processes recipes to produce packages and images.

### **Machines**

A machine configuration (`.conf` file) describes the target hardware: the SoC family, kernel, bootloader, and device tree. Selecting a machine tells BitBake which hardware-specific settings to apply.

### **Distributions (DISTRO)**

A distribution configuration defines the software policy for the image: which init system to use, which features to enable (e.g., SELinux, KVM, SOTA), and which package manager to use. Qualcomm provides several reference distributions in `meta-qcom-distro`.

### **Images**

An image recipe (`.bb` file) defines the complete set of packages installed in the root filesystem. Qualcomm provides reference images ranging from minimal console images to full multimedia and proprietary images.

### **BSP vs distro vs product layers**

| **Layer role**        | **Purpose**                                                    | **Qualcomm example** |
| --------------------- | -------------------------------------------------------------- | -------------------- |
| BSP layer             | Hardware enablement: machine configs, firmware, kernel recipes | `meta-qcom`          |
| Distro layer          | Software policy: distributions, image recipes, package groups  | `meta-qcom-distro`   |
| Optional/extras layer | Source-compiled components for registered users                | `meta-qcom-extras`   |

## **Guide sections**

| **Section**                                                                                    | **Description**                                                |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| [Qualcomm Linux Metadata Layers](./qualcomm-linux-metadata-layers)                             | One authoritative place for layer understanding                |
| [meta-qcom](./meta-qcom)                                                                       | Machine configurations, firmware, and kernel recipes           |
| [meta-qcom-distro](./meta-qcom-distro)                                                         | Distribution configurations, image recipes, and package groups |
| [meta-qcom-extras](./meta-qcom-extras)                                                         | Optional layer for registered users                            |
| [Build Qualcomm Linux Using Yocto](./build-qualcomm-linux)                                     | Yocto-specific build flow                                      |
| [Configure Qualcomm Linux software components](./configure-qualcomm-linux-software-components) | Key software components and features                           |
| [Customize Qualcomm Linux](./customize-qualcomm-linux)                                         | Common real-world extension patterns                           |
| [Debug](./debug)                                                                               | Resolve build-time problems and issues                         |
