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.
Video Walkthrough
To see a live demo of this writeup, see the video below:Prerequisites
You will needtalosctl
- an SD card
talosctl
.
Updating the EEPROM
Use Raspberry Pi Imager to write an EEPROM update image to a spare SD card. Select Misc utility images under the Operating System tab. Remove the SD card from your local machine and insert it into the Raspberry Pi. Power the Raspberry Pi on, and wait at least 10 seconds. If successful, the green LED light will blink rapidly (forever), otherwise an error pattern will be displayed. If an HDMI display is attached to the port closest to the power/USB-C port, the screen will display green for success or red if a failure occurs. Power off the Raspberry Pi and remove the SD card from it.Note: Updating the bootloader only needs to be done once.
Download the Image
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:
Writing the Image
Nowdd
the image to your SD card:
Bootstrapping the Node
Insert the SD card to your board, turn it on and wait for the console to show you the instructions for bootstrapping the node. Following the instructions in the console output to connect to the interactive installer: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.
Retrieve the kubeconfig
Retrieve the admin kubeconfig
by running:
Upgrading
For example, to upgrade to the latest version of Talos, you can run:Example: Raspberry Pi generic with Broadcom VideoCore GPU support with Image Factory
Let’s assume we want to boot Talos on a Raspberry Pi with thevc4
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
:
Schematic example with vc4
system extension
The 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:
- https://factory.talos.dev/image/0db665edfda21c70194e7ca660955425d16cec2aa58ff031e2abf72b7c328585/${release_v1_11}/metal-arm64.raw.xz (download it and burn to a boot media)
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:
Example: Raspberry Pi generic with Broadcom VideoCore GPU support with Imager
Let’s assume we want to boot Talos on Raspberry Pi withrpi_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 Information
Refer to the default config.txt file used by the sbc-raspberrypi overlay.Configure the config.txt
file for usage with the vc4
system extension
Note: 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.
Troubleshooting
The following table can be used to troubleshoot booting issues: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 |
GPU Memory Issues
The Contiguous Memory Allocator (CMA) reserves physically contiguous memory for Raspberry Pi GPU/display operations (e.g., KMS/DRM rendering). An error likeDRM_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 |
Change CMA Size
Kernel Parameters: Set CMA size with thecma
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
):