# Build from source

Create a build using the prebuilt proprietary binaries/images available on GitHub.

## Host computer requirements

- Configuration

    - x86 machine
    - Quad-core CPU, for example, Intel i7-2600 at 3.4 GHz (equivalent or better)
    - 300 GB free disk space (swap partition &gt; 32 GB)
    - 16 GB RAM
    - Ubuntu 22.04
- Tools

    - Git 1.8.3.1 or later versions
    - Tar 1.28 or later versions
    - Python 3.10.2 or later versions
    - GCC 10.1 or later versions
    - GNU Make 4.0 or later versions
    - Kas 4.8 or later versions
- Permissions

    - A `sudo` permission is required to run a few commands

Note

Code compilation on a VM is a slow process and can take a few hours. Qualcomm recommends using an Ubuntu host computer for compilation. To set up a virtual machine (VM) running Ubuntu 22.04 on Microsoft^®^ Windows^®^ or Apple^®^ macOS^®^, see [Qualcomm Linux Virtual Machine Setup Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-80021-41/).

## Set up the Ubuntu host computer

Install and configure the required software tools on the Ubuntu host computer.

1. Install the following packages to prepare your host environment for the Yocto build:

sudo apt update
        sudo apt install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 locales python3 python3-git python3-jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xz-utils zstd
        sudo apt install pipx
        
        # This command should add the kas binary location to your PATH.
        # Restart your shell session after running this command for the changes to take effect.
        pipx ensurepath
        
        # The kas version is expected to be 4.8 or higher
        pipx install kas
        Copy to clipboard
2. (Optional) Download the `kas-container` script.
The `kas` package includes this script to run **kas** inside a container.
If you prefer to build images in an isolated environment, use `kas-container`.

# kas-container can be run on any Linux distribution with Docker installed.
        wget -qO kas-container https://raw.githubusercontent.com/siemens/kas/refs/tags/5.1/kas-container
        chmod +x kas-container
        Copy to clipboard

Note

Qualcomm Linux uses the [kas](https://kas.readthedocs.io/en/latest/) tool to sync the meta layers, configure the environment, and execute the BitBake commands.

## Sync

QLI uses the kas tool to sync and build the Yocto meta layers. For every critical release, Kas lock files record the meta-layer repository information in [meta-qcom-releases](https://github.com/qualcomm-linux/meta-qcom-releases).

You can checkout the lock files for each release using the <cite>meta-qcom-release-tag</cite>. The meta-qcom release tag follows the syntax `qli-<version>`. For example, the meta-qcom release tag can be `qli-2.0-rc2`, where `2.0-rc2` is the release version.

## Build a BSP image

Create and build a Yocto image:

1. Download Qualcomm Yocto and the supporting meta layers. For the latest `<meta-qcom-release>`, see the section *Build-Critical Release Tags* in the [Release Notes](https://docs.qualcomm.com/doc/80-80021-300/).

git clone https://github.com/qualcomm-linux/meta-qcom-releases -b <meta-qcom-release>
        # Example, git clone https://github.com/qualcomm-linux/meta-qcom-releases -b qli-2.0-rc2
        
        kas checkout meta-qcom-releases/lock.yml
        Copy to clipboard
2. Copy the kas lock file from `meta-qcom-releases` to `meta-qcom`. Run this step, or the checked-out meta layers may update to a newer commit.

# kas configuration files must be a part of the same repository
        # copy kas lock file to meta-qcom repository
        cp meta-qcom-releases/lock.yml meta-qcom/ci/lock.yml
        Copy to clipboard
3. Build the software image. You define build targets based on machine and distribution combinations.

kas build meta-qcom/ci/<machine.yml>:meta-qcom/ci/<distro.yml>:meta-qcom/ci/linux-qcom-6.18.yml:meta-qcom/ci/lock.yml
        
        # Example, kas build meta-qcom/ci/iq-9075-evk.yml:meta-qcom/ci/qcom-distro-prop-image.yml:meta-qcom/ci/linux-qcom-6.18.yml:meta-qcom/ci/lock.yml
        Copy to clipboard

    For various `<machine>` and `<distro>` combinations, see [Release Notes](https://docs.qualcomm.com/doc/80-80021-300/).

Note

You can build the images in a fully isolated environment by using [kas-container](https://kas.readthedocs.io/en/latest/userguide/kas-container.html).
4. After a successful build, check if the `rootfs.img` file exists in the build artifacts.

# meta-qcom uses qcomflash IMAGE_FSTYPE to create a single tarball
        # containing all the relevant files to perform a full clean flash,
        # including partition metadata, boot firmware, ESP # partition and
        # the rootfs.
        cd <workspace-dir>/build/tmp/deploy/images/<MACHINE>/<IMAGE>-<MACHINE>.rootfs.qcomflash/
        ls -al rootfs.img
        Copy to clipboard

Note

- The machine configurations have either UFS or EMMC storage enabled by default. To change the default storage, see Set storage.
- To build meta-qcom tip, see Build meta-qcom tip.
- For repo manifest based builds, see Alternative build instructions using Manifest.

## Flash

To flash the software images to the device, see Flash software images.

Last Published: Apr 22, 2026

Previous Topic
 
Build overview Next Topic

Build from source (with firmware and devtool)