mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-01-13 23:07:41 +00:00
These headers are needed for defining kernel probes etc, tested with eBPF. Could also be used for perf, building kernel modules etc. Saved to the media tarball at present, may add to base image or container. Also rationalise the paths in the headers tarball a little to match. Will add an eBPF container using these later. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
55 lines
2.1 KiB
Docker
55 lines
2.1 KiB
Docker
# Tag: b77cfc4ad0033d4366df830ed697afc7bab458a2
|
|
FROM mobylinux/alpine-build-c@sha256:53739ea6042cb0ac39cf6e262012c1c4224206b2c9b719569fe7efa3a381348c
|
|
|
|
ARG KERNEL_VERSION=4.9
|
|
|
|
ENV KERNEL_SOURCE=https://www.kernel.org/pub/linux/kernel/v4.x/linux-${KERNEL_VERSION}.tar.xz
|
|
|
|
RUN curl -fsSL -o linux-${KERNEL_VERSION}.tar.xz ${KERNEL_SOURCE}
|
|
|
|
RUN cat linux-${KERNEL_VERSION}.tar.xz | tar --absolute-names -xJ && mv /linux-${KERNEL_VERSION} /linux
|
|
|
|
COPY kernel_config /linux/arch/x86/configs/x86_64_defconfig
|
|
COPY kernel_config.debug /linux/debug_config
|
|
|
|
ARG DEBUG=0
|
|
|
|
RUN if [ $DEBUG -ne "0" ]; then \
|
|
sed -i 's/CONFIG_PANIC_ON_OOPS=y/# CONFIG_PANIC_ON_OOPS is not set/' /linux/arch/x86/configs/x86_64_defconfig; \
|
|
cat /linux/debug_config >> /linux/arch/x86/configs/x86_64_defconfig; \
|
|
fi
|
|
|
|
# Apply local patches
|
|
COPY patches-4.9 /patches
|
|
RUN cd /linux && \
|
|
set -e && for patch in /patches/*.patch; do \
|
|
echo "Applying $patch"; \
|
|
patch -p1 < "$patch"; \
|
|
done
|
|
|
|
WORKDIR /linux
|
|
RUN make defconfig && \
|
|
make oldconfig && \
|
|
make -j "$(getconf _NPROCESSORS_ONLN)" KCFLAGS="-fno-pie"
|
|
RUN make INSTALL_MOD_PATH=/tmp/kernel-modules modules_install && \
|
|
( DVER=$(basename $(find /tmp/kernel-modules/lib/modules/ -mindepth 1 -maxdepth 1)) && \
|
|
cd /tmp/kernel-modules/lib/modules/$DVER && \
|
|
rm build source && \
|
|
ln -s /usr/src/linux-headers-$DVER build ) && \
|
|
mkdir -p /tmp/kernel-headers/usr && \
|
|
make INSTALL_HDR_PATH=/tmp/kernel-headers/usr headers_install && \
|
|
( cd /tmp/kernel-headers && tar cf /kernel-headers.tar usr ) && \
|
|
( cd /tmp/kernel-modules && tar cf /kernel-modules.tar lib ) && \
|
|
cp vmlinux arch/x86_64/boot/bzImage /
|
|
|
|
RUN DVER=$(basename $(find /tmp/kernel-modules/lib/modules/ -mindepth 1 -maxdepth 1)) && \
|
|
dir=/tmp/usr/src/linux-headers-$DVER && \
|
|
mkdir -p $dir && \
|
|
cp /linux/.config $dir && \
|
|
cd /linux && \
|
|
cp -a include "$dir" && \
|
|
mkdir -p "$dir"/arch/x86 && cp -a arch/x86/include "$dir"/arch/x86/ && \
|
|
( cd /tmp && tar cf /kernel-dev.tar usr/src )
|
|
|
|
RUN printf "KERNEL_SOURCE=${KERNEL_SOURCE}\n" > /kernel-source-info
|