Release Notes: Image Composer Tool#
Version 2026.1#
June 17, 2026
New
ARM64/aarch64 cross-architecture image builds: Ubuntu 24, eLxR 12, and AZL3 images can now be composed on an x86_64 host targeting ARM64. The builder validates host-side prerequisites (arch-test, qemu-user-static), normalizes architectures for
mmdebstrapanddpkg, and forces a host-side ukify execution when the host and target architectures differ.Ubuntu 24 ARM64 bootable server image: Added a user template and supporting configuration to produce a bootable Ubuntu 24
aarch64server image.Ubuntu 26.04 LTS (Resolute Raccoon) support: New OS target and associated configuration for Ubuntu 26.04.
eLxR Edge 26.04 / eLxR 13 support: New OS provider, image configuration, and user templates for eLxR 13 (elxr-edge-26.04) raw image builds.
Debian 13 user templates: New raw image template and Desktop Virtualization (IDV) ISO installer template for Debian 13.
ROS 2 Jazzy robotics templates: New AMR raw image template and a companion ISO installer template for ROS 2 Jazzy edge robotics platforms.
PTL PV attended and unattended ISO templates: New attended and unattended ISO installer templates for PTL (Platform Validation Toolkit) PV (Para-Virtual) configurations including cloud-init example configuration files.
Unattended ISO installer with policy-based target disk selection:
live-installernow supports fully automatic installation using aselectionPolicyblock in the disk template section. Supported strategies: first, largest, fastest (prefers NVMe over SSD over HDD), and largest-free (selects the disk with the most unallocated span). Removable and externally attached disks are excluded by default and can be included explicitly withexcludeRemovable: false.Declarative network configuration in image templates: A new
systemConfig.networksection defines network interfaces at image composition time. It supportssystemd-networkdandnetplanbackends, configures DHCP, static IP/CIDR addresses, default gateways (via routes), and DNS nameservers per interface.Network configuration view in attended ISO installer: The attended (interactive) ISO installer now includes a “Configure Network” step that allows selecting an interface and entering DHCP or static IP/gateway/DNS settings before installation.
Local package repository population via
packageRepositoriessection: ThepackageRepositoriesschema now accepts a package list whose entries are HTTPS URLs (downloaded at build time) or local file/directory paths (copied). Archives (.tar, .tar.gz, .tgz, .zip) are extracted for their .deb/.rpm payloads. Thepathfield is optional whenpackagesis set. A temporary directory is auto-created and cleaned up. An optionalinsecureSkipVerifyflag allows skipping TLS certificate verification for downloads from environments with self-signed certificates.Full offline/cache mode for DEB and RPM repositories: DEB Packages.gz metadata is now cached by SHA-256 checksum (
packages.parsed.json) undercache_dir/and reused on rebuilds with no network access. RPMprimary.xmlmetadata andprimary.location.jsonare cached undercache_dir/rpm-metadata/. Debian repository GPG keys are cached incache_dir/gpg-keys/. Repository file-existence check results and package-list URLs are cached in-process per run to eliminate redundant HEAD requests.DKMS module installation: Package resolution now uses a target-name-aware candidate filter (
filterCandidatesByPriorityWithTarget) that prefers exact-name matches over Provides virtual package matches, preventing kernel packages that provide a DKMS module name from being selected instead of the actual DKMS package.
Improved
RPM package cache:
DownloadPackagesCompletenow checks for a valid local cache before contacting the repository. If all required packages are present, no network request is made. Only the missing packages are re-fetched, preserving existing cached files.DEB package cache:
DownloadPackagesperforms a staleness check against the local.debcache (by name) before downloading. Version-pinned requirements and epoch-prefixed package names are matched correctly.Chroot environment package isolation: The chroot-build tool package cache and the initrd package cache are now stored in dedicated subdirectories (
chrootenv/andinitrd/respectively) to prevent the stale-cache check from evicting image packages when the two sets do not overlap.Chroot cleanup error handling:
CleanupChrootEnvandUmountChrootSysfsnow accumulate all cleanup errors rather than short-circuiting on the first failure. All partial errors are surfaced in the returned error.Mount rollback on failure:
mountDiskToChrootandMountSysfsnow roll back previously mounted paths when a later mount step fails, preventing orphaned bind mounts.Loop device cleanup:
LoopSetupDeletenow detects and disables any SWAP partitions on the loop device before callinglosetup -d, preventing detach failures caused by active swap.Loop device error cleanup on creation failure: If loop device creation fails but a partial loop device path is returned,
BuildRawImagenow detaches it immediately rather than leaking the resource.Disk partition creation reliability:
createPartitionTablenow retries wipe (wipefs) andsfdiskcommands in separate loops with a 30-second timeout each, verifying vialsblk/sfdiskthat the expected state is actually reached before proceeding.Grub command detection in install root:
getGrubVersionandupdateGrubConfignow resolve grub binaries by checking known absolute paths in the install root (/usr/sbin/,/usr/bin/) before falling back to shellcommand -v.update-grubis now also accepted as a valid fallback.apt-getinstall with--no-install-recommends: DEB package installation in the chroot environment now passes--no-install-recommends, reducing unnecessary package pulls.sudo suppressed when already root:
GetFullCmdStrdetects when the process is already running as root (euid == 0) and omits the sudo prefix in chroot commands, avoiding permission escalation errors in CI environments that run as root.Partition mount-point path resolution:
resolveInstallRootMountPointis now the single canonical function for joining the install root and partition mount points. It handles empty, /-absolute, and relative mount-point strings uniformly.Default installer partitioning mode: The attended ISO installer now starts in manual partitioning mode by default; partition template state is cleared when entering manual mode to avoid stale configuration.
Installer startup scripts hardened:
attendedinstallerandunattendedinstallershell scripts replaced withset -euo pipefail, standardized quote handling, and[[...]]conditionals for more robust error propagation.Dual GPG key per repo for RPM EMT distro: RPM-based EMT repositories now support a second GPG public key (
pkeyslist), enabling repositories that require two signing keys.Boot partition label in EMT-EMF template: Explicit partition labels added to the boot partition.
systemd-resolvedenabled at startup for RCD: RCD image builds now enable and startsystemd-resolvedas part of post-install configuration.intel-dlstreamer / OpenVINOversion alignment for RCD: Fixed version mismatch betweenintel-dlstreamerandopenvinoin RCD templates.intel-dlstreameris pinned to 2025.2.0.ukifylookup paths:shell.gonow searches additional known installation prefixes forukifyso builds on distributions that install it in non-standard locations do not fall back to host-side execution unnecessarily.Progress bar terminal output: A trailing newline is now emitted after progress bars finish (
VerifyDEBs,VerifyAll,FetchPackages) to prevent the next log line from overwriting the progress bar.CopyDirempty-source handling: Fixed glob pattern from/*to/.so that copying an empty source directory does not produce a shell error.RPM dependency graph (
PkgName):GenerateDotnow uses thePkgNamefield for node names in dependency graphs, producing clean package names instead of raw filenames.Network schema validation: IPv4/IPv6 CIDR addresses, gateway addresses, and nameservers in
systemConfig.networkare now validated against typed formats in the JSON schema; DHCP and static addresses cannot be combined on the same interface.
Fixed
fix(ubuntu):AllowPackagesnot propagated to debutils.Repository (#480): TheallowPackageslist in user-provided package repository configuration was silently dropped instead of being passed through to the DEB package resolver.fix(inspect): ext4 filesystem misdetection in image inspect (#484): The image inspect command was incorrectly classifying some ext4 partitions as a different filesystem type.Fixes for error logs when building UKI (#485): Spurious or incorrect error log entries emitted during UKI image construction were corrected.
fix(templates): pin intel-dlstreamer to 2025.2.0 (#492):intel-dlstreamerineLxR/RCDtemplates was not version-pinned, causing uncontrolled version updates.fix(templates): kernel version metadata 6.14 → 6.17 (#494): Template metadata version field for Ubuntu 24 kernels corrected to match the actual installed kernel series.RPM DOT file naming bug (#538):
GenerateDotused the raw filename (e.g.,glibc-2.38-16.azl3.x86_64.rpm) as a node label instead of the canonical package name (glibc), producing incorrect dependency graphs.Swap partition cleanup before loop device detach (#568): Building images that include a swap partition would fail at teardown because the loop device was busy. The swap partition is now detected and disabled with
swapoffbeforelosetup -d.Ubuntu 24 ARM64 minimal raw template boot partition type: The
xbootldrpartition inubuntu24-aarch64-minimal-raw.ymlhad an incorrectfsType: vfat. It is now corrected toext4.Local DEB repo path in chroot:
initDebLocalRepoWithinInstallRootused an incorrect path separator for the/cdrom/cache-repomount point inside the chroot, causing package installation failures.Deferred cleanup of local DEB repo: De-initialization of the local Debian repository inside the install root is now performed via a defer statement, ensuring cleanup happens even when package installation fails midway.
fix(scripts): remove Intel-internal proxy from repository configuration (#561): An Intel-internal proxy URL was hardcoded in repository configuration, causing failures in external environments.
Known Issues
Unattended ISO installer is a first-pass implementation: The unattended installer (
ubuntu24-x86_64-minimal-unattended-iso.yml) does not yet support all advanced partition layouts (e.g.,LVM,LUKS). Complex partition schemes must use the attended installer or a custom startup script.ARM64 cross-architecture builds require host tools: Builds targeting aarch64 from an
x86_64host require arch-test and qemu-user-static installed on the build host. The builder will detect and report missing dependencies but does not install them automatically.Loop devices not destroyed when image building is terminated abruptly: When the image build process is terminated abruptly using
ctrl-C, loop devices created just prior toctrl-Care not removed automatically. The loop devices must be manually removed by the user.
Version 1.0#
December 12, 2025
Features
Support for building OS images with Intel® specific OOT Kernel packages.
Support for building Wind River eLxr 12 images.
Support for adding multiple Debian package repositories, e.g., Intel® and OSV.
Ability to set priority for repositories to manage conflicts.
Ability to prioritize specific packages to manage conflicts.
Caching for consistent and faster composition.
Debian repository GPG keys are now cached in
cache_dir/gpg-keysand reused on rebuilds to avoid re-downloading.RPM repository metadata is now cached in
cache_dir/rpm-metadataand reused on rebuilds to avoid network fetches.Native support for Debian and RPM based distributions.
Support for building immutable OS images with DM-Verity and read-only file system support.
Generation of signed OS images using provided keys for Secure Boot.
Support for Unified Kernel Image (UKI) with systemd over UEFI BIOS or Legacy BIOS.
Verbose and filtered logging based on severity to provide easy troubleshooting.
User-defined OS image configuration.
Seamless support for AI software stacks - Edge AI Libraries in user space of the OS distribution.
Support for composing the OS images to include ECG Sample Apps.
Known Issues/Opens
Installation from ISO images on NVMe SSD and via USB is not functional on RPL platforms.
Face Detection and Recognition application output video is not displayed locally.
Support for building Ubuntu OS images is being considered.