mirror of
				https://github.com/siderolabs/talos.git
				synced 2025-10-31 00:11:36 +01:00 
			
		
		
		
	docs: add docs for overlays
Add docs for overlays. Signed-off-by: Noel Georgi <git@frezbo.dev>
This commit is contained in:
		
							parent
							
								
									9b6ec5929a
								
							
						
					
					
						commit
						6840119632
					
				| @ -121,8 +121,13 @@ machine: | |||||||
|     [notes.sbc] |     [notes.sbc] | ||||||
|         title = "SBC" |         title = "SBC" | ||||||
|         description = """\ |         description = """\ | ||||||
| Talos core will drop support for SBC's and will not include the SBC binaries in the release. | Talos has split the SBC's (Single Board Computers) into separate repositories. | ||||||
| *Overlays* are being developed to support SBC's. | There will not be any more SBC specific release assets as part of Talos release. | ||||||
|  | 
 | ||||||
|  | The default Talos Installer image will stop working for SBC's and will fail the upgrade, if used, starting from Talos v1.7.0. | ||||||
|  | 
 | ||||||
|  | The SBC's images and installers can be generated on the fly using [Image Factory](https://factory.talos.dev) or using [Imager](https://www.talos.dev/latest/talos-guides/install/boot-assets/) for custom images. | ||||||
|  | The list of official SBC's images supported by Image Factory can be found in the [Overlays](https://github.com/siderolabs/overlays/) repository. | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
|     [notes.syslog] |     [notes.syslog] | ||||||
|  | |||||||
| @ -4,10 +4,10 @@ no_list: true | |||||||
| linkTitle: "Documentation" | linkTitle: "Documentation" | ||||||
| cascade: | cascade: | ||||||
|   type: docs |   type: docs | ||||||
| lastRelease: v1.7.0-alpha.0 | lastRelease: v1.7.0-alpha.1 | ||||||
| kubernetesRelease: "1.30.0-beta.0" | kubernetesRelease: "1.30.0-beta.0" | ||||||
| prevKubernetesRelease: "1.28.3" | prevKubernetesRelease: "1.28.3" | ||||||
| nvidiaContainerToolkitRelease: "v1.13.5" | nvidiaContainerToolkitRelease: "v1.14.5" | ||||||
| nvidiaDriverRelease: "535.129.03" | nvidiaDriverRelease: "535.129.03" | ||||||
| preRelease: true | preRelease: true | ||||||
| --- | --- | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								website/content/v1.7/advanced/overlays.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								website/content/v1.7/advanced/overlays.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | --- | ||||||
|  | title: "Overlays" | ||||||
|  | description: "Overlays" | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | Overlays provide a way to customize Talos Linux boot image. | ||||||
|  | Overlays hook into the Talos install steps and can be used to provide additional boot assets (in the case of single board computers), | ||||||
|  | extra kernel arguments or some custom configuration that is not part of the default Talos installation and specific to a particular overlay. | ||||||
|  | 
 | ||||||
|  | ## Overlays v/s Extensions | ||||||
|  | 
 | ||||||
|  | Overlays are similar to extensions, but they are used to customize the installation process, while extensions are used to customize the root filesystem. | ||||||
|  | 
 | ||||||
|  | ## Official Overlays | ||||||
|  | 
 | ||||||
