Building a Yocto Image
Build Qualcomm Linux 2.0 for the IQ-9075 by fetching Qualcomm meta-layers, pinning the release lock, selecting the iq-9075-evk machine, choosing the intended distro, kernel configuration, and image recipe then launch the build and inspect the built artifacts.
Build BSP Image
This section describes how to create and build a Yocto BSP image using Qualcomm Linux and kas.
Clone Qualcomm Yocto Meta Layers
Get into the workspace directory:
WORKSPACE_DIR=${HOME}
cd $WORKSPACE_DIR
Download the Qualcomm Yocto meta layers. Replace META_QCOM_RELEASE with the appropriate release tag.
Set the release in the environment variable:
META_QCOM_RELEASE=qli-2.0-rc2
You can find the meta-layer repository information in meta-qcom-releases
git clone https://github.com/qualcomm-linux/meta-qcom-releases -b $META_QCOM_RELEASE
Checkout kas Lock File
kas checkout $WORKSPACE_DIR/meta-qcom-releases/lock.yml
This command utilizes the kas tool for syncing meta layers, configuring the environment, and executing BitBake commands in the WORKSPACE_DIR. It creates the following folders and meta-layers:
bitbake build meta-audioreach meta-openembedded meta-qcom meta-qcom-distro meta-qcom-releases meta-security meta-selinux meta-updater meta-virtualization oe-core
Copy Lock File
Copy the kas lock file to ensure consistent layer versions.
cp $WORKSPACE_DIR/meta-qcom-releases/lock.yml $WORKSPACE_DIR/meta-qcom/ci/lock.yml
Build the Image
Define your build using machine and distribution configuration files.
To find the available machines, run:
ls $WORKSPACE_DIR/meta-qcom/conf/machine/
Example of machines in output:
iq-615-evk iq-8275-evk iq-9075-evk iq-x7181-evk
Define your machine:
MACHINE=iq-9075-evk
To find the .yml configuration files for distros run:
ls $WORKSPACE_DIR/meta-qcom/ci/
Examples of distros in output:
qcom-distro-selinux.yml qcom-distro-prop-image.yml qcom-distro.yml qcom-distro-sota.yml qcom-distro-catchall.yml
Define your distro:
DISTRO=qcom-distro-prop-image
The linux-qcom-6.18.yml configuration is a standard component in Qualcomm Linux builds. To find kernel version run:
ls meta-qcom/ci/linux-qcom*.yml
Get this result with available kernel versions:
meta-qcom/ci/linux-qcom-6.18.yml meta-qcom/ci/linux-qcom-next-rt.yml meta-qcom/ci/linux-qcom-next.yml meta-qcom/ci/linux-qcom-rt-6.18.yml
Set it to environment variable:
KERNEL_VERSION=6.18
To find the available images, get into the kas shell workspace by using:
cd $WORKSPACE_DIR kas shell meta-qcom/ci/$MACHINE.yml:meta-qcom/ci/$DISTRO.yml:meta-qcom/ci/linux-qcom-$KERNEL_VERSION.yml:meta-qcom/ci/lock.yml
And then run:
bitbake-layers show-recipes "*image*"
Example qcom images in output:
qcom-console-image qcom-minimal-image qcom-multimedia-image qcom-multimedia-proprietary-image qcom-container-orchestration-image
Define the image you want to compile:
IMAGE=qcom-minimal-image
And then to compile a single image run:
bitbake $IMAGE
Get out of the kas shell with Ctrl+D or run:
exit
Remember to set up locales (specified on previous section), otherwise, might throw error:
Please make sure locale 'en_US.UTF-8' is available on your system 2026-04-07 13:32:53 - ERROR - Command "/home/ridgerun/bitbake/bin/bitbake -c build qcom-multimedia-image qcom-multimedia-proprietary-image qcom-container-orchestration-image" failed with error 1
Verify Build Artifacts
After a successful build, verify that the root filesystem image exists.
cd $WORKSPACE_DIR/build/tmp/deploy/images/$MACHINE/$IMAGE-$MACHINE.rootfs.qcomflash/
And list the rootfs.img information with:
ls -al rootfs.img
You can list all the compiled images available with:
ls $WORKSPACE_DIR/build/tmp/deploy/images/$MACHINE/
Compile multimedia full images
To compile qcom-multimedia-image, qcom-multimedia-proprietary-image and qcom-container-orchestration-image, run this command outside the kas shell:
cd $WORKSPACE_DIR kas build meta-qcom/ci/$MACHINE.yml:meta-qcom/ci/$DISTRO.yml:meta-qcom/ci/linux-qcom-$KERNEL_VERSION.yml:meta-qcom/ci/lock.yml
Notes
- Qualcomm Linux uses kas to sync meta layers, configure the environment, and run BitBake.
- You can use kas-container for isolated builds (requires Docker).
- Default storage (UFS or eMMC) depends on the machine configuration. See storage configuration docs to change it.
- For supported <machine> and <distro> combinations, refer to the Release Notes.
- For advanced workflows:
FAQ
- Which machine should be selected for the EVK?
- The existing workflow uses iq-9075-evk.
- How do I prove the image is reproducible?
- Archive the lock, layer revisions, configuration, host or container manifest, and checksums, then run a clean build in a separate workspace or CI runner and compare outputs.
Related pages
- Qualcomm Dragonwing Technical Guide/Bring Up/Yocto Build/Setup Environment
- Qualcomm Dragonwing Technical Guide/Bring Up/Yocto Build/Qualcomm Linux 1.8
- Qualcomm Dragonwing Technical Guide/Bring Up/Yocto Build/Flashing Image
References