From ae9ea5a94d749d75962f89fa2afeee5e5b7f8ce7 Mon Sep 17 00:00:00 2001 From: Sam Ebstein Date: Thu, 19 Sep 2024 09:41:42 -0700 Subject: [PATCH] Containerfile: creating a fat32 formatted third partition on airgap.iso to allow for arbitrary user data. --- Containerfile | 23 +++++++++++++++++++++++ Makefile | 8 ++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Containerfile b/Containerfile index 155c807..2a4313e 100644 --- a/Containerfile +++ b/Containerfile @@ -179,6 +179,29 @@ RUN <<-EOF iso/ EOF +# Need sfdisk from util-linux +COPY --from=util-linux . . +RUN <<-EOF + set -eux + # Increase the size of the ISO by X MB to create space for the third partition + dd if=/dev/zero bs=1M count=51 >> 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}') + echo "Calculated OFFSET: $OFFSET" + + # 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