|  | The list of official overlays can be found in the [Overlays GitHub repository](https://github.com/siderolabs/overlays/). | ||||||
|  | 
 | ||||||
|  | ## Using Overlays | ||||||
|  | 
 | ||||||
|  | Overlays can be used to generate a modified metal image or installer image with the overlay applied. | ||||||
|  | 
 | ||||||
|  | The process of generating boot assets with overlays is described in the [boot assets guide]({{< relref "../talos-guides/install/boot-assets" >}}). | ||||||
|  | 
 | ||||||
|  | ### Example: Booting a Raspberry Pi 4 with an Overlay | ||||||
|  | 
 | ||||||
|  | Follow the board specific guide for [Raspberry Pi]({{< relref "../talos-guides/install/single-board-computers/rpi_generic" >}}) to download or generate the metal disk image and write to an SD card. | ||||||
|  | 
 | ||||||
|  | Boot the machine with the boot media and apply the machine configuration with the installer image that has the overlay applied. | ||||||
|  | 
 | ||||||
|  | ```yaml | ||||||
|  | # Talos machine configuration patch | ||||||
|  | machine: | ||||||
|  |   install: | ||||||
|  |     image: factory.talos.dev/installer/fc1cceeb5711cd263877b6b808fbf4942a8deda65e8804c114a0b5bae252dc50:{{< release >}} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | > Note: The schematic id shown in the above patch is for a vanilla `rpi_generic` overlay. | ||||||
|  | > Replace it with the schematic id of the overlay you want to apply. | ||||||
|  | 
 | ||||||
|  | ## Authoring Overlays | ||||||
|  | 
 | ||||||
|  | An Overlay is a container image with the [specific folder structure](https://github.com/siderolabs/overlays#readme). | ||||||
|  | Overlays can be built and managed using any tool that produces container images, e.g. `docker build`. | ||||||
|  | 
 | ||||||
|  | Sidero Labs maintains a [repository of overlays](https://github.com/siderolabs/overlays). | ||||||
| @ -5,7 +5,7 @@ description: "Table of supported Talos Linux versions and respective platforms." | |||||||
| --- | --- | ||||||
| 
 | 
 | ||||||
| | Talos Version                                                                                               | 1.7                                                                                                                                                                             | 1.6                                                                                                                                                              | | | Talos Version                                                                                               | 1.7                                                                                                                                                                             | 1.6                                                                                                                                                              | | ||||||
| |----------------------------------------------------------------------------------------------------------------|------------------------------------|------------------------------------| | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||||||
| | Release Date                                                                                                | 2024-04-15 (TBD)                                                                                                                                                                | 2023-12-15 (1.6.0)                                                                                                                                               | | | Release Date                                                                                                | 2024-04-15 (TBD)                                                                                                                                                                | 2023-12-15 (1.6.0)                                                                                                                                               | | ||||||
| | End of Community Support                                                                                    | 1.8.0 release (2024-08-15, TBD)                                                                                                                                                 | 1.7.0 release (2024-04-15)                                                                                                                                       | | | End of Community Support                                                                                    | 1.8.0 release (2024-08-15, TBD)                                                                                                                                                 | 1.7.0 release (2024-04-15)                                                                                                                                       | | ||||||
| | Enterprise Support                                                                                          | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/)                                                                                                              | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/)                                                                                               | | | Enterprise Support                                                                                          | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/)                                                                                                              | [offered by Sidero Labs Inc.](https://www.siderolabs.com/support/)                                                                                               | | ||||||
| @ -15,7 +15,7 @@ description: "Table of supported Talos Linux versions and respective platforms." | |||||||
| | - cloud                                                                                                     | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, OpenNebula, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud                                                                | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud                                                             | | | - cloud                                                                                                     | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, OpenNebula, OpenStack, Oracle Cloud, Scaleway, Vultr, Upcloud                                                                | AWS, GCP, Azure, Digital Ocean, Exoscale, Hetzner, 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                                                                                                         | | | - 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                                                                                                                               | | | - 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, Raspberry Pi 4B, Raspberry Pi Compute Module 4 | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4 | | | - 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 | Banana Pi M64, Jetson Nano, Libre Computer Board ALL-H3-CC, Nano Pi R4S, Pine64, Pine64 Rock64, Radxa ROCK Pi 4c, Raspberry Pi 4B, Raspberry Pi Compute Module 4 | | ||||||
| | - local                                                                                                     | Docker, QEMU                                                                                                                                                                    | Docker, QEMU                                                                                                                                                     | | | - local                                                                                                     | Docker, QEMU                                                                                                                                                                    | Docker, QEMU                                                                                                                                                     | | ||||||
| | **Cluster API**                                                                                             |                                                                                                                                                                                 |                                                                                                                                                                  | | | **Cluster API**                                                                                             |                                                                                                                                                                                 |                                                                                                                                                                  | | ||||||
| | [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos)         | >= 0.6.3                                                                                                                                                                        | >= 0.6.3                                                                                                                                                         | | | [CAPI Bootstrap Provider Talos](https://github.com/siderolabs/cluster-api-bootstrap-provider-talos)         | >= 0.6.3                                                                                                                                                                        | >= 0.6.3                                                                                                                                                         | | ||||||
|  | |||||||
| @ -48,6 +48,11 @@ customization: | |||||||
|     officialExtensions: # optional |     officialExtensions: # optional | ||||||
|       - siderolabs/gvisor |       - siderolabs/gvisor | ||||||
|       - siderolabs/amd-ucode |       - siderolabs/amd-ucode | ||||||
|  | overlay: # optional | ||||||
|  |   name: rpi_generic | ||||||
|  |   image: siderolabs/sbc-raspberry-pi | ||||||
|  |   options: # optional, any valid yaml, depends on the overlay implementation | ||||||
|  |     data: "mydata" | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| The "vanilla" schematic is: | The "vanilla" schematic is: | ||||||
|  | |||||||
| @ -10,19 +10,23 @@ can be customized further for a specific use case: | |||||||
| * updating [kernel command line arguments]({{< relref "../../reference/kernel" >}}) | * updating [kernel command line arguments]({{< relref "../../reference/kernel" >}}) | ||||||
| * using custom `META` contents, e.g. for [metal network configuration]({{< relref "../../advanced/metal-network-configuration" >}}) | * using custom `META` contents, e.g. for [metal network configuration]({{< relref "../../advanced/metal-network-configuration" >}}) | ||||||
| * generating [SecureBoot]({{< relref "../install/bare-metal-platforms/secureboot" >}}) images signed with a custom key | * generating [SecureBoot]({{< relref "../install/bare-metal-platforms/secureboot" >}}) images signed with a custom key | ||||||
|  | * generating disk images for SBC's (Single Board Computers) | ||||||
| 
 | 
 | ||||||
| There are two ways to generate Talos boot assets: | There are two ways to generate Talos boot assets: | ||||||
| 
 | 
 | ||||||
| * using [Image Factory]({{< relref "#image-factory" >}}) service (recommended) | * using [Image Factory]({{< relref "#image-factory" >}}) service (recommended) | ||||||
| * manually using [imager]({{< relref "#imager" >}}) container image (advanced) | * manually using [imager]({{< relref "#imager" >}}) container image (advanced) | ||||||
| 
 | 
 | ||||||
| Image Factory is easier to use, but it only produces images for official Talos Linux releases and official Talos Linux system extensions. | Image Factory is easier to use, but it only produces images for official Talos Linux releases, official Talos Linux system extensions | ||||||
|  | and official Talos Overlays. | ||||||
|  | 
 | ||||||
| The `imager` container can be used to generate images from `main` branch, with local changes, or with custom system extensions. | The `imager` container can be used to generate images from `main` branch, with local changes, or with custom system extensions. | ||||||
| 
 | 
 | ||||||
| ## Image Factory | ## Image Factory | ||||||
| 
 | 
 | ||||||
| [Image Factory]({{< relref "../../learn-more/image-factory" >}}) is a service that generates Talos boot assets on-demand. | [Image Factory]({{< relref "../../learn-more/image-factory" >}}) is a service that generates Talos boot assets on-demand. | ||||||
| Image Factory allows to generate boot assets for the official Talos Linux releases and official Talos Linux system extensions. | Image Factory allows to generate boot assets for the official Talos Linux releases, official Talos Linux system extensions | ||||||
|  | and official Talos Overlays. | ||||||
| 
 | 
 | ||||||
| The main concept of the Image Factory is a *schematic* which defines the customization of the boot asset. | The main concept of the Image Factory is a *schematic* which defines the customization of the boot asset. | ||||||
| Once the schematic is configured, Image Factory can be used to pull various Talos Linux images, ISOs, installer images, PXE booting bare-metal machines across different architectures, | Once the schematic is configured, Image Factory can be used to pull various Talos Linux images, ISOs, installer images, PXE booting bare-metal machines across different architectures, | ||||||
| @ -91,6 +95,54 @@ Same way upgrade process can be used to transition to a new set of system extens | |||||||
| talosctl upgrade --image factory.talos.dev/installer/<new_schematic_id>:{{< release >}} | talosctl upgrade --image factory.talos.dev/installer/<new_schematic_id>:{{< release >}} | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ### Example: Raspberry Pi generic with Image Factory | ||||||
|  | 
 | ||||||
|  | Let's assume we want to boot Talos on a Raspberry Pi with `iscsi-tools` system extension. | ||||||
|  | 
 | ||||||
|  | First, let's create the schematic file `rpi_generic.yaml`: | ||||||
|  | 
 | ||||||
|  | ```yaml | ||||||
|  | # rpi_generic.yaml | ||||||
|  | overlay: | ||||||
|  |   name: rpi_generic | ||||||
|  |   image: siderolabs/sbc-raspberrypi | ||||||
|  | customization: | ||||||
|  |   systemExtensions: | ||||||
|  |     officialExtensions: | ||||||
|  |       - siderolabs/iscsi-tools | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | > 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: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ curl -X POST --data-binary @rpi_generic.yaml https://factory.talos.dev/schematics | ||||||
|  | {"id":"0db665edfda21c70194e7ca660955425d16cec2aa58ff031e2abf72b7c328585"} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | The returned schematic 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 >}}/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: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | talosctl upgrade --image factory.talos.dev/installer/0db665edfda21c70194e7ca660955425d16cec2aa58ff031e2abf72b7c328585:<new_version> | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Same way upgrade process can be used to transition to a new set of system extensions: generate new schematic with the new set of system extensions, and upgrade the machine to the new schematic ID: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | talosctl upgrade --image factory.talos.dev/installer/<new_schematic_id>:{{< release >}} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ### Example: AWS with Image Factory | ### Example: AWS with Image Factory | ||||||
| 
 | 
 | ||||||
