Skip to content

milas/rock5-talos

 
 

Repository files navigation


🍴 Fork of siderolabs/talos to support Radxa Rock 5 🍴


Why does this exist?

Currently, the Radxa Rock 5B, like all other Rockchip RK3588-based boards, requires a BSP kernel. Additionally, there's no mature EFI bootloader support.

Due to this situation, until/if mainline Linux RK3588 support improves, it's not practical to support the board in its current state in the main Talos codebase. As a result, this is a "friendly fork": it exists to serve a specific niche and will cease to exist as soon as upstream support is practical. (I have no affiliation with Sidero Labs! But this is way too extensive & hacky to be reasonable to open a PR for.)

Please be respectful of upstream if you run into any problems. If there's any doubt about whether an issue is caused by this fork, err on the side of making an issue here first!

Device Support

Stable

In Progress

  • Rock 5A - UNTESTED (board is not released)

Install

💾 I've only tested this using eMMC, but it should work for an SD card as well

Flashable images are available from the releases.

You can write this to your eMMC/SD card using dd, Balena Etcher, etc.

Machine Configuration

Use the docker.io/milas/rock5-talos images instead of the upstream Talos Linux images. These include a modified version of Talos to support the Rock 5B in addition to the vendor U-Boot & kernel.

machine:
  install:
    # for eMMC, use /dev/mmcblk0
    # for SD card, use /dev/mmcblk1
    disk: /dev/mmcblk0
    image: docker.io/milas/rock5-talos:v1.3.5-rock5-rock-5b
    bootloader: true
    wipe: false

Building

Kernel

The kernel is built using the config at ./hack/boards/defconfig/rockchip_linux_defconfig.

Builds are done using milas/rock5-toolchain which provides a Dockerized build system to build the BSP kernel.

To build & push:

IMAGE="docker.io/milas/rock5-kernel-talos" docker buildx bake \
  --push \
  --set "kernel.tags=$IMAGE" \
  kernel

Talos Installer (OCI Container Image)

The Makefile has been modified slightly to add some Rock 5 specific options, which will be kept behind the ROCK5_ prefix to distinguish from the Talos ones. Review the Makefile to find the full set.

It's possible to pass a custom context for U-Boot. For example, this would build an image with the Collabora build of U-Boot for the 5B:

ROCK5_UBOOT='docker-image://milas/rock5-u-boot:latest-rock-5b-collabora'

To build & push:

make installer \
  PUSH=1 \
  IMAGE_NAME="rock5-talos" \
  ROCK5_BOARD="rock-5b" \
  PLATFORM="linux/arm64"

See Makefile for more variables, e.g. IMAGE_REGISTRY and USERNAME.

New installer container images are published on every commit and on tag for releases.

Flashable Talos Image (.img.xz)

You can create a flashable image as well after building & pushing the installer.

See Makefile for more variables, e.g. IMAGE_REGISTRY and USERNAME.

To create in ./_out/:

mkdir -p ./_out/
make sbc-rock_5b IMAGE_NAME="rock5-talos" IMAGE_TAG="latest" ROCK5_BOARD="rock-5b"

New flashable images are published for each Rock 5 Talos release.

Differences from siderolabs/talos

  • Support radxa/u-boot (#1):
    • Adjust partition offset logic
    • Remove BIOS/EFI partitions entirely
    • Change Talos root partition to ext4 from xfs
    • Add rk3588-rock-5b.dtb (& rk3588-uart7-m2.dtbo) directly to Talos root partition (these would normally be in the EFI partition)
    • Add (hardcoded) /extlinux/extlinux.conf directly to Talos root partition

      ⚠️ As U-Boot directly boots the kernel (no GRUB), extlinux.conf contains the kernel args, meaning there's no way to customize them right now since it's not templated/generated by the installer! (#3)

  • Support radxa/kernel:
    • Remove proc.sys.kernel.yama.ptrace_scope from KSPP list
    • Disable IMA policy
    • Add new step to systemRequirements phase to forcibly load the r8125 ethernet driver (#2)
    • Increase minimum installer size to account for the BSP kernel being ~1GB (#4)
    • No-op SystemInfoController (no SMBIOS support)

Resources

License

GitHub

Some software we distribute is under the General Public License family of licenses or other licenses that require we provide you with the source code. If you would like a copy of the source code for this software, please contact us via email: info at SideroLabs.com.

About

Friendly fork of Talos Linux for the Radxa Rock 5 SBCs

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 91.9%
  • JavaScript 1.6%
  • HTML 1.5%
  • Jinja 1.3%
  • Shell 1.1%
  • Dockerfile 0.8%
  • Other 1.8%