From c91465dc1ceaf33bb8f72a20d9f21a0880e84177 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 21 Jan 2020 19:50:15 -0700 Subject: [PATCH] Make harddrive-efi.bin target run in a single shell instance --- mk/disk.mk | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/mk/disk.mk b/mk/disk.mk index 04217f7..e733f6f 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -53,27 +53,28 @@ build/harddrive-efi-old.bin: build/bootloader.efi build/filesystem.bin cat $@.partial build/filesystem.bin > $@ build/harddrive-efi.bin: build/bootloader.efi build/filesystem.bin - # TODO: Validate the correctness of this - # Populate an EFI system partition - dd if=/dev/zero of=$@.esp bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 1) - mkfs.vfat $@.esp - mmd -i $@.esp efi - mmd -i $@.esp efi/boot - mcopy -i $@.esp $< ::efi/boot/bootx64.efi - # Create the disk - dd if=/dev/zero of=$@ bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 2 + $$(du -m build/filesystem.bin | cut -f1)) - # Create partition table - parted -s -a minimal $@ mklabel gpt - efi_disk_size=$$(du -m $< | cut -f1) efi_disk_blkcount=$$(expr $$efi_disk_size \* $$(expr 1048576 / 512)) - efi_end=$$(expr 2048 + $$efi_disk_blkcount) - efi_last=$$(expr $$efi_end - 1) - parted -s -a minimal $@ mkpart EFI fat32 2048s "$${efi_last}s" - fs_disk_size=$$(du -m build/filesystem.bin | cut -f1) fs_disk_blkcount=$$(expr $$fs_disk_size \* $$(expr 1048576 / 512)) - parted -s -a minimal $@ mkpart redox ext4 "$${efi_end}s" $$(expr $$efi_end + $$fs_disk_blkcount)s - parted -s -a minimal $@ set 1 boot on - parted -s -a minimal $@ set 1 esp on - # Write the partitions - dd if=$@.esp bs=512 seek=2048 conv=notrunc count=$$efi_disk_blkcount of=$@ + # TODO: Validate the correctness of this \ + # Populate an EFI system partition \ + dd if=/dev/zero of=$@.esp bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 1) && \ + mkfs.vfat $@.esp && \ + mmd -i $@.esp efi && \ + mmd -i $@.esp efi/boot && \ + mcopy -i $@.esp $< ::efi/boot/bootx64.efi && \ + # Create the disk \ + dd if=/dev/zero of=$@ bs=1048576 count=$$(expr $$(du -m $< | cut -f1) + 2 + $$(du -m build/filesystem.bin | cut -f1)) && \ + # Create partition table \ + parted -s -a minimal $@ mklabel gpt && \ + efi_disk_size=$$(du -m $< | cut -f1) && \ + efi_disk_blkcount=$$(expr $$efi_disk_size \* $$(expr 1048576 / 512)) && \ + efi_end=$$(expr 2048 + $$efi_disk_blkcount) && \ + efi_last=$$(expr $$efi_end - 1) && \ + parted -s -a minimal $@ mkpart EFI fat32 2048s "$${efi_last}s" && \ + fs_disk_size=$$(du -m build/filesystem.bin | cut -f1) fs_disk_blkcount=$$(expr $$fs_disk_size \* $$(expr 1048576 / 512)) && \ + parted -s -a minimal $@ mkpart redox ext4 "$${efi_end}s" $$(expr $$efi_end + $$fs_disk_blkcount)s && \ + parted -s -a minimal $@ set 1 boot on && \ + parted -s -a minimal $@ set 1 esp on && \ + # Write the partitions \ + dd if=$@.esp bs=512 seek=2048 conv=notrunc count=$$efi_disk_blkcount of=$@ && \ dd if=build/filesystem.bin seek=$$efi_end bs=512 conv=notrunc of=$@ count=$$fs_disk_blkcount build/livedisk-efi.iso: build/bootloader.efi build/kernel_live