:: commit 32121555646f077ec90305c5aee5cff29406cd63

mintsuki <mintsuki@protonmail.com> — 2021-03-17 12:19

parents: f7dc2e7b8e

iso: Generate eltorito EFI boot image

diff --git a/Makefile b/Makefile
index d3c05695..9a11c2b8 100644
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,7 @@ DESTDIR =
 
 PATH := $(shell pwd)/toolchain/bin:$(PATH)
 
-.PHONY: all clean install distclean limine-bios limine-uefi limine-bios-clean limine-uefi-clean stage23-bios stage23-bios-clean stage23-uefi stage23-uefi-clean decompressor decompressor-clean toolchain test.hdd echfs-test ext2-test fat16-test fat32-test iso9660-test pxe-test uefi-test uefi-iso9660-test
+.PHONY: all clean install distclean limine-bios limine-uefi limine-bios-clean limine-uefi-clean stage23-bios stage23-bios-clean stage23-uefi stage23-uefi-clean decompressor decompressor-clean toolchain test.hdd echfs-test ext2-test fat16-test fat32-test iso9660-test pxe-test uefi-test hybrid-iso9660-test
 
 all:
 	$(MAKE) limine-uefi
@@ -39,11 +39,19 @@ limine-bios: stage23-bios decompressor
 	cd stage1/pxe && nasm bootsect.asm -fbin -o ../../bin/limine-pxe.bin
 	cp build/stage23-bios/limine.sys ./bin/
 
+bin/limine-eltorito-efi.bin:
+	dd if=/dev/zero of=$@ bs=512 count=2880
+	mformat -i $@ -f 1440 ::
+	mmd -D s -i $@ ::/EFI
+	mmd -D s -i $@ ::/EFI/BOOT
+	mcopy -D o -i $@ bin/BOOTX64.EFI ::/EFI/BOOT
+
 limine-uefi:
 	$(MAKE) gnu-efi
 	$(MAKE) stage23-uefi
 	mkdir -p bin
 	cp build/stage23-uefi/BOOTX64.EFI ./bin/
+	$(MAKE) bin/limine-eltorito-efi.bin
 
 limine-bios-clean: stage23-bios-clean decompressor-clean
 
@@ -192,18 +200,19 @@ iso9660-test:
 	genisoimage -no-emul-boot -b boot/limine-cd.bin -boot-load-size 4 -boot-info-table -o test.iso test_image/
 	qemu-system-x86_64 -net none -smp 4 -enable-kvm -cpu host -cdrom test.iso -debugcon stdio
 
-uefi-iso9660-test:
+hybrid-iso9660-test:
 	$(MAKE) ovmf
 	$(MAKE) test-clean
 	$(MAKE) test.hdd
 	$(MAKE) limine-uefi
+	$(MAKE) limine-bios
 	$(MAKE) -C test
 	rm -rf test_image/
 	mkdir -p test_image/boot
 	cp -rv bin/* test/* test_image/boot/
 	mkdir -p test_image/EFI/BOOT
 	cp -v bin/BOOTX64.EFI test_image/EFI/BOOT/
-	genisoimage -no-emul-boot -b boot/limine-cd.bin -boot-load-size 4 -boot-info-table -o test.iso test_image/
+	xorriso -as mkisofs -b boot/limine-cd.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/limine-eltorito-efi.bin -no-emul-boot -isohybrid-gpt-basdat test_image/ -o test.iso
 	qemu-system-x86_64 -L ovmf -bios ovmf/OVMF.fd -net none -smp 4 -enable-kvm -cpu host -cdrom test.iso -debugcon stdio
 
 pxe-test:
tab: 248 wrap: offon