FROM stagex/busybox AS busybox FROM stagex/musl AS musl FROM stagex/xorriso AS xorriso FROM stagex/syslinux AS syslinux FROM stagex/cpio AS cpio FROM stagex/linux-airgap AS linux FROM stagex/mtools AS mtools FROM stagex/dosfstools AS dosfstools FROM scratch AS base COPY --from=busybox . / COPY --from=musl . / COPY --from=xorriso . / COPY --from=cpio . / COPY --from=mtools . / COPY --from=linux . / COPY --from=dosfstools . / COPY --from=syslinux . / FROM base AS build COPY --from=linux /bzImage /iso/boot/bzImage COPY --from=stagex/busybox . initramfs COPY --chmod=0755 <<-EOF initramfs/init #!/bin/sh /bin/sh EOF RUN cd initramfs && find . | cpio -o -H newc | gzip -9 > /iso/boot/init.gz COPY <<-EOF iso/isolinux/isolinux.cfg DEFAULT linux LABEL linux KERNEL boot/bzImage APPEND initrd=boot/init.gz EOF COPY --from=syslinux /usr/share/syslinux/isolinux.bin iso/isolinux/ COPY --from=syslinux /usr/share/syslinux/ldlinux.c32 iso/isolinux/ RUN <<-EOF set -eux mkdir -p iso/efi truncate -s $((10796+128+128))k iso/efi/esp.img mkfs.fat -F 16 -f 1 -M 0xF0 -r 112 -R 1 iso/efi/esp.img mmd -i iso/efi/esp.img ::boot mcopy -i iso/efi/esp.img iso/boot/bzImage ::boot/bzImage mcopy -i iso/efi/esp.img iso/boot/init.gz ::boot/init.gz mmd -i iso/efi/esp.img ::syslinux mcopy -i iso/efi/esp.img iso/isolinux/isolinux.cfg ::syslinux/syslinux.cfg mcopy -i iso/efi/esp.img /usr/share/syslinux/efi64/ldlinux.e64 ::syslinux/ldlinux.e64 mmd -i iso/efi/esp.img ::efi mmd -i iso/efi/esp.img ::efi/boot mcopy -i iso/efi/esp.img /usr/share/syslinux/efi64/syslinux.efi ::efi/boot/boot64.efi ls -Rlah iso EOF FROM build AS install RUN xorriso \ -as mkisofs \ -output airgap.iso \ -eltorito-boot isolinux/isolinux.bin \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -eltorito-alt-boot \ -eltorito-platform efi \ -eltorito-boot efi/esp.img \ -no-emul-boot \ -eltorito-catalog isolinux/boot.cat \ iso #RUN isohybrid airgap.iso FROM scratch AS package COPY --from=install /airgap.iso /