From 1cf6e5a55c295295c46315ddc55e4565d9c066c35198c756a211196a353219d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=9F=E9=85=8C=20=E9=B5=AC=E5=85=84?= Date: Fri, 1 May 2026 17:57:17 +0800 Subject: [PATCH] Fixed incorrect naming --- docker/ask.Dockerfile | 69 +++++++++++++++++++++++++++++ docker/download-packages.Dockerfile | 18 ++++---- makefile | 30 +++++++++++-- 3 files changed, 105 insertions(+), 12 deletions(-) create mode 100644 docker/ask.Dockerfile diff --git a/docker/ask.Dockerfile b/docker/ask.Dockerfile new file mode 100644 index 0000000..e5635d0 --- /dev/null +++ b/docker/ask.Dockerfile @@ -0,0 +1,69 @@ +ARG BUILD_BASE_TAG=dev +ARG DOCKER_IMAGE_ROOT=monok8s + +FROM --platform=$BUILDPLATFORM ${DOCKER_IMAGE_ROOT}/build-base:${BUILD_BASE_TAG} AS build + +# Install glibc cross-compiler for kernel and standard build dependencies +RUN apt-get update && apt-get install -y \ + crossbuild-essential-arm64 \ + patch bzip2 pkg-config \ + libxml2-dev libtclap-dev + +# Provision the musl cross-compiler from musl.cc +RUN curl -O https://musl.cc/aarch64-linux-musl-cross.tgz && \ + tar xzf aarch64-linux-musl-cross.tgz -C /opt && \ + rm aarch64-linux-musl-cross.tgz + +# Expose the musl compiler to the PATH +ENV PATH="/opt/aarch64-linux-musl-cross/bin:${PATH}" + +WORKDIR /src + +ARG NXP_TAR +ARG MONO_ASK_TAR +ARG LIBNFNETLINK_TAR +ARG LIBNFCT_TAR + +ARG NXP_VERSION +ARG MONO_ASK_VERSION +ARG LIBNFNETLINK_VERSION +ARG LIBNFCT_VERSION + +# Linux kernel +COPY "${NXP_TAR}" ./kernel.tar.gz + +# Copy the ASK and Netfilter tarballs +COPY "${MONO_ASK_TAR}" . +COPY "${LIBNFNETLINK_TAR}" ./libnfnetlink-${LIBNFNETLINK_VERSION}.tar.bz2 +COPY "${LIBNFCT_TAR}" ./libnetfilter_conntrack-${LIBNFCT_VERSION}.tar.xz + +# Extract ASK and place Netfilter dependencies where the Makefile expects them +RUN mkdir -p ASK/sources/tarballs && \ + tar zxf "${MONO_ASK_VERSION}.tar.gz" -C "ASK" --strip-components=1 && \ + mv libnfnetlink-${LIBNFNETLINK_VERSION}.tar.bz2 ASK/sources/tarballs/ && \ + mv libnetfilter_conntrack-${LIBNFCT_VERSION}.tar.xz ASK/sources/tarballs/ + +RUN mkdir linux && tar zxf "kernel.tar.gz" -C "linux" --strip-components=1 + +WORKDIR /src/ASK + +# 1. Build Kernel and Modules with the glibc cross-compiler +RUN make kernel KDIR=/src/linux CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 +RUN make modules KDIR=/src/linux CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 + +# 2. Build Userspace with the musl cross-compiler +# Overriding HOST forces the Netfilter./configure steps to use musl +# Setting CC and CXX with -static ensures portability in the Alpine rootfs +RUN make sources KDIR=/src/linux CROSS_COMPILE=aarch64-linux-musl- ARCH=arm64 HOST=aarch64-linux-musl +RUN make userspace KDIR=/src/linux CROSS_COMPILE=aarch64-linux-musl- ARCH=arm64 \ + HOST=aarch64-linux-musl \ + CC="aarch64-linux-musl-gcc -static" \ + CXX="aarch64-linux-musl-g++ -static" + +# Stage the artifacts +RUN make dist + +# Export stage to isolate compiled artifacts for monok8s build-rootfs.sh +FROM scratch AS export +COPY --from=build /src/ASK/dist/ /ASK/ +COPY --from=build /src/linux/arch/arm64/boot/Image /kernel/Image diff --git a/docker/download-packages.Dockerfile b/docker/download-packages.Dockerfile index a56a2f0..d6cc32a 100644 --- a/docker/download-packages.Dockerfile +++ b/docker/download-packages.Dockerfile @@ -77,18 +77,18 @@ WORKDIR /out/ask RUN curl -fL --retry 3 -o "${MONO_ASK_VERSION}.tar.gz" \ "https://github.com/we-are-mono/ASK/archive/refs/tags/${MONO_ASK_VERSION}.tar.gz" -# ---- libhnfnetlink ---- -FROM base AS libhnfnetlink +# ---- libnfnetlink ---- +FROM base AS libnfnetlink ARG LIBNFNETLINK_VERSION -WORKDIR /out/ask/libhnfnetlink +WORKDIR /out/ask/libnfnetlink RUN curl -fL --retry 3 -o "${LIBNFNETLINK_VERSION}.tar.bz2" \ "https://www.netfilter.org/projects/libnfnetlink/files/libnfnetlink-${LIBNFNETLINK_VERSION}.tar.bz2" -# ---- libhnfct ---- -FROM base AS libhnfct +# ---- libnfct ---- +FROM base AS libnfct ARG LIBNFCT_VERSION -WORKDIR /out/ask/libhnfct -RUN curl -fL --retry 3 -o "${LIBNFCT_VERSION}.tar.gz" \ +WORKDIR /out/ask/libnfct +RUN curl -fL --retry 3 -o "${LIBNFCT_VERSION}.tar.xz" \ "https://www.netfilter.org/projects/libnetfilter_conntrack/files/libnetfilter_conntrack-${LIBNFCT_VERSION}.tar.xz" # ---- libcli ---- @@ -133,8 +133,8 @@ COPY --from=fmlib /out/ / COPY --from=fmc /out/ / COPY --from=mono_ask /out/ / COPY --from=vpp /out/ / -COPY --from=libhnfnetlink /out/ / -COPY --from=libhnfct /out/ / +COPY --from=libnfnetlink /out/ / +COPY --from=libnfct /out/ / COPY --from=libcli /out/ / COPY --from=alpine_rootfs /out/ / COPY --from=nxp_linux /out/ / diff --git a/makefile b/makefile index 39fed13..e3b704d 100644 --- a/makefile +++ b/makefile @@ -19,9 +19,9 @@ CRIO_TAR := $(PACKAGES_DIR)/$(CRIO_VERSION).tar.gz # ASK-specific MONO_ASK_TAR := $(PACKAGES_DIR)/ask/$(MONO_ASK_VERSION).tar.gz -LIBNFNETLINK_TAR := $(PACKAGES_DIR)/ask/libnfnetlink/libnfnetlink-$(LIBNFNETLINK_VERSION).tar.bz2 -LIBNFCT_TAR := $(PACKAGES_DIR)/ask/libnetfilter/libnetfilter_conntrack-$(LIBNFCT_VERSION).tar.xz -LIBCLI_TAR := $(PACKAGES_DIR)/ask/libcli/libcli-$(LIBCLI_VERSION).tar.gz +LIBNFNETLINK_TAR := $(PACKAGES_DIR)/ask/libnfnetlink/$(LIBNFNETLINK_VERSION).tar.bz2 +LIBNFCT_TAR := $(PACKAGES_DIR)/ask/libnfct/$(LIBNFCT_VERSION).tar.xz +LIBCLI_TAR := $(PACKAGES_DIR)/ask/libcli/$(LIBCLI_VERSION).tar.gz # Kubernetes components KUBELET_BIN := $(PACKAGES_DIR)/kubernetes/kubelet-$(KUBE_VERSION) @@ -193,6 +193,30 @@ $(INITRAMFS): $(INITRAMFS_DEPS) $(DOWNLOAD_PACKAGES_STAMP) | $(OUT_DIR) $(CLITOOLS_BIN): $(CLITOOLS_SRCS) $(MAKE) -C clitools build-local VERSION="$(TAG)" +ASK: $(ASK_TAR) $(LIBNFCT_TAR) $(LIBNFNETLINK_TAR) | $(OUT_DIR) + @echo "Building NXP ASK components and Kernel..." + rm -rf "$(OUT_DIR)/ASK" + mkdir -p "$(OUT_DIR)/ASK" + @build_base_tag=$$(docker image inspect \ + --format '{{.Id}}' \ + $(DOCKER_IMAGE_ROOT)/build-base:$(TAG) \ + | cut -d':' -f2 \ + | cut -c -8); \ + docker build \ + -f docker/ask.Dockerfile \ + --platform linux/amd64 \ + --build-arg DOCKER_IMAGE_ROOT=$(DOCKER_IMAGE_ROOT) \ + --build-arg BUILD_BASE_TAG=$$build_base_tag \ + --build-arg MONO_ASK_TAR=$(MONO_ASK_TAR) \ + --build-arg NXP_TAR=$(NXP_TAR) \ + --build-arg LIBNFNETLINK_TAR=$(LIBNFNETLINK_TAR) \ + --build-arg LIBNFCT_TAR=$(LIBNFCT_TAR) \ + --build-arg MONO_ASK_VERSION=$(MONO_ASK_VERSION) \ + --build-arg NXP_VERSION=$(NXP_VERSION) \ + --build-arg LIBNFNETLINK_VERSION=$(LIBNFNETLINK_VERSION) \ + --build-arg LIBNFCT_VERSION=$(LIBNFCT_VERSION) \ + --output type=local,dest=./$(OUT_DIR)/ASK . + vpp: $(BUILD_BASE_STAMP) $(VPP_TAR) $(DPDK_TAR) $(FMLIB_TAR) $(FMC_TAR) $(NXP_TAR) @build_base_tag=$$(docker image inspect \ --format '{{.Id}}' \