Installing Talos on Raspberry Pi SBC’s using raw disk image.
rpi_arm64_defconfig
.
This has only been officialy tested on the Raspberry Pi 4 and community tested on one variant of the Compute Module 4 using Super 6C boards.
If you have tested this on other Raspberry Pi boards, please let us know.
talosctl
talosctl
.
Note: Updating the bootloader only needs to be done once.
Note: if you need to enable Broadcom VideoCore GPU support, generate a new image from the Image Factory with the correct config.txt configuration and vc4
system extension.
More information can be found under the Image Factory Example below.
The default schematic id for “vanilla” Raspberry Pi generic image is ee21ef4a5ef808a9b7484cc0dda0f25075021691c8c09a276591eedb638ea1f9
.Refer to the Image Factory documentation for more information.
Download the image and decompress it:
dd
the image to your SD card:
Note: Add the vc4 System Extension for V3D/VC4 Broadcom VideoCore GPU support.
kubectl
.
Note: if you have an HDMI display attached and it shows only a rainbow splash, please use the other HDMI port, the one closest to the power/USB-C port.
kubeconfig
kubeconfig
by running:
vc4
system extension for V3D/VC4 Broadcom VideoCore GPU support.
Note: TheFirst, let’s create the schematic filevc4
system extension requires sufficient Contiguous Memory Allocator (CMA) size for GPU operations. See the GPU Memory Issues section for recommended CMA sizes and configuration steps to prevent errors likeDRM_IOCTL_MODE_CREATE_DUMB failed
.
rpi_generic.yaml
:
vc4
system extensionThe schematic doesn’t contain any system extension or overlay versions, Image Factory will pick the correct version matching Talos Linux release.And now we can upload the schematic to the Image Factory to retrieve its ID:
0db665edfda21c70194e7ca660955425d16cec2aa58ff031e2abf72b7c328585
we will use to generate the boot assets.
The schematic ID is based on the schematic contents, so uploading the same schematic will return the same ID.Now we can download the metal arm64 image:
The Image Factory URL contains both schematic ID and Talos version, and both can be changed to generate different boot assets.Once installed, the machine can be upgraded to a new version of Talos by referencing new installer image:
rpi_generic
overlay and the vc4
system extension for Broadcom VideoCore GPU support.
Note: TheFirst, let’s lookup extension images forvc4
system extension requires sufficient Contiguous Memory Allocator (CMA) size for GPU operations. See the GPU Memory Issues section for recommended CMA sizes and configuration steps to prevent errors likeDRM_IOCTL_MODE_CREATE_DUMB failed
.
vc4
in the extensions repository:
Next we’ll lookup the overlay image for rpi_generic
in the overlays repository:
Now we can generate the metal image with the following command:
Now the _out/metal-arm64.raw.xz
is the compressed disk image which can be written to a boot media.
As the next step, we should generate a custom installer
image which contains all required system extensions (kernel args can’t be specified with the installer image, but they are set in the machine configuration):
The installer
container image should be pushed to the container registry:
Now we can use the customized installer
image to install Talos on Raspberry Pi.
When it’s time to upgrade a machine, a new installer
image can be generated using the new version of imager
, and updating the system extension and overlay images to the matching versions.
The custom installer
image can now be used to upgrade Talos machine.
config.txt
file for usage with the vc4
system extensionNote: Incorrect GPU memory settings inconfig.txt
can lead to rendering failures with thevc4
extension. See the GPU Memory Issues section for guidance on setting the Contiguous Memory Allocator (CMA) size viacma-*
parameters.
Long Flashes | Short Flashes | Status |
---|---|---|
0 | 3 | Generic failure to boot |
0 | 4 | start*.elf not found |
0 | 7 | Kernel image not found |
0 | 8 | SDRAM failure |
0 | 9 | Insufficient SDRAM |
0 | 10 | In HALT state |
2 | 1 | Partition not FAT |
2 | 2 | Failed to read from partition |
2 | 3 | Extended partition not FAT |
2 | 4 | File signature/hash mismatch - Pi 4 |
4 | 4 | Unsupported board type |
4 | 5 | Fatal firmware error |
4 | 6 | Power failure type A |
4 | 7 | Power failure type B |
DRM_IOCTL_MODE_CREATE_DUMB failed: Cannot allocate memory
indicates an undersized CMA pool for graphics tasks.
In Talos Linux, the Raspberry Pi 4’s CMA size is set via bootloader or kernel parameters.
The default may be too small for GPU-intensive tasks, and oversizing reduces system memory.
CMA Size Guide:
CMA Size | Suitable For |
---|---|
64 MB | Headless, no GPU use |
128 MB | Light use |
256 MB | HD media, cameras |
512 MB | 4K media, ML with GPU |
1024 MB | Experimental, may destabilize |
cma
parameter (e.g., cma=256M
, cma=384M
).
Locate and apply the machine.kernel
section to the machine config:
Talos’s immutable image requiresIn Image Factory, Set CMA size with theconfig.txt
changes via Talos Image Factory, direct/boot/config.txt
edits are lost on upgrades.
cma-*
parameter in ConfigTxt
(e.g., cma-128
, cma-256
):