Go to file
Mathias Beaulieu-Duncan 44aa3793ee
All checks were successful
Build Talos CM5 Image / build (push) Successful in 3m29s
Add LICENSE, update README, upgrade provenance to max-mode
- Add MPL 2.0 LICENSE file for compliance
- Add license section and upstream attribution to README
- Upgrade provenance attestation from mode=min to mode=max

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 15:57:11 -05:00
.gitea/workflows Add daily auto-update workflow and fix overlay dirty tag 2026-02-13 15:05:46 -05:00
config Initial commit: Talos CM5 builder with Gitea CI/CD 2026-02-09 17:58:17 -05:00
patches Fix 21 Go stdlib CVEs and enable supply chain attestations 2026-02-13 15:36:13 -05:00
scripts Add daily auto-update workflow and fix overlay dirty tag 2026-02-13 15:05:46 -05:00
.gitignore Initial commit: Talos CM5 builder with Gitea CI/CD 2026-02-09 17:58:17 -05:00
LICENSE Add LICENSE, update README, upgrade provenance to max-mode 2026-02-13 15:57:11 -05:00
Makefile Add LICENSE, update README, upgrade provenance to max-mode 2026-02-13 15:57:11 -05:00
README.md Add LICENSE, update README, upgrade provenance to max-mode 2026-02-13 15:57:11 -05:00

Talos CM5 Builder

Custom Talos Linux images for Raspberry Pi CM5 on Compute Blade hardware.

The official Talos Image Factory does not support CM5 — the mainline kernel lacks CM5 device trees and RP1 driver support. This builder uses the RPi downstream kernel (via talos-rpi5/talos-builder patches) to produce working CM5 images with our extensions and overclock config.

What it builds

  • Installer imagedocker.io/svrnty/talos-rpi5:<tag> (for talosctl upgrade)
  • Raw disk image → Gitea release metal-arm64.raw.zst (for eMMC flashing)

Baked-in config:

  • RPi downstream kernel with CM5/RP1 support
  • Overclock: 2.6GHz (arm_freq=2600, over_voltage_delta=50000, arm_boost=1)
  • Extensions: iscsi-tools, util-linux-tools

Usage

Building locally (ARM64 host required)

make checkouts patches   # Clone and patch sources
make kernel              # Build RPi kernel
make overlay             # Build SBC overlay
make installer           # Build installer + disk image

CI/CD (Gitea Actions)

Push a version tag to trigger an automated build:

git tag v1.11.5-1
git push origin v1.11.5-1

The pipeline runs on the ARM64 self-hosted runner and:

  1. Builds the kernel, overlay, and installer
  2. Pushes the installer image to Docker Hub
  3. Creates a Gitea release with the raw disk image

Upstream update checks

A weekly scheduled workflow checks for new Talos and RPi kernel releases and creates Gitea issues when updates are available.

CI Secrets

Secret Description
REGISTRY_USERNAME Docker Hub username (org-level)
REGISTRY_PASSWORD Docker Hub access token (org-level)

Runner Setup (Apple Silicon Mac Mini)

The build runner needs:

  • Docker Desktop with Buildx (arm64 native)
  • Gitea act_runner registered with labels: self-hosted, macOS, arm64
  • Sufficient disk space for kernel builds (~20GB)
# Install act_runner via Homebrew
brew install act_runner

# Or download directly
curl -sL https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-darwin-arm64 -o act_runner
chmod +x act_runner

# Register
./act_runner register \
  --instance https://git.openharbor.io \
  --token <runner-token> \
  --name mac-mini \
  --labels self-hosted,macOS,arm64

# Run as service
./act_runner daemon

Structure

.gitea/workflows/
  build.yaml              # Build pipeline (tag push trigger)
  check-updates.yaml      # Upstream update checker (weekly cron)
Makefile                   # Build orchestration
config/
  config.txt.append        # CM5 overclock settings
  extensions.yaml          # System extensions list
scripts/
  check-upstream.sh        # Version comparison script
patches/
  siderolabs/
    pkgs/0001-*.patch      # RPi kernel patch
    talos/0001-*.patch     # Module list patch
  talos-rpi5/
    sbc-raspberrypi5/      # Overlay patches (Go toolchain bump)

License

This project is licensed under the Mozilla Public License 2.0.

It builds upon the following MPL 2.0 licensed upstream projects:

Our patches to these projects are in the patches/ directory and are distributed under the same MPL 2.0 terms.