| Talos Linux is installed on AWS from a disk image (AWS AMI), so only a single boot asset is required. | Talos Linux is installed on AWS from a disk image (AWS AMI), so only a single boot asset is required. | ||||||
| @ -186,6 +238,22 @@ crane export ghcr.io/siderolabs/extensions:{{< release >}} | tar x -O image-dige | |||||||
| 
 | 
 | ||||||
| For each Talos release, the `ghcr.io/siderolabs/extensions:VERSION` image contains a pinned reference to each system extension container image. | For each Talos release, the `ghcr.io/siderolabs/extensions:VERSION` image contains a pinned reference to each system extension container image. | ||||||
| 
 | 
 | ||||||
|  | ### Overlay Image Reference | ||||||
|  | 
 | ||||||
|  | While Image Factory automatically resolves the overlay name into a matching container image for a specific version of Talos, `imager` requires the full explicit container image reference. | ||||||
|  | The `imager` also allows to install custom overlays which are not part of the official Talos overlays. | ||||||
|  | 
 | ||||||
|  | To get the official Talos overlays container image reference matching a Talos release, use the following command: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | crane export ghcr.io/siderolabs/overlays:{{< release >}} | tar x -O overlays.yaml | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | > Note: this command is using [crane](https://github.com/google/go-containerregistry/blob/main/cmd/crane/README.md) tool, but any other tool which allows | ||||||
|  | > to export the image contents can be used. | ||||||
|  | 
 | ||||||
|  | For each Talos release, the `ghcr.io/siderolabs/overlays:VERSION` image contains a pinned reference to each overlay container image. | ||||||
|  | 
 | ||||||
| ### Pulling from Private Registries | ### Pulling from Private Registries | ||||||
| 
 | 
 | ||||||
| Talos Linux official images are all public, but when pulling a custom image from a private registry, the `imager` might need authentication to access the images. | Talos Linux official images are all public, but when pulling a custom image from a private registry, the `imager` might need authentication to access the images. | ||||||
| @ -273,6 +341,82 @@ Now we can use the customized `installer` image to install Talos on the bare-met | |||||||
| 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 images to the matching versions. | 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 images to the matching versions. | ||||||
| The custom `installer` image can now be used to upgrade Talos machine. | The custom `installer` image can now be used to upgrade Talos machine. | ||||||
| 
 | 
 | ||||||
|  | ### Example: Raspberry Pi overlay with Imager | ||||||
|  | 
 | ||||||
|  | Let's assume we want to boot Talos on Raspberry Pi with `rpi_generic` overlay and `iscsi-tools` system extension. | ||||||
|  | 
 | ||||||
|  | First, let's lookup extension images for `iscsi-tools` in the [extensions repository](https://github.com/siderolabs/extensions): | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ crane export ghcr.io/siderolabs/extensions:{{< release >}} | tar x -O image-digests | grep -E 'iscsi-tools' | ||||||
|  | ghcr.io/siderolabs/iscsi-tools:v0.1.4@sha256:548b2b121611424f6b1b6cfb72a1669421ffaf2f1560911c324a546c7cee655e | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Next we'll lookup the overlay image for `rpi_generic` in the [overlays repository](https://github.com/siderolabs/overlays): | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ crane export ghcr.io/siderolabs/overlays:{{< release >}} | tar x -O overlays.yaml | yq '.overlays[] | select(.name=="rpi_generic")' | ||||||
|  | name: rpi_generic | ||||||
|  | image: ghcr.io/siderolabs/sbc-raspberrypi:v0.1.0 | ||||||
|  | digest: sha256:849ace01b9af514d817b05a9c5963a35202e09a4807d12f8a3ea83657c76c863 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Now we can generate the metal image with the following command: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ docker run --rm -t -v $PWD/_out:/out ghcr.io/siderolabs/imager:{{< release >}} rpi_generic --arch arm64 --system-extension-image ghcr.io/siderolabs/iscsi-tools:v0.1.4@sha256:548b2b121611424f6b1b6cfb72a1669421ffaf2f1560911c324a546c7cee655e --overlay-image ghcr.io/siderolabs/sbc-raspberrypi:v0.1.0@sha256:849ace01b9af514d817b05a9c5963a35202e09a4807d12f8a3ea83657c76c863 --overlay-name=rpi_generic | ||||||
|  | profile ready: | ||||||
|  | arch: arm64 | ||||||
|  | platform: metal | ||||||
|  | secureboot: false | ||||||
|  | version: {{< release >}} | ||||||
|  | input: | ||||||
|  |   kernel: | ||||||
|  |     path: /usr/install/arm64/vmlinuz | ||||||
|  |   initramfs: | ||||||
|  |     path: /usr/install/arm64/initramfs.xz | ||||||
|  |   baseInstaller: | ||||||
|  |     imageRef: ghcr.io/siderolabs/installer:{{< release >}} | ||||||
|  |   systemExtensions: | ||||||
|  |     - imageRef: ghcr.io/siderolabs/iscsi-tools:v0.1.4@sha256:a68c268d40694b7b93c8ac65d6b99892a6152a2ee23fdbffceb59094cc3047fc | ||||||
|  | overlay: | ||||||
|  |   name: rpi_generic | ||||||
|  |   image: | ||||||
|  |     imageRef: ghcr.io/siderolabs/sbc-raspberrypi:v0.1.0-alpha.1@sha256:849ace01b9af514d817b05a9c5963a35202e09a4807d12f8a3ea83657c76c863 | ||||||
|  | output: | ||||||
|  |   kind: image | ||||||
|  |   imageOptions: | ||||||
|  |     diskSize: 1306525696 | ||||||
|  |     diskFormat: raw | ||||||
|  |   outFormat: .xz | ||||||
|  | initramfs ready | ||||||
|  | kernel command line: talos.platform=metal console=tty0 console=ttyAMA0,115200 sysctl.kernel.kexec_load_disabled=1 talos.dashboard.disabled=1 init_on_alloc=1 slab_nomerge pti=on consoleblank=0 nvme_core.io_timeout=4294967295 printk.devkmsg=on ima_template=ima-ng ima_appraise=fix ima_hash=sha512 | ||||||
|  | disk image ready | ||||||
|  | output asset path: /out/metal-arm64.raw | ||||||
|  | compression done: /out/metal-arm64.raw.xz | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | 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): | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | $ docker run --rm -t -v $PWD/_out:/out ghcr.io/siderolabs/imager:{{< release >}} installer --arch arm64 --system-extension-image ghcr.io/siderolabs/iscsi-tools:v0.1.4@sha256:548b2b121611424f6b1b6cfb72a1669421ffaf2f1560911c324a546c7cee655e --overlay-image ghcr.io/siderolabs/sbc-raspberrypi:v0.1.0@sha256:849ace01b9af514d817b05a9c5963a35202e09a4807d12f8a3ea83657c76c863 --overlay-name=rpi_generic | ||||||
|  | ... | ||||||
|  | output asset path: /out/metal-arm64-installer.tar | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | The `installer` container image should be pushed to the container registry: | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | crane push _out/metal-arm64-installer.tar ghcr.io/<username></username>/installer:{{< release >}} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Now we can use the customized `installer` image to install Talos on Raspvberry 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. | ||||||
|  | 
 | ||||||
