Skip to main content
There might be several reasons to build Talos images from source:
  • verifying the image integrity
  • building an image with custom configuration

Checkout Talos Source

If building for a specific release, checkout the corresponding tag:

Set up the Build Environment

See Developing Talos for details on setting up the buildkit builder.

Architectures

By default, Talos builds for linux/amd64, but you can customize that by passing PLATFORM variable to make:

Custom PKGS

When customizing Linux kernel, the source for the siderolabs/pkgs repository can be overridden with:
  • if you built and pushed only a custom kernel package, the reference can be overridden with PKG_KERNEL variable: make <target> PKG_KERNEL=<registry>/<username>/kernel:<tag>
  • otherwise, patch the Dockerfile to account for the new pkgs repository reference

Customizations

Some of the build parameters can be customized by passing environment variables to make, e.g. GOAMD64=v1 can be used to build Talos images compatible with old AMD64 CPUs:

Building Kernel and Initramfs

The most basic boot assets can be built with:
Build result will be stored as _out/vmlinuz-<arch> and _out/initramfs-<arch>.xz.

Building Container Images

Talos container images should be pushed to the registry as the result of the build process. The default settings are:
  • IMAGE_REGISTRY is set to ghcr.io
  • USERNAME is set to the siderolabs (or value of environment variable USERNAME if it is set)
The image can be pushed to any registry you have access to, but the access credentials should be stored in ~/.docker/config.json file (e.g. with docker login). Building and pushing the image can be done with:
The local registry running on 127.0.0.1:5005 can be used as well to avoid pushing/pulling over the network:
When building imager container, by default Talos will include the boot assets for both amd64 and arm64 architectures, if building only for single architecture, specify INSTALLER_ARCH variable:

Building ISO

The ISO image is built with the help of imager container image, by default ghcr.io/siderolabs/imager will be used with the matching tag:
The ISO image will be stored as _out/talos-<arch>.iso. If ISO image should be built with the custom imager image, it can be specified with IMAGE_REGISTRY/USERNAME variables:

Building Disk Images

The disk image is built with the help of imager container image, by default ghcr.io/siderolabs/imager will be used with the matching tag:
Available disk images are encoded in the image-% target, e.g. make image-aws. Same as with ISO image, the custom imager image can be specified with IMAGE_REGISTRY/USERNAME variables.