1# syntax=docker/dockerfile:1
2FROM --platform=linux/amd64 debian:bookworm
3LABEL maintainer.name="The Xen Project" \
4      maintainer.email="xen-devel@lists.xenproject.org"
5
6ENV DEBIAN_FRONTEND=noninteractive
7ENV LINUX_VERSION=6.1.19
8ENV USER root
9
10RUN mkdir /build
11WORKDIR /build
12
13# build depends
14RUN apt-get update && \
15    apt-get --quiet --yes install \
16        build-essential \
17        bc \
18        curl \
19        flex \
20        bison \
21        libelf-dev \
22        && \
23    apt-get autoremove -y && \
24    apt-get clean && \
25    rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
26
27# Build the kernel
28RUN curl -fsSLO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"$LINUX_VERSION".tar.xz && \
29    tar xvJf linux-"$LINUX_VERSION".tar.xz && \
30    cd linux-"$LINUX_VERSION" && \
31    make defconfig && \
32    make xen.config && \
33    scripts/config --enable BRIDGE && \
34    scripts/config --enable IGC && \
35    scripts/config --enable TUN && \
36    cp .config .config.orig && \
37    cat .config.orig | grep XEN | grep =m |sed 's/=m/=y/g' >> .config && \
38    make -j$(nproc) bzImage && \
39    cp arch/x86/boot/bzImage / && \
40    cd /build && \
41    rm -rf linux-"$LINUX_VERSION"*
42