| ### Example: AWS with Imager | ### Example: AWS with Imager | ||||||
| 
 | 
 | ||||||
| Talos is installed on AWS from a disk image (AWS AMI), so only a single boot asset is required. | Talos is installed on AWS from a disk image (AWS AMI), so only a single boot asset is required. | ||||||
|  | |||||||
| @ -19,13 +19,16 @@ curl -Lo /usr/local/bin/talosctl https://github.com/siderolabs/talos/releases/do | |||||||
| chmod +x /usr/local/bin/talosctl | chmod +x /usr/local/bin/talosctl | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image using Image Factory | ||||||
|  | 
 | ||||||
|  | The default schematic id for "vanilla" Banana Pi M64 is `f48c47c8a27248bc19a878c086f2cb2ed0d5aff777688af95fc88f100d1048e1`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
| 
 | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-bananapi_m64-arm64.raw.xz | curl -LO https://factory.talos.dev/image/f48c47c8a27248bc19a878c086f2cb2ed0d5aff777688af95fc88f100d1048e1/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-bananapi_m64-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,7 +39,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-bananapi_m64-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -57,3 +60,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/f48c47c8a27248bc19a878c086f2cb2ed0d5aff777688af95fc88f100d1048e1:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -48,7 +48,7 @@ Next we will extract the L4T release and replace the `u-boot` binary with the pa | |||||||
