forked from linuxkit/linuxkit
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a target for building kernel with buildx (linuxkit#3792)
* Use latest kernel in linuxkit Signed-off-by: Frédéric Dalleau <[email protected]> * 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 <[email protected]> * 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-<arch> --docker "host=ssh://<user>@<host>" 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 <[email protected]> * Add a PLATFORMS variable to declare platforms needed for buildx Signed-off-by: Frédéric Dalleau <[email protected]> * Make image name customizable Signed-off-by: Frédéric Dalleau <[email protected]> * Do not tag use the architecture suffix for images built with buildx Signed-off-by: Frédéric Dalleau <[email protected]> * 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 <[email protected]> --------- Signed-off-by: Frédéric Dalleau <[email protected]>
- Loading branch information
1 parent
eb81457
commit c2df261
Showing
4 changed files
with
106 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <<EOF | ||
set -e | ||
for VERSION in ${KERNEL_VERSIONS}; do | ||
MAJOR=$(echo ${VERSION} | cut -d . -f 1) | ||
MAJOR=v${MAJOR}.x | ||
echo "Downloading/Unpacking $VERSION" | ||
KERNEL_SOURCE=https://www.kernel.org/pub/linux/kernel/${MAJOR}/linux-${VERSION}.tar.xz | ||
if [ ! -f sources/linux-${VERSION}.tar.xz ] ; then | ||
curl -fSLo sources/linux-${VERSION}.tar.xz --create-dirs ${KERNEL_SOURCE} | ||
fi | ||
bsdtar xf sources/linux-${VERSION}.tar.xz | ||
done | ||
EOF | ||
|
||
# Apply patches to all kernels and move config files into place | ||
RUN <<EOF | ||
set -e | ||
for VERSION in ${KERNEL_VERSIONS}; do | ||
SERIES=${VERSION%.*}.x | ||
echo "Patching $VERSION $SERIES" | ||
cd /linux-${VERSION} | ||
if [ -d /patches-${SERIES} ]; then | ||
for patch in /patches-${SERIES}/*.patch; do | ||
echo "Applying $patch" | ||
patch -t -F0 -N -u -p1 < "$patch" | ||
done | ||
fi | ||
if [ ${TARGETARCH} = "amd64" ] ; then | ||
cp /config-${SERIES}-x86_64 .config | ||
ARCH=x86 make oldconfig | ||
ls | ||
elif [ ${TARGETARCH} = "arm64" ] ; then | ||
cp /config-${SERIES}-aarch64 .config | ||
ARCH=arm64 make oldconfig | ||
fi | ||
done | ||
EOF | ||
|
||
ENTRYPOINT ["/bin/sh"] | ||
|
||
FROM scratch | ||
ARG KERNEL_VERSIONS | ||
ARG TARGETARCH | ||
WORKDIR / | ||
COPY --from=kernel-build /linux-${KERNEL_VERSIONS}/.config config-${KERNEL_VERSIONS}-$TARGETARCH |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters