diff --git a/Containerfile b/Containerfile index 155c807..1b02cdc 100644 --- a/Containerfile +++ b/Containerfile @@ -179,6 +179,28 @@ RUN <<-EOF iso/ EOF +# Need sfdisk from util-linux +COPY --from=util-linux . . +RUN <<-EOF + set -eux + # Increase the size of the ISO by 512 MB to create space for the third partition + dd if=/dev/zero bs=1M count=512 >> airgap.iso + + # Append a new partition that uses the additional space + echo ", +" | sfdisk --append airgap.iso + + # Set the newly added third partition to FAT32 + sfdisk --part-type airgap.iso 3 b + + # Calculate the byte offset of the third partition + # This is done by finding the end of the first partition using fdisk, adding 1 sector, + # and multiplying by 512 (since each sector is 512 bytes). + OFFSET=$(fdisk -l airgap.iso | awk '/^airgap.iso1/ {print ($4 + 1) * 512}') + + # Format the third partition as FAT32 and label it 'USER' + mformat -v USER -i airgap.iso@@$OFFSET :: +EOF + ## Minimal Autorun SD card image COPY sdcard sdcard RUN <<-EOF diff --git a/Makefile b/Makefile index 4c573cd..87223db 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,9 @@ vm-bios: out/airgap.iso -usbdevice tablet \ -drive id=external,if=none,format=raw,file=out/sdcard.img \ -display gtk,show-menubar=off,zoom-to-fit=on \ - -cdrom "out/airgap.iso" + -device usb-storage,drive=usbdrive \ + -drive id=usbdrive,if=none,format=raw,file=out/airgap.iso \ + -boot order=c .PHONY: vm-efi vm-efi: out/airgap.iso @@ -70,7 +72,9 @@ vm-efi: out/airgap.iso -usbdevice tablet \ -drive id=external,if=none,format=raw,file=out/sdcard.img \ -display gtk,show-menubar=off,zoom-to-fit=on \ - -cdrom "out/airgap.iso" + -device usb-storage,drive=usbdrive \ + -drive id=usbdrive,if=none,format=raw,file=airgap.iso \ + -boot order=c ## Signing, Verification, and Release Targets