| ```bash | ```bash | ||||||
| tar xf jetson-210_linux_r32.6.1_aarch64.tbz2 | tar xf jetson-210_linux_r32.6.1_aarch64.tbz2 | ||||||
| cd Linux_for_Tegra | cd Linux_for_Tegra | ||||||
| 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 | crane --platform=linux/arm64 export ghcr.io/siderolabs/sbc-jetson:v0.1.0 - | tar xf - --strip-components=4 -C bootloader/t210ref/p3450-0000/ artifacts/arm64/u-boot/jetson_nano/u-boot.bin | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Next we will flash the firmware to the Jetson Nano SPI flash. | Next we will flash the firmware to the Jetson Nano SPI flash. | ||||||
| @ -82,11 +82,14 @@ Once the flashing is done you can disconnect the USB cable and power off the Jet | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" Jetson Nano is `ef65b643766cc94c7eda6c42cb8fe009086d2b7b8066fd971950f4ef21708b5d`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-jetson_nano-arm64.raw.xz | curl -LO https://factory.talos.dev/image/ef65b643766cc94c7eda6c42cb8fe009086d2b7b8066fd971950f4ef21708b5d/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-jetson_nano-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -94,7 +97,7 @@ xz -d metal-jetson_nano-arm64.raw.xz | |||||||
| Now `dd` the image to your SD card/USB storage: | Now `dd` the image to your SD card/USB storage: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-jetson_nano-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M status=progress | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M status=progress | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| | Replace `/dev/mmcblk0` with the name of your SD card/USB storage. | | Replace `/dev/mmcblk0` with the name of your SD card/USB storage. | ||||||
| @ -117,3 +120,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/ef65b643766cc94c7eda6c42cb8fe009086d2b7b8066fd971950f4ef21708b5d:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -21,11 +21,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" Libretech H3 CC H5 is `9e6498be873621e4a40d5bcfe67ce873d58a2e7aea1079ae27754bdedf245c8c`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-libretech_all_h3_cc_h5-arm64.raw.xz | curl -LO https://factory.talos.dev/image/9e6498be873621e4a40d5bcfe67ce873d58a2e7aea1079ae27754bdedf245c8c/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-libretech_all_h3_cc_h5-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,12 +39,14 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-libretech_all_h3_cc_h5-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## 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. | Insert the SD card to your board, turn it on and wait for the console to show you the instructions for bootstrapping the node. | ||||||
|  | 
 | ||||||
