lukaszraczylo b26afa2a5d patches/linux: add 0004 - track TX-tail movement via boolean
Replaces snapshot-of-tx_tail comparison in the watchdog with a
tx_stall_tail_moved flag set/cleared under tx_ptr_lock.  Avoids
the index-aliasing false-positive Phil Elwell flagged on the
raspberrypi/linux PR review.

Anchored against the rpi-6.18.y vendor fork so it applies cleanly
on top of patches 0001..0003.  See talos-kernel-patches/0004-*.patch
for the mainline-anchored variant intended for netdev v2.
2026-05-02 15:00:28 +01:00
2026-04-11 15:19:41 -05:00
2026-04-11 15:19:41 -05:00
2026-04-25 22:42:34 +01:00
2025-06-30 12:14:27 +02:00

Raspberry Pi 5 Talos Builder

This repository builds custom Talos Linux images for the Raspberry Pi 5. It patches the Kernel and Talos build process to use the Linux Kernel source provided by raspberrypi/linux.

Tested on

So far, this release has been verified on:

Hardware
Raspberry Pi Compute Module 5 on Compute Module 5 IO Board
Raspberry Pi Compute Module 5 Lite on DeskPi Super6C
Raspberry Pi 5b with RS-P11 for RS-P22 RPi5

What's not working?

  • Booting from USB: USB is only available once LINUX has booted up but not in U-Boot.

How to use?

Each release contains disk images and installer images for the Raspberry Pi 5 platforms.

Examples

Initial:

# Raspberry Pi 5 / CM5
xz -d metal-arm64-rpi5.raw.xz
dd if=metal-arm64-rpi5.raw of=<disk> bs=4M status=progress

Upgrade:

# Raspberry Pi 5 / CM5
talosctl upgrade \
  --nodes <node IP> \
  --image ghcr.io/talos-rpi5/installer:<version>-rpi5

Building

Using GitHub Actions

The CI workflow builds and publishes images automatically. It is triggered when you push a version tag:

  • Push a tag matching v*.*.* — this builds the Raspberry Pi 5 image and creates a GitHub Release:
    git tag v1.12.6
    git push origin v1.12.6
    

Local build

If you'd like to make modifications, it is possible to create your own build.

# Full pipeline for Raspberry Pi 5
make REGISTRY=ghcr.io REGISTRY_USERNAME=<username> pi5

Or step by step:

# Clone dependencies and apply patches
make checkouts patches

# Build the Linux Kernel (can take a while)
make REGISTRY=ghcr.io REGISTRY_USERNAME=<username> kernel

# Build the overlay (Pi5 only — Pi4 uses the stock siderolabs overlay)
make REGISTRY=ghcr.io REGISTRY_USERNAME=<username> overlay

# Build the installer and disk image
make REGISTRY=ghcr.io REGISTRY_USERNAME=<username> installer

Extensions support

Talos system extensions can be baked into the installer image at build time.

Makefile variables:

EXTENSIONS ?=
EXTENSION_ARGS = $(foreach ext,$(EXTENSIONS),--system-extension-image $(ext))

EXTENSIONS is a space-separated list of image:tag@sha256:digest references passed as a make variable at build time — no Makefile edits needed. Internally, the Makefile expands each entry into a --system-extension-image flag and passes them all to the Talos imager.

Adding extensions to the CI build:

Just add a new EXTENSION_* env var at the top of .github/workflows/build.yaml — the digest resolution step automatically loops through all vars matching that prefix:

env:
  EXTENSION_ISCSI_IMAGE: ghcr.io/siderolabs/iscsi-tools:v0.2.0
  EXTENSION_UTIL_LINUX_IMAGE: ghcr.io/siderolabs/util-linux-tools:2.41.2
  EXTENSION_MY_IMAGE: ghcr.io/siderolabs/my-extension:v1.0.0   # ← just add this

The workflow resolves the digest for each at build time and assembles the full EXTENSIONS string automatically.

Adding extensions for a local build:

# Resolve the digest first
DIGEST=$(crane digest ghcr.io/siderolabs/foo-extension:v1.0.0)

make REGISTRY=ghcr.io REGISTRY_USERNAME=<username> \
  EXTENSIONS="ghcr.io/siderolabs/foo-extension:v1.0.0@${DIGEST}" \
  installer

Pass multiple extensions as a space-separated string inside the quotes.

License

See LICENSE.

S
Description
Mirror of github.com/lukaszraczylo/talos-builder
Readme MIT 115 KiB
Languages
Makefile 63.8%
Shell 36.2%