Initial commit

This commit is contained in:
2026-03-20 22:58:57 +08:00
parent 3cee9af22b
commit 9c97871f97
11 changed files with 284 additions and 1 deletions

View File

@@ -0,0 +1,34 @@
FROM --platform=linux/amd64 debian:bookworm AS kernel-build
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /build
RUN apt-get update && apt-get install -y --no-install-recommends \
bash \
bc \
bison \
build-essential \
cpio \
curl \
file \
flex \
git \
libelf-dev \
libssl-dev \
make \
pahole \
perl \
python3 \
rsync \
tar \
xz-utils \
dwarves \
gcc-aarch64-linux-gnu \
binutils-aarch64-linux-gnu \
libc6-dev-arm64-cross \
linux-libc-dev-arm64-cross \
u-boot-tools \
device-tree-compiler \
&& rm -rf /var/lib/apt/lists/*

View File

@@ -0,0 +1,34 @@
ARG TAG=dev
ARG DOCKER_IMAGE_ROOT=monok8s
FROM --platform=linux/amd64 ${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 dev/busybox.tar.gz ./
RUN tar -xf busybox.tar.gz && mv "busybox-${BUSYBOX_VERSION}" busybox
# RUN curl -L https://github.com/mirror/busybox/archive/refs/tags/${BUSYBOX_VERSION}.tar.gz -o busybox.tar.gz \
# && tar -xf busybox.tar.gz \
# && mv "busybox-${BUSYBOX_VERSION}" busybox
WORKDIR /build/busybox
RUN make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} defconfig \
&& sed -i 's/^# CONFIG_STATIC is not set/CONFIG_STATIC=y/' .config
RUN make CROSS_COMPILE=${CROSS_COMPILE} -j"$(nproc)"
RUN make CROSS_COMPILE=${CROSS_COMPILE} CONFIG_PREFIX=/out/initramfs install
WORKDIR /out/initramfs
COPY initramfs/init init
RUN chmod +x init
RUN mkdir -p bin sbin etc proc sys dev usr/bin usr/sbin
RUN find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz

24
docker/itb.Dockerfile Normal file
View File

@@ -0,0 +1,24 @@
ARG TAG=dev
ARG DOCKER_IMAGE_ROOT=monok8s
FROM ${DOCKER_IMAGE_ROOT}/kernel-build:${TAG} AS kernel
FROM ${DOCKER_IMAGE_ROOT}/fit-build:${TAG} AS fit
FROM --platform=linux/amd64 ${DOCKER_IMAGE_ROOT}/build-base:${TAG} AS build
ARG DTB_TARGET
RUN mkdir /image
WORKDIR /image
COPY --from=kernel /out/kernel/Image.gz ./Image.gz
COPY --from=kernel /out/kernel/System.map ./
COPY --from=kernel /out/kernel/.config ./
COPY --from=fit /out/initramfs.cpio.gz ./
COPY --from=kernel /out/${DTB_TARGET} ./
COPY ./board.its ./
RUN mkimage -f board.its board.itb
FROM scratch
COPY --from=build /image/board.itb /board.itb

View File

@@ -0,0 +1,43 @@
ARG TAG=dev
ARG DOCKER_IMAGE_ROOT=monok8s
FROM --platform=linux/amd64 ${DOCKER_IMAGE_ROOT}/build-base:${TAG}
ARG NXP_VERSION
ARG ARCH
ARG CROSS_COMPILE
WORKDIR /build
RUN test -n "${NXP_VERSION}" || (echo "Please specify NXP_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)
# Dev-only shortcut
COPY dev/nxplinux.tar.gz ./
RUN tar -xf nxplinux.tar.gz \
&& mv "linux-${NXP_VERSION}" nxplinux \
&& rm -f nxplinux.tar.gz
# Or download directly:
# RUN curl -L "https://github.com/nxp-qoriq/linux/archive/refs/tags/${NXP_VERSION}.tar.gz" -o nxplinux.tar.gz \
# && tar -xf nxplinux.tar.gz \
# && mv "linux-${NXP_VERSION}" nxplinux \
# && rm -f nxplinux.tar.gz
WORKDIR /build/nxplinux
# NXP tree: use the LSDK defconfig target
RUN make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" defconfig lsdk.config
RUN make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" -j"$(nproc)"
# artifact collection
RUN mkdir -p /out/kernel /out/rootfs \
&& cp -av arch/arm64/boot/Image* /out/kernel/ 2>/dev/null || true \
&& cp -av arch/arm64/boot/dts /out/kernel/dts 2>/dev/null || true \
&& cp -av System.map .config /out/kernel/ \
&& make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} modules_install INSTALL_MOD_PATH=/out/rootfs
ARG DTB_TARGET
RUN find /out/kernel -name "${DTB_TARGET}" -exec cp {} /out/ \;
RUN test -f "/out/${DTB_TARGET}"