Skip to content

Commit

Permalink
docs: add Radxa ROCK 5B docs to Single Board Computer section
Browse files Browse the repository at this point in the history
This adds documentation on how to setup a ROCK 5B with Talos initally
and it adds the SBC to the support matrix.

It also fixes a typo of an unreferenced link alias.

Signed-off-by: Christoph Hoopmann <[email protected]>
  • Loading branch information
choopm committed Jan 15, 2025
1 parent c774835 commit ccfbe3f
Show file tree
Hide file tree
Showing 6 changed files with 266 additions and 2 deletions.
2 changes: 1 addition & 1 deletion website/content/v1.10/introduction/support-matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ description: "Table of supported Talos Linux versions and respective platforms."
| - cloud | Akamai, AWS, GCP, Azure, CloudStack, Digital Ocean, Exoscale, Hetzner, OpenNebula, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud | Akamai, AWS, GCP, Azure, CloudStack, Digital Ocean, Exoscale, Hetzner, OpenNebula, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud |
| - bare metal | x86: BIOS, UEFI, SecureBoot; arm64: UEFI, SecureBoot; boot: ISO, PXE, disk image | x86: BIOS, UEFI; arm64: UEFI; boot: ISO, PXE, disk image |
| - virtualized | VMware, Hyper-V, KVM, Proxmox, Xen | VMware, Hyper-V, KVM, Proxmox, Xen |
| - SBCs | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Radxa Rock4c+, Raspberry Pi 4B, Raspberry Pi Compute Module 4, Turing RK1 | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Orange Pi R1 Plus LTS, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4, Turing RK1 |
| - SBCs | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Radxa ROCK 4c+, Radxa ROCK 5B, Raspberry Pi 4B, Raspberry Pi Compute Module 4, Turing RK1 | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Orange Pi R1 Plus LTS, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4, Turing RK1 |
| - local | Docker, QEMU | Docker, QEMU |
| **Omni** | | |
| [Omni](https://github.com/siderolabs/omni) | >= 0.45.0 | >= 0.45.0 |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: "Disk Management"
description: "Guide on managing disks"
aliases:
- ../../guides/disk-management
---

Talos Linux version 1.8.0 introduces a new backend for managing system and user disks.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Logging"
description: "Dealing with Talos Linux logs."
aliases:
- ../../guiides/logging
- ../../guides/logging
---

## Viewing logs
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
title: "Radxa ROCK 5B"
description: "Installing Talos on Radxa ROCK 5B SBC using raw disk image."
aliases:
- ../../../single-board-computers/rock5b
---

## Prerequisites

You will need

- `talosctl`
- an SD card

Download the latest `talosctl`.

```bash
curl -Lo /usr/local/bin/talosctl https://github.com/siderolabs/talos/releases/download/{{< release >}}/talosctl-$(uname -s | tr "[:upper:]" "[:lower:]")-amd64
chmod +x /usr/local/bin/talosctl
```

## Download the Image

Visit the [Image Factory](https://factory.talos.dev/), select `Single Board Computers`, select the version and select `Radxa ROCK 5B` from the options.

Choose `realtek-firmware` and any other desired extension.
Next fill in the kernel command line arguments if needed.

Download the image and decompress it:

```bash
curl -LO https://factory.talos.dev/image/[uuid]/{{< release >}}/metal-arm64.raw.xz
xz -d metal-arm64.raw.xz
```

Note the `uuid` as it might be helpful during [upgrades](#upgrading).

## Writing the Image

This guide assumes the node should boot from SD card.
Booting from eMMC or NVMe has not been tested yet.

The path to your SD card can be found using `fdisk` on Linux or `diskutil` on macOS.
In this example, we will assume `/dev/mmcblk0`.

Now `dd` the image to your SD card:

```bash
sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync oflag=direct status=progress bs=4M
```

## First boot

Insert the SD card into the board, turn it on and proceed to [bootstrapping the node](#bootstrapping-the-node).

### Bootstrapping the Node

Your node will appear on your local network after it has booted successfully.
You can then proceed to configure it:

```bash
talosctl apply-config --insecure --mode=interactive --nodes <node IP or DNS name>
```

Once the interactive installation is applied, the cluster will form and you can then use `kubectl`.

### Retrieve the `kubeconfig`

Retrieve the admin `kubeconfig` by running:

```bash
talosctl kubeconfig
```

## Upgrading

To upgrade to the latest version of Talos, you can run:

```bash
talosctl -n <node IP or DNS name> upgrade --image=factory.talos.dev/installer/[uuid]:{{< release >}}
```

## Troubleshooting

### Serial console

If you experience any issues you can check the serial console.
Follow the [official guideline](https://wiki.radxa.com/Rock5/dev/serial-console)
on how to connect a serial adapter.

Hint: The rock5b overlay uses baudrate of `115200` instead of the default `1500000`

### Power supplies and endless restarts

It is a known issue that USB Power Delivery negotiation is performed at a late stage in kernel.
This can lead to endless restarts if the power supply cuts power to early.
Check the list of [known working](https://wiki.radxa.com/Rock5/5b/power_supply) power supplies.

## Tips and tricks

### EPHEMERAL on NVMe

The Radxa ROCK 5B SBC provides a M.2 NVMe SSD slot.

This allows to use a separate disk for the EPHEMERAL partition by following
[Disk Management]({{< relref "../../configuration/disk-management" >}}).

Add something similar to the machine configuration before
[bootstrapping the node](#bootstrapping-the-node) to make use of a M.2 NVMe SSD:

```yaml
# worker.yaml
---
version: v1alpha1
debug: false
persist: true
machine:
# ...
cluster:
# ...
---
apiVersion: v1alpha1
kind: VolumeConfig
name: EPHEMERAL
provisioning:
diskSelector:
match: disk.transport == 'nvme'
minSize: 100GB
grow: true
```
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: "Disk Management"
description: "Guide on managing disks"
aliases:
- ../../guides/disk-management
---

Talos Linux version 1.8.0 introduces a new backend for managing system and user disks.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
title: "Radxa ROCK 5B"
description: "Installing Talos on Radxa ROCK 5B SBC using raw disk image."
aliases:
- ../../../single-board-computers/rock5b
---

## Prerequisites

You will need

- `talosctl`
- an SD card

Download the latest `talosctl`.

```bash
curl -Lo /usr/local/bin/talosctl https://github.com/siderolabs/talos/releases/download/{{< release >}}/talosctl-$(uname -s | tr "[:upper:]" "[:lower:]")-amd64
chmod +x /usr/local/bin/talosctl
```

## Download the Image

Visit the [Image Factory](https://factory.talos.dev/), select `Single Board Computers`, select the version and select `Radxa ROCK 5B` from the options.

Choose `realtek-firmware` and any other desired extension.
Next fill in the kernel command line arguments if needed.

Download the image and decompress it:

```bash
curl -LO https://factory.talos.dev/image/[uuid]/{{< release >}}/metal-arm64.raw.xz
xz -d metal-arm64.raw.xz
```

Note the `uuid` as it might be helpful during [upgrades](#upgrading).

## Writing the Image

This guide assumes the node should boot from SD card.
Booting from eMMC or NVMe has not been tested yet.

The path to your SD card can be found using `fdisk` on Linux or `diskutil` on macOS.
In this example, we will assume `/dev/mmcblk0`.

Now `dd` the image to your SD card:

```bash
sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync oflag=direct status=progress bs=4M
```

## First boot

Insert the SD card into the board, turn it on and proceed to [bootstrapping the node](#bootstrapping-the-node).

### Bootstrapping the Node

Your node will appear on your local network after it has booted successfully.
You can then proceed to configure it:

```bash
talosctl apply-config --insecure --mode=interactive --nodes <node IP or DNS name>
```

Once the interactive installation is applied, the cluster will form and you can then use `kubectl`.

### Retrieve the `kubeconfig`

Retrieve the admin `kubeconfig` by running:

```bash
talosctl kubeconfig
```

## Upgrading

To upgrade to the latest version of Talos, you can run:

```bash
talosctl -n <node IP or DNS name> upgrade --image=factory.talos.dev/installer/[uuid]:{{< release >}}
```

## Troubleshooting

### Serial console

If you experience any issues you can check the serial console.
Follow the [official guideline](https://wiki.radxa.com/Rock5/dev/serial-console)
on how to connect a serial adapter.

Hint: The rock5b overlay uses baudrate of `115200` instead of the default `1500000`

### Power supplies and endless restarts

It is a known issue that USB Power Delivery negotiation is performed at a late stage in kernel.
This can lead to endless restarts if the power supply cuts power to early.
Check the list of [known working](https://wiki.radxa.com/Rock5/5b/power_supply) power supplies.

## Tips and tricks

### EPHEMERAL on NVMe

The Radxa ROCK 5B SBC provides a M.2 NVMe SSD slot.

This allows to use a separate disk for the EPHEMERAL partition by following
[Disk Management]({{< relref "../../configuration/disk-management" >}}).

Add something similar to the machine configuration before
[bootstrapping the node](#bootstrapping-the-node) to make use of a M.2 NVMe SSD:

```yaml
# worker.yaml
---
version: v1alpha1
debug: false
persist: true
machine:
# ...
cluster:
# ...
---
apiVersion: v1alpha1
kind: VolumeConfig
name: EPHEMERAL
provisioning:
diskSelector:
match: disk.transport == 'nvme'
minSize: 100GB
grow: true
```

0 comments on commit ccfbe3f

Please sign in to comment.