Source
FROM stagex/pallet-gcc-gnu-busybox AS build
ARG VERSION
COPY --from=stagex/core-xz . /
COPY --from=stagex/user-edk2 . /
COPY --from=stagex/user-syslinux . /
COPY --from=stagex/user-xorriso . /
ADD fetch/ipxe-${VERSION}.tar.gz .
WORKDIR /ipxe-${VERSION}/src
ENV SOURCE_DATE_EPOCH=1
RUN --network=none <<-EOF
set -ex
ARCH="$(uname -m)"
mkdir -p out
make \
-j "$(nproc)" \
CC=${ARCH}-linux-musl-gcc \
NO_WERROR=1 \
EXTRA_CFLAGS="-fcommon" \
bin/ipxe.iso \
bin/ipxe.lkrn \
bin/ipxe.pxe \
bin/undionly.kpxe \
bin/ipxe.usb \
bin/ipxe.dsk \
bin-${ARCH}-efi/ipxe.efi
printf " \
e1000 8086 100e \n \
e1000e 8086 10d3 \n \
eepro100 8086 1209 \n \
ne2k_pci 1050 0940 \n \
pcnet 1022 2000 \n \
rtl8139 10ec 8139 \n \
virtio 1af4 1000 \n \
vmxnet3 15ad 07b0" \
| while IFS= read -r line; do
set -- $line;
target="$1";
vid="$2";
did="$3";
make \
-j "$(nproc)" \
CONFIG=qemu \
CC=${ARCH}-linux-musl-gcc \
NO_WERROR=1 \
EXTRA_CFLAGS="-fcommon" \
bin-${ARCH}-efi/${vid}${did}.efidrv \
bin/${vid}${did}.rom;
EfiRom \
-f "0x${vid}" \
-i "0x${did}" \
-l 0x02 \
-b bin/${vid}${did}.rom \
-ec bin-${ARCH}-efi/${vid}${did}.efidrv \
-o out/efi-${target}.rom;
done
install -vDm 644 bin/*.lkrn -t /rootfs/usr/share/ipxe/
install -vDm 644 bin/*.dsk -t /rootfs/usr/share/ipxe/
install -vDm 644 bin/*.iso -t /rootfs/usr/share/ipxe/
install -vDm 644 bin/*.pxe -t /rootfs/usr/share/ipxe/
install -vDm 644 bin/*.kpxe -t /rootfs/usr/share/ipxe/
install -vDm 644 bin-${ARCH}-efi/*.efi -t /rootfs/usr/share/ipxe/${ARCH}/
install -vDm 644 out/efi-*.rom -t /rootfs/usr/share/qemu/
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /