Skip to main content
The standalone workflow lets you compile, test, and deploy kernel changes without building the full Yocto image. All required cross-compilation and image-packaging tools are bundled in the kmake-image Docker container.

Limitations and caveats

The standalone workflow builds and packages the kernel and modules only. It does not produce a root file system. To build or modify out-of-tree kernel modules that depend on the full Yocto BSP, use the Yocto-based workflow instead.
  • Toolchain: the kmake-image Docker image provides an aarch64 cross-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:
Table: Kernel branches

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 kernel SRCREV 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:
Release tags follow the 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:
Confirm that the value printed by 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

The primary approach is to pull the pre-built kmake-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:
If you encounter a “failed to resolve source metadata” error during the Docker build, see Troubleshooting Docker build failures.

Set up shell aliases

Set up shell aliases for convenience. Add these to your shell profile to persist across sessions:

Gather build artifacts

Create an artifacts/ directory to hold the ramdisk, boot binaries, and DTB metadata required to assemble the final images:
Get the initramfs ramdisk
Get systemd-boot binaries
Get DTB metadata When building standalone, DTBs must be packaged manually using a static ITS configuration. Clone the 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 built kernel modules (DLKMs) into the ramdisk:

Package the boot images

Generate efi.bin (ESP partition) The efi.bin image contains systemd-boot, the kernel (packaged as a UKI type-2 image), and the initramfs:
Generate dtb.bin (DTB partition) Build a FIT-based dtb.bin for all targets that support device tree:
Both efi.bin and dtb.bin are placed in the images/ directory and are ready to flash.

Kernel Image Build Script

The Docker image includes a build.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 --dtb argument specifies the device tree blob to package in the target-specific images. Select the DTB that matches the target device.
  • Initialize CMDLINE to 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:
  1. Use the pre-built image (recommended) See Option 1: Pull the pre-built image for instructions.
  2. 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.
  3. Pass proxy settings to the build

Flash and boot

Put the device into fastboot mode, then flash both images:
After the device reboots, verify the running kernel version as described in Install & boot the kernel.