From c2df261e0123daac442b6b93353d27b21569e2eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Dalleau?= <79831213+fredericdalleau@users.noreply.github.com> Date: Fri, 28 Apr 2023 10:49:08 +0200 Subject: [PATCH] Add a target for building kernel with buildx (#3792) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use latest kernel in linuxkit Signed-off-by: Frédéric Dalleau * Parallelize kernel source compression This surpringly saves a lot of time: M1: from 340 to 90 seconds Intel: from 527 to 222 seconds (2 cores 4 threads) Signed-off-by: Frédéric Dalleau * Add buildx target buildx can use remote builders and automatically generate the multiarch manifest. A properly configured builder is required : First create docker context for the remote builders : $ docker context create node- --docker "host=ssh://@" Then create a buildx configuration using the remote builders: $ docker buildx create --name kernel_builder --platform linux/amd64 $ docker buildx create --name kernel_builder --node node-arm64 --platform linux/arm64 --append $ docker buildx use kernel_builder $ docker buildx ls Signed-off-by: Frédéric Dalleau * Add a PLATFORMS variable to declare platforms needed for buildx Signed-off-by: Frédéric Dalleau * Make image name customizable Signed-off-by: Frédéric Dalleau * Do not tag use the architecture suffix for images built with buildx Signed-off-by: Frédéric Dalleau * Add make kconfigx to upgrade configs using buildx To update configuration for 5.10 kernels use : make -C kernel KERNEL_VERSIONS=5.10.104 kconfigx Signed-off-by: Frédéric Dalleau --------- Signed-off-by: Frédéric Dalleau --- kernel/Dockerfile | 2 +- kernel/Dockerfile.kconfigx | 71 ++++++++++++++++++++++++++++++++++++++ kernel/Makefile | 34 +++++++++++++++++- linuxkit.yml | 2 +- 4 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 kernel/Dockerfile.kconfigx diff --git a/kernel/Dockerfile b/kernel/Dockerfile index 629ca423f7..609f0a6535 100644 --- a/kernel/Dockerfile +++ b/kernel/Dockerfile @@ -103,7 +103,7 @@ RUN set -e && \ fi # Save kernel source -RUN tar cJf /out/src/linux.tar.xz /linux +RUN XZ_DEFAULTS="-T0" tar cJf /out/src/linux.tar.xz /linux # Kernel config RUN case $(uname -m) in \ diff --git a/kernel/Dockerfile.kconfigx b/kernel/Dockerfile.kconfigx new file mode 100644 index 0000000000..94da3b971f --- /dev/null +++ b/kernel/Dockerfile.kconfigx @@ -0,0 +1,71 @@ +# syntax=docker/dockerfile:1.3-labs + +ARG BUILD_IMAGE + +FROM ${BUILD_IMAGE} AS kernel-build +ARG KERNEL_VERSIONS +ARG TARGETARCH + +RUN apk add \ + argp-standalone \ + bison \ + build-base \ + curl \ + diffutils \ + flex \ + gmp-dev \ + libarchive-tools \ + mpc1-dev \ + mpfr-dev \ + ncurses-dev \ + patch \ + xz + +COPY / / + +# Unpack kernels (download if not present) +RUN <