chore: generic raspberry pi images

Use generic Raspberry Pi images. Deprecate the RPi4 specific image.

Ref: https://github.com/siderolabs/pkgs/pull/596

Signed-off-by: Noel Georgi <git@frezbo.dev>
This commit is contained in:
Noel Georgi 2022-09-27 13:11:40 +05:30
parent d914ab8bb4
commit 6bd3cca1a8
No known key found for this signature in database
GPG Key ID: B1F736354201D483
10 changed files with 121 additions and 10 deletions

View File

@ -14,7 +14,7 @@ NAME = Talos
ARTIFACTS := _out
TOOLS ?= ghcr.io/siderolabs/tools:v1.3.0-alpha.0-14-g5df6589
PKGS ?= v1.3.0-alpha.0-24-gd5633d4
PKGS ?= v1.3.0-alpha.0-25-g0ac7773
EXTRAS ?= v1.2.0
GO_VERSION ?= 1.19
GOIMPORTS_VERSION ?= v0.1.11

View File

@ -36,6 +36,14 @@ machine:
title = "Nano Pi R4S"
description = """\
Talos now supports the Nano Pi R4S SBC.
"""
[notes.sbc1]
title = "Raspberry Generic Images"
description = """\
The Raspberry Pi 4 specific image has been deprecated and will be removed in the v1.4 release of Talos.
Talos now ships a generic Raspberry Pi image that should support more Raspberry Pi variants.
Refer to the docs at https://www.talos.dev/v1.3/talos-guides/install/single-board-computers/rpi_generic/ to find which ones are supported.
"""
[notes.updates]

View File

@ -5,8 +5,6 @@ gpu_mem=32
# only the one closest to the power/USB-C port will work in practice.
hdmi_safe:0=1
hdmi_safe:1=1
armstub=bl31.bin
enable_gic=1
# Load U-Boot.
kernel=u-boot.bin
# Forces the kernel loading system to assume a 64-bit kernel.

View File

@ -5,7 +5,6 @@ gpu_mem=32
# only the one closest to the power/USB-C port will work in practice.
hdmi_safe:0=1
hdmi_safe:1=1
enable_gic=1
# Load U-Boot.
kernel=u-boot.bin
# Forces the kernel loading system to assume a 64-bit kernel.

View File

@ -1 +1 @@
v1.3.0-alpha.0-24-gd5633d4
v1.3.0-alpha.0-25-g0ac7773

View File

@ -1,7 +1,7 @@
---
title: "Jetson Nano"
description: "Installing Talos on Jetson Nano SBC using raw disk image."
aliases:
aliases:
- ../../../single-board-computers/jetson_nano
---
@ -48,7 +48,7 @@ Next we will extract the L4T release and replace the `u-boot` binary with the pa
```bash
tar xf jetson-210_linux_r32.6.1_aarch64.tbz2
cd Linux_for_Tegra
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.1.0-alpha.0-42-gcd05ae8 - | tar xf - --strip-components=1 -C bootloader/t210ref/p3450-0000/ jetson_nano/u-boot.bin
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.3.0-alpha.0-25-g0ac7773 - | tar xf - --strip-components=1 -C bootloader/t210ref/p3450-0000/ jetson_nano/u-boot.bin
```
Next we will flash the firmware to the Jetson Nano SPI flash.

View File

@ -61,7 +61,7 @@ This requires the user has access to [crane CLI](https://github.com/google/go-co
```bash
mkdir _out
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.1.0-alpha.0-19-g6691342 - | tar xf - --strip-components=1 -C _out rockpi_4/rkspi_loader.img
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.3.0-alpha.0-25-g0ac7773 - | tar xf - --strip-components=1 -C _out rockpi_4/rkspi_loader.img
sudo dd if=rkspi_loader.img of=/dev/mtdblock0 bs=4K
```

View File

@ -59,7 +59,7 @@ This requires the user has access to [crane CLI](https://github.com/google/go-co
```bash
mkdir _out
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.1.0-alpha.0-19-g6691342 - | tar xf - --strip-components=1 -C _out rockpi_4c/rkspi_loader.img
crane --platform=linux/arm64 export ghcr.io/siderolabs/u-boot:v1.3.0-alpha.0-25-g0ac7773 - | tar xf - --strip-components=1 -C _out rockpi_4c/rkspi_loader.img
sudo dd if=rkspi_loader.img of=/dev/mtdblock0 bs=4K
```

View File

@ -1,10 +1,13 @@
---
title: "Raspberry Pi 4 Model B"
description: "Installing Talos on Rpi4 SBC using raw disk image."
aliases:
aliases:
- ../../../single-board-computers/rpi_4
---
> The Raspberry Pi specific image is now deprecated and Talos will continue to use a generic image for the various Raspberry Pi models as supported by [u-boot](https://github.com/u-boot/u-boot/blob/master/doc/board/broadcom/raspberrypi.rst#64-bit) `rpi_arm64_defconfig`.
Refer to the generic docs available [here]({{< relref "rpi_generic" >}})
## Video Walkthrough
To see a live demo of this writeup, see the video below:

View File

@ -0,0 +1,103 @@
---
title: "Raspberry Pi Series"
description: "Installing Talos on Raspberry Pi SBC's using raw disk image."
aliases:
- ../../../single-board-computers/rpi_generic
---
Talos disk image for the Raspberry Pi generic should in theory work for the boards supported by [u-boot](https://github.com/u-boot/u-boot/blob/master/doc/board/broadcom/raspberrypi.rst#64-bit) `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:
<iframe width="560" height="315" src="https://www.youtube.com/embed/aHu1lFir7UU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## 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
```
## Updating the EEPROM
Use [Raspberry Pi Imager](https://www.raspberrypi.com/software/) 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
Download the image and decompress it:
```bash
curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rpi_generic-arm64.img.xz
xz -d metal-rpi_generic-arm64.img.xz
```
## Writing the Image
Now `dd` the image to your SD card:
```bash
sudo dd if=metal-rpi_4-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M
```
## 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:
```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`.
> 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:
```bash
talosctl kubeconfig
```
## 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 |