|  | Create a `installer-patch.yaml` containing reference to the `installer` image generated from an overlay: | ||||||
| Following the instructions in the console output to connect to the interactive installer: | Following the instructions in the console output to connect to the interactive installer: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| @ -57,3 +62,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/9e6498be873621e4a40d5bcfe67ce873d58a2e7aea1079ae27754bdedf245c8c:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -21,11 +21,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" NanoPi R4S is `0609eb7bed621f87075729ed7c7410c3b5ee83fb42d10e2cdb1fd5c7b3a3325b`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rockpi_4-arm64.raw.xz | curl -LO https://factory.talos.dev/image/0609eb7bed621f87075729ed7c7410c3b5ee83fb42d10e2cdb1fd5c7b3a3325b/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-nanopi_r4s-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,7 +39,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-nanopi_r4s-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -57,3 +60,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/0609eb7bed621f87075729ed7c7410c3b5ee83fb42d10e2cdb1fd5c7b3a3325b:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -21,11 +21,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" Pine64 is `94cd4c4e285dc07059868f089f87c2437e1ed2746cc8d0fcbc0abbaf2b9a6729`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-pine64-arm64.raw.xz | curl -LO https://factory.talos.dev/image/94cd4c4e285dc07059868f089f87c2437e1ed2746cc8d0fcbc0abbaf2b9a6729/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-pine64-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,7 +39,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-pine64-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -57,3 +60,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/94cd4c4e285dc07059868f089f87c2437e1ed2746cc8d0fcbc0abbaf2b9a6729:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -0,0 +1,76 @@ | |||||||
|  | --- | ||||||
|  | title: "Radxa ROCK 4C Plus" | ||||||
|  | description: "Installing Talos on Radxa ROCK 4c Plus SBC using raw disk image." | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ## Prerequisites | ||||||
|  | 
 | ||||||
|  | You will need | ||||||
|  | 
 | ||||||
|  | - `talosctl` | ||||||
|  | - an SD card or an eMMC or USB drive or an nVME drive | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | 
 | ||||||
|  | The default schematic id for "vanilla" Rock 4c Plus is `2c086d74bbf7cc99cdac752a40990d4854f1202ac642d3c8e5171ddd22184b68`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
|  | Download the image and decompress it: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | curl -LO https://factory.talos.dev/image/2c086d74bbf7cc99cdac752a40990d4854f1202ac642d3c8e5171ddd22184b68/{{< release >}}/metal-arm64.raw.xz | ||||||
|  | xz -d metal-arm64.raw.xz | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Writing the Image | ||||||
|  | 
 | ||||||
