nit/Containerfile

54 lines
1.8 KiB
Docker

ARG TARGET=x86_64-unknown-linux-musl
FROM stagex/pallet-rust:sx2025.06.1 AS pallet-rust
FROM stagex/user-eif_build:sx2025.06.1 AS eif_build
FROM stagex/user-gen_initramfs:sx2025.06.1 AS gen_initramfs
FROM stagex/user-linux-nitro:sx2025.06.1 AS linux-nitro
FROM scratch as build-nit
ARG TARGET
# ENV TARGET=${TARGET}
ENV RUSTFLAGS="-C target-feature=+crt-static"
ENV CARGOFLAGS="--locked --no-default-features --features aws --release --target ${TARGET}"
COPY --from=pallet-rust . /
COPY --from=linux-nitro /bzImage .
COPY --from=linux-nitro /linux.config .
ADD . /nit
WORKDIR /nit
RUN cargo build ${CARGOFLAGS}
FROM scratch AS build-eif
ARG TARGET
# ENV TARGET=${TARGET}
# just to provide us w/ some base utils. we should probably make some kind of
# base pallet that provides busybox and musl, just because i'm lazy and it's
# needed, well, everywhere
COPY --from=pallet-rust . /
COPY --from=gen_initramfs . /
COPY --from=eif_build . /
WORKDIR /build_cpio
COPY --from=build-nit /nit/target/${TARGET}/release/nit init
ENV KBUILD_BUILD_TIMESTAMP=1
COPY initramfs.list /build_cpio/initramfs.list
RUN find . -exec touch -hcd "@0" "{}" + && \
gen_init_cpio -t 1 initramfs.list > rootfs.cpio && \
touch -hcd "@0" rootfs.cpio
WORKDIR /build_eif
COPY --from=linux-nitro /bzImage /build_eif/bzImage
COPY --from=linux-nitro /linux.config /build_eif/linux.config
RUN mkdir /build_eif/out
RUN eif_build \
--kernel /build_eif/bzImage \
--kernel_config /build_eif/linux.config \
--ramdisk /build_cpio/rootfs.cpio \
--pcrs_output /build_eif/out/nitro.pcrs \
--output /build_eif/out/nitro.eif \
--cmdline 'reboot=k initrd=0x2000000,3228672 root=/dev/ram0 panic=1 pci=off nomodules console=ttyS0 i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd'
RUN ls -la /build_eif/out
FROM scratch AS package
COPY --from=build-eif /build_eif/out /