From 16ed5a3a19c11c5730b6d6b88491c86793bb2bd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Tue, 2 Jun 2020 18:48:24 +0300 Subject: [PATCH] A bit more details on the ARM 64-bit documentation --- docs/arm.md | 62 ++++++++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/docs/arm.md b/docs/arm.md index cc76f7250..18b9c0e19 100644 --- a/docs/arm.md +++ b/docs/arm.md @@ -1,53 +1,47 @@ -# Using ignite on ARM +# Using Ignite on ARM64 -Ignite had been tested to function on Raspberry Pi 3 and 4. -These instructions should be helpful in using ignite on other ARM machines such as those in the cloud. +Ignite has been tested to function on Raspberry Pi 4, as well as arm64 cloud machines. +These instructions should be helpful in using Ignite on other ARM machines such as those in the cloud. -Ignite depends on [firecracker's](https://firecracker-microvm.github.io/) ARM support. +The general takeaway is that Ignite on arm64 Ubuntu should work out of the box, given a kernel that supports KVM. + +Ignite depends on [Firecracker's](https://firecracker-microvm.github.io/) ARM 64-bit support. Ignite and Firecracker are currently built for `arm64`, also known as `aarch64`. -# OS +## OS & Kernel + +Ignite was tested on a Raspberry Pi 4 with Raspberry Pi OS and Gentoo arm64 OSes. -Ignite was tested on a Raspberry Pi 4 with a Gentoo arm64 base. -See sakaki's [gentoo-on-rpi-64bit](https://github.com/sakaki-/gentoo-on-rpi-64bit) guide to get started. +See the guide at [sakaki-/gentoo-on-rpi-64bit](https://github.com/sakaki-/gentoo-on-rpi-64bit) guide to get started with gentoo, or alternatively use [sakaki-/bcm2711-kernel-bis](https://github.com/sakaki-/bcm2711-kernel-bis) if you want to use Raspberry Pi OS. -# KVM and storage dependencies -On Gentoo, the packages mentioned via apt in the normal install docs (`dmsetup`,`kvm-ok`, etc.) are available via Gentoo's Portage. -In our test setup, we did not need to explicitly install these. +## KVM and storage dependencies -# containerd -You will need to install containerd. -Currently, the containerd project does not publish arm64 binaries on [GitHub Releases](https://github.com/containerd/containerd/releases). -You may build your own using the containerd repo or potentially fetch a build from DockerHub using this [search query](https://hub.docker.com/search?q=containerd&type=image&architecture=arm64); linuxkit has an arm64 Dockerfile and build that is available: ([link](https://hub.docker.com/r/linuxkit/containerd/tags?page=1&name=arm64)). +For Raspberry Pi OS, you can follow the normal installation procedure as for Ubuntu. -#### example of extracting containerd from the linuxkit docker image: -We can fetch the binaries from this image. See the linked tags for the most recent SHA. -```shell -docker container create --name ctrd-arm linuxkit/containerd:6ef473a228db6f6ee163f9b9a051102a1552a4ef-arm64 -- echo hi -docker cp ctrd-arm:/usr/bin/ ./linuxkit-containerd-arm -docker rm ctrd-arm +On Gentoo, the packages mentioned via apt in the normal install docs (`dmsetup`,`kvm-ok`, etc.) are available via Gentoo's Portage. In our test setup, we did not need to explicitly install these. -find ./linuxkit-containerd-arm -``` +## containerd -Now you may install these binaries into the appropriate place on your `$PATH` and configure your containerd [`config.toml`](https://github.com/containerd/containerd/blob/master/docs/man/containerd-config.toml.5.md) and [service unit/init](https://github.com/containerd/containerd/blob/master/containerd.service) file. +For Raspberry Pi OS, you can follow the normal installation procedure as for Ubuntu. -# Docker -If you choose to use the docker runtime instead of ignite's default support for containerd, you may install Docker's arm64 binaries. -In our test setup, we installed docker with `emerge`. +We don't know of a built-in way to install containerd on Gentoo, but you can extract the deb package manually from [Ubuntu's arm64 package](http://ports.ubuntu.com/ubuntu-ports/pool/main/c/containerd/). + +## CNI -# CNI CNI may be installed with the normal instructions. Just remember to change the architecture to `arm64`. The minimum CNI version supported is `v0.8.5`. -# Ignite -Install the arm64 release binaries +## Ignite + +Install the arm64 release binaries as documented in the release notes. + +## Sandbox / Kernel / OS container images + +The Ignite sandbox and kernel images are published using manifest lists, in exactly the same way as for amd64. + +For OS images, only Ubuntu ([weaveworks/ignite-ubuntu:latest](https://hub.docker.com/r/weaveworks/ignite-ubuntu/tags)) is tagged to support multiple architectures. For this one however, you will not need to change any of the default image names. -# Sandbox / Kernel -The ignite sandbox and kernel images are published using manifest lists. -This means that an image like [weaveworks/ignite-ubuntu:latest](https://hub.docker.com/r/weaveworks/ignite-ubuntu/tags) is tagged to support multiple architectures. -You will not need to change any of the default image names. We do publish arch-specific tags if you would like to specify them explicitly or pull them and push them to another registry that doesn't support manifest lists. -If you want to use your own images, make sure that they are built for an armhf or arm64 kernel and userspace. +If you want to use your own images, make sure that they are built for an armhf or arm64 kernel and userspace. If you'd like to have support for other OSes than Ubuntu on arm64 let us know.