|  | The path to your SD card/eMMC/USB/nVME 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 bs=4M | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | The user has two options to proceed: | ||||||
|  | 
 | ||||||
|  | - booting from a SD card or eMMC | ||||||
|  | 
 | ||||||
|  | ### Booting from SD card or eMMC | ||||||
|  | 
 | ||||||
|  | Insert the SD card into the board, turn it on and proceed to [bootstrapping the node](#bootstrapping-the-node). | ||||||
|  | 
 | ||||||
|  | ## Bootstrapping the Node | ||||||
|  | 
 | ||||||
|  | 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`. | ||||||
|  | 
 | ||||||
|  | ## Retrieve the `kubeconfig` | ||||||
|  | 
 | ||||||
|  | Retrieve the admin `kubeconfig` by running: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | talosctl kubeconfig | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/2c086d74bbf7cc99cdac752a40990d4854f1202ac642d3c8e5171ddd22184b68:{{< release >}} | ||||||
|  | ``` | ||||||
| @ -21,11 +21,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" Pine64 Rock64 is `a9dd1a551aa4098ff3e67916055cd5aec1f918d02faf2502d069bab84b2319de`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rock64-arm64.raw.xz | curl -LO https://factory.talos.dev/image/a9dd1a551aa4098ff3e67916055cd5aec1f918d02faf2502d069bab84b2319de/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-rock64-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,7 +39,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-rock64-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -57,3 +60,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/a9dd1a551aa4098ff3e67916055cd5aec1f918d02faf2502d069bab84b2319de:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -21,11 +21,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" RockPi 4 is `2f9c727db057ab731b7193a8d78b12fdc73022a40778920504c99a5d9be3f0b6`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rockpi_4-arm64.raw.xz | curl -LO https://factory.talos.dev/image/2f9c727db057ab731b7193a8d78b12fdc73022a40778920504c99a5d9be3f0b6/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-rockpi_4-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -36,7 +39,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-rockpi_4-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| The user has two options to proceed: | The user has two options to proceed: | ||||||
| @ -52,30 +55,9 @@ Insert the SD card into the board, turn it on and proceed to [bootstrapping the | |||||||
| 
 | 
 | ||||||
| This requires the user to flash the RockPi SPI flash with u-boot. | This requires the user to flash the RockPi SPI flash with u-boot. | ||||||
| 
 | 
 | ||||||
| This requires the user has access to [crane CLI](https://github.com/google/go-containerregistry/releases), a spare SD card and optionally access to the [RockPi serial console](https://wiki.radxa.com/Rockpi4/dev/serial-console). | Follow the Radxa docs on [Install on M.2 NVME SSD](https://wiki.radxa.com/Rockpi4/install/NVME) | ||||||
| 
 | 
 | ||||||
| - Flash the Rock PI 4c variant of [Debian](https://wiki.radxa.com/Rockpi4/downloads) to the SD card. | After these above steps, Talos will boot from the nVME/USB and enter maintenance mode. | ||||||
| - Boot into the debian image |  | ||||||
| - Check that /dev/mtdblock0 exists otherwise the command will silently fail; e.g. `lsblk`. |  | ||||||
| - Download u-boot image from talos u-boot: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| mkdir _out |  | ||||||
| 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 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| - Optionally, you can also write Talos image to the SSD drive right from your Rock PI board: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rockpi_4-arm64.raw.xz |  | ||||||
| xz -d metal-rockpi_4-arm64.raw.xz |  | ||||||
| sudo dd if=metal-rockpi_4-arm64.raw.xz of=/dev/nvme0n1 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| - remove SD card and reboot. |  | ||||||
| 
 |  | ||||||
| After these steps, Talos will boot from the nVME/USB and enter maintenance mode. |  | ||||||
| Proceed to [bootstrapping the node](#bootstrapping-the-node). | Proceed to [bootstrapping the node](#bootstrapping-the-node). | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -96,3 +78,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/2f9c727db057ab731b7193a8d78b12fdc73022a40778920504c99a5d9be3f0b6:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -19,11 +19,14 @@ chmod +x /usr/local/bin/talosctl | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" RockPi 4c is `a291c960717f5abad9b280c4c75bf067a4e63e339124ea814cb221f6000057d6`. | ||||||
|  | Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rockpi_4c-arm64.raw.xz | curl -LO https://factory.talos.dev/image/a291c960717f5abad9b280c4c75bf067a4e63e339124ea814cb221f6000057d6/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-rockpi_4c-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -34,7 +37,7 @@ In this example, we will assume `/dev/mmcblk0`. | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-rockpi_4c-arm64.img of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| The user has two options to proceed: | The user has two options to proceed: | ||||||
| @ -50,30 +53,9 @@ Insert the SD card into the board, turn it on and proceed to [bootstrapping the | |||||||
| 
 | 
 | ||||||
| This requires the user to flash the RockPi SPI flash with u-boot. | This requires the user to flash the RockPi SPI flash with u-boot. | ||||||
| 
 | 
 | ||||||
| This requires the user has access to [crane CLI](https://github.com/google/go-containerregistry/releases), a spare SD card and optionally access to the [RockPi serial console](https://wiki.radxa.com/Rockpi4/dev/serial-console). | Follow the Radxa docs on [Install on M.2 NVME SSD](https://wiki.radxa.com/Rockpi4/install/NVME) | ||||||
| 
 | 
 | ||||||
| - Flash the Rock PI 4c variant of [Debian](https://wiki.radxa.com/Rockpi4/downloads) to the SD card. | After these above steps, Talos will boot from the nVME/USB and enter maintenance mode. | ||||||
| - Boot into the debian image |  | ||||||
| - Check that /dev/mtdblock0 exists otherwise the command will silently fail; e.g. `lsblk`. |  | ||||||
| - Download u-boot image from talos u-boot: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| mkdir _out |  | ||||||
| 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 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| - Optionally, you can also write Talos image to the SSD drive right from your Rock PI board: |  | ||||||
| 
 |  | ||||||
| ```bash |  | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rockpi_4c-arm64.raw.xz |  | ||||||
| xz -d metal-rockpi_4c-arm64.raw.xz |  | ||||||
| sudo dd if=metal-rockpi_4c-arm64.raw.xz of=/dev/nvme0n1 |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| - remove SD card and reboot. |  | ||||||
| 
 |  | ||||||
| After these steps, Talos will boot from the nVME/USB and enter maintenance mode. |  | ||||||
| Proceed to [bootstrapping the node](#bootstrapping-the-node). | Proceed to [bootstrapping the node](#bootstrapping-the-node). | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -94,3 +76,11 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| ```bash | ```bash | ||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/a291c960717f5abad9b280c4c75bf067a4e63e339124ea814cb221f6000057d6:{{< release >}} | ||||||
|  | ``` | ||||||
|  | |||||||
| @ -44,11 +44,13 @@ Power off the Raspberry Pi and remove the SD card from it. | |||||||
| 
 | 
 | ||||||
| ## Download the Image | ## Download the Image | ||||||
| 
 | 
 | ||||||
|  | The default schematic id for "vanilla" Raspberry Pi generic image is `fc1cceeb5711cd263877b6b808fbf4942a8deda65e8804c114a0b5bae252dc50`.Refer to the [Image Factory](/../../../learn-more/image-factory) documentation for more information. | ||||||
|  | 
 | ||||||
| Download the image and decompress it: | Download the image and decompress it: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| curl -LO https://github.com/siderolabs/talos/releases/download/{{< release >}}/metal-rpi_generic-arm64.raw.xz | curl -LO https://factory.talos.dev/image/fc1cceeb5711cd263877b6b808fbf4942a8deda65e8804c114a0b5bae252dc50/{{< release >}}/metal-arm64.raw.xz | ||||||
| xz -d metal-rpi_generic-arm64.raw.xz | xz -d metal-arm64.raw.xz | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Writing the Image | ## Writing the Image | ||||||
| @ -56,7 +58,7 @@ xz -d metal-rpi_generic-arm64.raw.xz | |||||||
| Now `dd` the image to your SD card: | Now `dd` the image to your SD card: | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| sudo dd if=metal-rpi_generic-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | sudo dd if=metal-arm64.raw of=/dev/mmcblk0 conv=fsync bs=4M | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ## Bootstrapping the Node | ## Bootstrapping the Node | ||||||
| @ -81,6 +83,14 @@ Retrieve the admin `kubeconfig` by running: | |||||||
| talosctl kubeconfig | talosctl kubeconfig | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | ## Upgrading | ||||||
|  | 
 | ||||||
|  | For example, 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/fc1cceeb5711cd263877b6b808fbf4942a8deda65e8804c114a0b5bae252dc50:{{< release >}} | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## Troubleshooting | ## Troubleshooting | ||||||
| 
 | 
 | ||||||
| The following table can be used to troubleshoot booting issues: | The following table can be used to troubleshoot booting issues: | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user