70 lines
2.1 KiB
Docker
70 lines
2.1 KiB
Docker
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 /
|