Releases: microsoft/azure-linux-image-tools
Releases · microsoft/azure-linux-image-tools
v1.4.0
Breaking changes
None
Breaking changes for preview features
None
New preview features
- Azure Container Linux 3.0 support: Add customization support under the
azure-container-linux-3preview feature, includingqcow2,raw,vhd-fixed,vhd, andvhdxoutput formats; andinput.image.path,os.hostname,os.kernelCommandLine,os.additionalFiles,os.additionalDirs,os.groups,os.users,os.modules,os.services,os.uki,os.selinux,os.imageHistory,scripts,output.image, andoutput.artifactsconfig API endpoints.
New features
- Azure Linux 4.0 support: Add customization support for all CLI commands and configuration endpoints as stable APIs, except the
iso,pxe-dir, andpxe-taroutput formats and theirisoandpxeconfig API counterparts; and thecustomize --package-snapshot-timeCLI flag and itsos.packages.snapshotTimeconfig API counterpart. - Single-partition verity: Add support for placing the data and hash tree on the same partition.
- Expanded
mkfs.btrfssupport: Add support for v6.17.1 through v6.19.1.
Bug fixes
- UKI addon
.cmdlineis no longer silently truncated: Build UKI addons with systemd'saddonx64.efi.stubinstead oflinuxx64.efi.stub, so systemd versions with a largelinuxx64.efi.stubfile do not silently cause truncated.cmdlinesections. - Verity reinit no longer drops format settings: Carry over the original verity format settings when reinitializing verity.
setfilesno longer skipped on SELinux-enabled images: On Fedora, Azure Linux 3.0+, and other distributions where SELinux is loaded by default, fall back to/etc/selinux/configto determine mode whenselinux=andenforcing=are absent from the kernel command line, instead of assuming SELinux is disabled.- Stale or wrong packages no longer silently installed: Force
skip_if_unavailable=Falsefordnfandtdnfso package operations fail loudly on repo metadata errors instead of silently skipping unreachable repos. - Boot no longer fails on XFS: Use
cp --sparse=autoinstead of--sparse=alwayswhen repartitioning, so legitimate zero runs in vmlinuz aren't converted to sparse holes (which GRUB can't read on XFS). - Kernel cmdline updates no longer fail on images without
GRUB_CMDLINE_LINUX: Treat the variable as empty instead of erroring when it's missing from/etc/default/grub. output.artifacts.itemsrejectsuki-addonsvalue: Now errors onuki-addons, which was previously accepted but had no effect.
Doc fixes and improvements
- Edit-on-GitHub links: Add an "Edit this page on GitHub" link to every doc page, so readers can jump straight to the source markdown to propose improvements.
Links
Official docs: Image Customizer
Version docs: README.md
Commit: db5bef62ad3768d4f814d42727959d9893581a63
Branch: release/v1.4
Container:
- MCR: mcr.microsoft.com/azurelinux/imagecustomizer:1.4
- GHCR: ghcr.io/microsoft/imagecustomizer:1.4.0
v1.3.0
Breaking changes
None
Breaking changes for preview features
- In
.output.artifacts.itemsAPI, remove thesystemd-bootoption and add thebootloaderoption.
New preview features
- Ubuntu support for removing and updating packages
New features
- Add option to output logs in JSON format (
--log-format json).
Bug fixes
- During partition discovery, don't try to read kernel cmdline unless it is actually needed.
- Ensure that the partitions have a consistent ordering in a COSI file.
- Fix command path lookup of script's 'interpreter' value.
- Gracefully handle Azure data disks.
- Lots of fixes for hierarchical configs:
- Report an error when
.storageis specified in a base config. - Validate the
.osvalues in the base configs. - Ensure packages
installLists,removeLists, andupdateListsare used from base configs. - Merge the
.os.imageHistoryenum from base configs. - Ensure base configs
.os.kernelCommandLineis used when bootloader ishard-reset. - Run the
.scriptsfrom base configs.
- Report an error when
- Make sure "Success!" log happens at the very end.
- When creating UKIs, don't create the
/boot/efi/EFI/systemd/systemd-bootx64.efifile. - For inject-files, create build directory if it doesn't exist.
- Trim filesystems after OS customization. For some scenarios, this can substantially reduce the size of a disk.
Doc fixes and improvements
- Remove stale references to
cosi-compressionpreview feature. - Add missing create, kdump-boot-files, and fedora-42 preview features previews.
- Breakout output image formats in distro support documentation.
v1.2.0
Breaking changes
None
Breaking changes for preview features
- The UKI API has changed.
.os.uki.kernelswas removed and.os.uki.modewas added. - If you want to leave an existing UKI from the base image, you must now explicitly specify
.os.uki.mode=passthrough. - Kernel command-line args are now placed in a UKI addon instead of the main UKI file.
New preview features
- You can now control the COSI zstd compression level using the
.output.image.cosi.compression.levelAPI. - Expanded hierarchical configs API to include ISO and PXE.
- Added support for btrfs filesystem, including creating subvolumnes and setting quotas.
- Added
createsubcommand for creating OS images from scratch. - Added UKI mode of
modifyfor modifying the kernel args through a UKI addon. - Added initial support for customizing Ubuntu cloud images. Many features are not yet implemented.
New features
- Added support for COSI v1.2.
- Added
convertsubcommand, for converting OS images without customizing them. This is useful for creating fixed-sized VHDs and creating COSI images. - Added
validate-configsubcommand.
Bug fixes
- Fixed boot failures when using the
.storage.verity[].hashSignaturePathAPI.
Doc fixes and improvements
- Fixed a bunch of spelling and grammar issues.
- Fixed example for
.output.imageAPI. - Gave the
customizesubcommand its own page. - Cleaned up output image formats docs.
- Call out the need to specify
--image-cache-dirwhen using the OCI APIs.
v1.1.0
Breaking changes
None
Breaking changes for preview features
- When
inject-filesoutputs to COSI, the non-verity filesystems will be shrunk. - The output artifacts behavior and the
inject-filesconfig API has changed:unsignedSourcehas been removed frominject-files.yaml. Instead, the unsigned and signed file paths are now the same.- Unsigned files are now placed in
<artifacts-dir>/<artifact-type>/<file>(previously<artifacts-dir>/<file>).- For example:
./artifacts/ukis/vmlinuz-6.6.96.2-2.azl3.efiinstead of./artifacts/vmlinuz-6.6.96.2-2.azl3.efi.
- For example:
- A new
typefield has been added toinject-files.yaml.
New preview features
- Partial support has been added for Hierarchical Configs.
- This feature is still a work in progress. It is not recommended for use yet.
- Currently implemented features:
.os.services,.os.packages,.os.users,.os.groups,.os.additionalFiles,.os.modules,.input.image,.output.image,.output.artifacts,.os.overlays,.os.selinux,.os.bootLoader,.os.uki,.os.kernelCommandLine.
- Added API for downloading base images from an OCI artifact (oras).
- Added API for downloading Azure Linux base images from MCR.
- Added partial support for customizing Fedora 42 images.
- This feature is still a work in progress. It is not recommended for use yet.
- Added support for customizing base images that have a rootfs formatted as
btrfs.- Creating new partition layouts with
btrfspartitions is not supported yet.
- Creating new partition layouts with
- Added API for extracting SELinux policy from image during customization.
Bug fixes
- For Azure Linux 3.0, don't enable the
nrext64feature on an/bootpartitions formatted withxfssince GRUB 2.06 doesn't support that feature. - Remove requirement for having a
/bootpartition when/usrverity is used. - Bump golang.org/x/crypto from v0.41.0 to v0.45.0.
- Be more resilient when the user changes the
/etc/fstabfile during custom scripts.
Doc fixes and improvements
- Fixed typo in
Things to avoidpage. - Added details on the format of ISO files generated by Image Customizer.
- Fix example in the
user typepage.
v1.0.0
Breaking changes
None
Breaking changes for preview features
None
New features
- Added
ukifycommand to ARM64 container.
Bug fixes
- Fix
grub2-mkconfiglog level. - Improve some error messages, including when a non-disk file is passed as the input image.
Doc fixes and improvements
None
v0.19.0
Notices
- This is the second release candidate for v1.
Breaking changes
- The
/tmpdirectory is now mounted astmpfsduring customization. - The file paths in the container have changed:
imagecustomizer:/usr/bin/imagecustomizerrun.sh:/usr/lib/imagecustomizer/run.shentrypoint.sh:/usr/lib/imagecustomizer/entrypoint.sh
Breaking changes for preview features
None
New features
None
Bug fixes
None
Doc fixes and improvements
None
v0.18.0
Notices
This will likely be the last release before v1.
Breaking changes
- Reject VHDs (i.e. vpc) images made with
qemu-imgwhere theforce_size=onoption was omitted. - When calling the container, the name of the program (
imagecustomizer) no longer needs to be specified.- If you are using
run.sh, then you should pass--entrypoint /usr/local/bin/run.shtodocker.
- If you are using
Breaking changes for preview features
None
New features
- Telemetry now collects error names.
Bug fixes
- Fix UKI stub path for ARM64.
- Fix failure when producing COSI images with overlays added.
Doc fixes and improvements
None
v0.17.0
Breaking changes
None
Breaking changes for preview features
- When customizing a base image with existing verity partitions, the verity partitions will be read-only during customization by default.
- Set
reinitializeVeritytoallto recustomize verity partitions.
- Set
New features
- Added the
reinitializeVerityAPI that controls whether existing verity partitions can be recustomized.
Bug fixes
- Added support for
--helpCLI arg in container'srun.shscript. - Modifying an existing user will no longer remove the user's password.
Doc fixes and improvements
- Added docs regarding telemetry collection.
v0.16.0
Breaking changes
- When generating UKI images, the
/bootdirectory is no longer emptied.- This enables recustomizing UKI images.
- Do not include
efiboot.imgfile in PXE image output. - UKI EFI files no longer have
.unsignedor.signedin the name.- This means that signed images will no longer have both an unsigned and signed version of the UKI files.
- Don't copy SSH public key files specified through
sshPublicKeyPathsinto the.sshdirectory. Instead, only append the keys to theauthorized_keysfile. - Adding/updating users now happens before
additionalFilesandadditionalDirsare processed.
New features
- Added telemetry that tracks timing, success/fail, etc.
- Use
--disable-telemetryCLI flag to disable upload.
- Use
- For PXE/ISO, added
initramfsTypeAPI that that can enable storing the full OS in the initramfs, instead of having a separate squashfs. - Added support for the COSI v1.1 image format.
- The
inject-filessub-command now supports outputting COSI images. - Added
verity-hashas an artifact output type, to support verity hash signing. - PXE and ISO image output now supports having multiple kernels installed.
- For ISO/PXE image output, add
kdumpBootFilesflag that allows keeping kernel files within the OS image for use with kdump. - Added API for adding user groups.
Bug fixes
- Do not require
efibootmgrpackage when UKI is used. - Do not require
lvm2package when verity is used and instead requiredevice-mapperpackage. - Do not apply
noexecmount flag while customizing. Flag will still be included in the/etc/fstabfile. - Add pre-validation that the
sshPublicKeyPathsfiles exist. - Fix the permissions of the
.sshdirectory and its files.
Doc fixes and improvements
- Docs for
primaryGrouphas been clarified and expanded.
v0.15.0
Breaking changes
- Enable GPG checking for package installation by default.
- GPG checking can be explicitly disabled in
.repofiles passed to--rpm-source. GPG checking is also disabled for directories.
- GPG checking can be explicitly disabled in
- Don't copy extended file ACLs for
additionalFiles, etc.
New features
- Add support for reinitializing verity. (Reading verity settings from base image and reapplying them.)
- Add support for specifying package snapshot time.
Bug fixes
- Remove unnecessary/duplicate files from ISO.
- Ensure no files are left in build directory.
- Ensure correct UUID is used when verity
hashDeviceMountIdTypeorhashDeviceMountIdTypeis set touuid. - Don't overwrite shim EFI when UKIs are configured.
Doc fixes and improvements
- Remove deprecated doc: "Partition Metadata JSON Format"