penguin/monok8s

k8s image for Mono Gateway Dev Kit

docker/initramfs.Dockerfile

raw ยท 1815 bytes

ARG TAG=dev
ARG DOCKER_IMAGE_ROOT=monok8s

FROM --platform=$BUILDPLATFORM ${DOCKER_IMAGE_ROOT}/build-base:${TAG} AS build

ARG BUSYBOX_VERSION
ARG ARCH
ARG CROSS_COMPILE

WORKDIR /build

RUN test -n "${BUSYBOX_VERSION}" || (echo "Please specify BUSYBOX_VERSION" >&2; exit 1); \
    test -n "${ARCH}" || (echo "Please specify ARCH" >&2; exit 1); \
    test -n "${CROSS_COMPILE}" || (echo "Please specify CROSS_COMPILE" >&2; exit 1)

COPY packages/busybox-${BUSYBOX_VERSION}.tar.gz ./
RUN tar -xf busybox-${BUSYBOX_VERSION}.tar.gz && mv "busybox-${BUSYBOX_VERSION}" busybox

WORKDIR /build/busybox

RUN make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} defconfig \ 
 && sed -i \
 -e 's/^# CONFIG_STATIC is not set/CONFIG_STATIC=y/' \
 -e 's/^CONFIG_TC=.*/# CONFIG_TC is not set/' .config
RUN make CROSS_COMPILE=${CROSS_COMPILE} -j"$(nproc)"
RUN make CROSS_COMPILE=${CROSS_COMPILE} CONFIG_PREFIX=/out/initramfs install

ARG E2FSPROGS_VERSION

WORKDIR /build
COPY packages/e2fsprogs-v${E2FSPROGS_VERSION}.tar.gz ./
RUN tar -xf e2fsprogs-v${E2FSPROGS_VERSION}.tar.gz && mv "e2fsprogs-${E2FSPROGS_VERSION}" e2fsprogs

WORKDIR /build/e2fsprogs

RUN ./configure \
    --host=aarch64-linux-gnu \
    --prefix=/usr
RUN make -j"$(nproc)"
RUN make DESTDIR=/out/initramfs install
RUN mkdir -p /out/initramfs/lib \
    && cp /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /out/initramfs/lib/ \
    && cp /usr/aarch64-linux-gnu/lib/libc.so.6 /out/initramfs/lib/

WORKDIR /build

ARG BUILD_TAG

COPY alpine/*.sh ./
COPY initramfs/*.sh ./
COPY initramfs/rootfs-extra ./rootfs-extra
COPY out/rootfs.tar.gz ./
COPY out/build-info ./rootfs-extra/etc/build-info

WORKDIR /out/initramfs
RUN tar zxf /build/rootfs.tar.gz -C "/out" \
    && /build/build-rootfs.sh

FROM scratch
COPY --from=build /out/initramfs.cpio.gz /initramfs.cpio.gz