Make harddrive-efi.bin target run in a single shell instance

This commit is contained in:
Jeremy Soller 2020-01-21 19:50:15 -07:00
parent 6a2ac14550
commit c91465dc1c
No known key found for this signature in database
GPG key ID: E988B49EE78A7FB1

View file

@ -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