kmake-image Docker container.
Limitations and caveats
- Toolchain: the
kmake-imageDocker image provides anaarch64cross-toolchain,systemd ukify, and image-packaging scripts. No host toolchain installation is needed. - DTB packaging: when building standalone, you must package the DTB manually
using a static ITS configuration from the
qcom-dtb-metadata repository.
The Yocto build handles this automatically via
meta-qcom.
Access kernel sources
Clone the kernel repository directly:Check out the exact kernel source revision
A branch checkout follows the latest commit on that branch. For reproducible standalone validation, check out the required branch and use the kernelSRCREV
from the meta-qcom release tag that built the target image to ensure
reproducible standalone validation.
Clone meta-qcom at that release tag and inspect the LTS kernel recipe:
qli-<version> convention. Use the tag specified in
the release notes for the image under test and obtain the SRCREV from that tag.
Do not use the master branch because it may reference a newer kernel revision.
Copy the complete 40-character SRCREV value from the recipe, and then check out
the corresponding commit in the kernel clone:
git rev-parse HEAD exactly matches
SRCREV before building. For a qcom-next build, use
meta-qcom/recipes-kernel/linux/linux-qcom-next_git.bb and clone the
qcom-next kernel branch instead.
Set up the Docker toolchain
Option 1: Pull the pre-built image (recommended)
The primary approach is to pull the pre-builtkmake-image from the registry:
Pull the hosted image unless you plan to contribute to the kmake-image Docker image.
This approach avoids Docker build failures caused by network connectivity or container
registry access issues.
Option 2: Build the image locally
Clone and build the kmake-image container locally only if you need to develop or customize it:Set up shell aliases
Set up shell aliases for convenience. Add these to your shell profile to persist across sessions:Gather build artifacts
Create anartifacts/ directory to hold the ramdisk, boot binaries, and DTB
metadata required to assemble the final images:
qcom-dtb-metadata repository to get the required
qcom-metadata.dts and qcom-next-fitimage.its files:
Build the kernel and modules
Configure and build the kernel using the standard Qualcomm® configuration fragments, then install modules into a staging directory:Package the boot images
Generateefi.bin (ESP partition)
The efi.bin image contains systemd-boot, the kernel (packaged as a UKI
type-2 image), and the initramfs:
dtb.bin (DTB partition)
Build a FIT-based dtb.bin for all targets that support device tree:
efi.bin and dtb.bin are placed in the images/ directory and are
ready to flash.
Kernel Image Build Script
The Docker image includes abuild.sh script that wraps the preceding build and
packaging steps and generates efi.bin, dtb.bin, and boot.img.
Set --dtb to the DTB for the validation target. For IQ-9075 EVK, run:
- The
--dtbargument specifies the device tree blob to package in the target-specific images. Select the DTB that matches the target device. - Initialize
CMDLINEto set your kernel command-line parameters; otherwise, a default generic command line is used.
Troubleshooting Docker build failures
If the Docker build fails with “failed to resolve source metadata” errors:- Use the pre-built image (recommended) See Option 1: Pull the pre-built image for instructions.
-
Check firewall and network access
Verify that your network allows access to the Docker registries:
If these fail, contact your network administrator to allow outbound HTTPS connections to Docker registries.
-
Pass proxy settings to the build

