talos icon indicating copy to clipboard operation
talos copied to clipboard

Community managed SBCs

Open smira opened this issue 1 year ago • 2 comments

Rationale

Sidero Labs maintainers don't have access to all SBCs that ship with Talos, so testing is painful.

Talos Linux users want to get support for some SBCs which require out-of-tree u-boot, kernel patches, etc., which is hard to manage in main Talos Linux tree.

Solution

Drop SBC support in the main Talos Linux tree:

  • drop u-boot, SBC firmware
  • drop boards in the Talos tree

Create a new community-managed repository for Talos Linux SBC support.

Talos Linux still provides base arm64 kernel and modules for each SBC, but the final packaging/installation/bootloader step comes from the SBC repository.

Talos installer will provide a hook for the SBC-specific installer to write down SBC-specific firmware/bootloader bits, use custom kernel args.

Talos Linux might declare some SBCs to be officially supported, and ship official Talos images for them, add support to generate images via Image Factory, etc.

Some SBCs might not be declared as official, but there will be a way to generate an image still using the imager container.

Kernel

We might want to split SBC-specific kernel modules out of the main arm64 kernel, and include them into a system extension specific to the SBC (reducing arm64 kernel size).

### Tasks
- [ ] https://github.com/siderolabs/talos/issues/8349
- [ ] https://github.com/siderolabs/talos/issues/8353
- [ ] https://github.com/siderolabs/talos/issues/8356
- [ ] https://github.com/siderolabs/talos/issues/8354
- [ ] https://github.com/siderolabs/talos/issues/8355
- [ ] https://github.com/siderolabs/talos/issues/8350

smira avatar Dec 13 '23 16:12 smira

Hi 👋

I'm in the process of porting Talos for the Orange PI 5, and this separation strategy seems very appropriate to me.

How can I help move this issue forward?

schneid-l avatar Jan 26 '24 22:01 schneid-l

Hi there 👋

I'm still working on the port for the Orange Pi 5 (not functional at the moment...)

However, I'm taking advantage of my progress to start writing a few comments/advice on how it might be a good idea to set up this community-supported repo for SBCs.

Clearly, to make it easier to add SBCs, it might be simpler to allow dependencies that are not stable releases but release candidates, for example:

  • kernel v6.8-rc offers quite a few fixes for the rk3588 chip (the one in the Orange Pi 5), which means fewer patches need to be applied.
  • The same goes for u-boot with version v2024.04-rc.
  • For arm-trusted-firmware, there aren't really any release candidates, but patches may be necessary.

I think that allowing several versions of the packages to live with the possibility of using an specific version with related patches for each SBC would be a good option. Perhaps a common instance of the packages for each version could be proposed (with the patches shared) but I think that would increase the difficulty of maintenance as well as the size of the builds.

There are also dependencies on private/closed sources such as rkbin, which are not officially tagged (it's difficult to guarantee reproducibility during the build) but are necessary for some SBCs. Maybe Siderolabs will offer to maintain a forked and tagged version and agree to integrate it into a community repo for builds (I haven't looked into contaminant licences).

On the Talos side:

  • The kernel version is hardcoded in Talos, so we need to see how this can be made dynamic at compile time.
  • For the definition of boards in Go, we'll also have to find a way to make it more dynamic, it might be nice to be able to build Talos without depending on SBCs.

I've tried a minimalist approach where I've reimplemented the minimum for the Orange Pi 5 here if you'd like to take a look at it: https://github.com/si0ls/talos-orangepi5

I'm curious to discuss all this with you

Louis

schneid-l avatar Feb 11 '24 20:02 schneid-l

Would love to assist and help bring Talos Linux to RK3588 based Rock 5B

piersdd avatar Mar 21 '24 09:03 piersdd

Would love to assist and help bring Talos Linux to RK3588 based Rock 5B

Please take a look at https://github.com/siderolabs/sbc-rockchip/

frezbo avatar Mar 21 '24 09:03 frezbo

Would love to assist and help bring Talos Linux to RK3588 based Rock 5B

I started a repo for the Orange Pi 5 : https://github.com/si0ls/talos-orangepi5/

For the moment it's still not working as I need to apply some patches to the kernel I've decided not to implement the Siderolabs SBC template perfectly because there are currently no plans to allow a modified kernel.

@piersdd If you'd like to help me move forward on this port for the RK3588 and transform the repo into a multi-board support, I'd love to ;)

FYI @pl4nty and @nberlee already started a Turing RK1 repo on their side

schneid-l avatar Mar 21 '24 13:03 schneid-l

@si0ls @piersdd I recommend you take a look at https://github.com/edk2-porting/edk2-rk3588

With the UEFI firmware port, you should be able to run Talos generic arm64 images on the RK3588 chip.

DamiaPoquet avatar Mar 21 '24 13:03 DamiaPoquet

Fully available now with 1.7.0-beta.0.

smira avatar Apr 05 '24 16:04 smira