bztsrc--bootboot/images/Makefile

78 lines
2.5 KiB
Makefile

# platform, either x86 or rpi
PLATFORM=x86
#PLATFORM=rpi
# the path to OVMF.fd (for testing with EFI)
OVMF=/usr/share/qemu/bios-TianoCoreEFI.bin
all: ../mkbootimg/mkbootimg initdir disk
# compile the image creator
../mkbootimg/mkbootimg:
@make -C ../mkbootimg all
# create an initial ram disk image with the kernel inside
initdir:
@mkdir initrd initrd/sys 2>/dev/null | true
ifeq ($(PLATFORM),x86)
cp ../mykernel/mykernel.x86_64.elf initrd/sys/core
else
cp ../mykernel/mykernel.aarch64.elf initrd/sys/core
endif
# create hybrid disk / cdrom image or ROM image
disk: ../mkbootimg/mkbootimg initdir mkbootimg.json
../mkbootimg/mkbootimg mkbootimg.json disk-$(PLATFORM).img
@rm -rf initrd
initrd.rom: ../mkbootimg/mkbootimg initdir mkbootimg.json
../mkbootimg/mkbootimg mkbootimg.json initrd.rom
@rm -rf initrd
# create a GRUB cdrom
grub.iso: ../mkbootimg/mkbootimg initdir mkbootimg.json
@../mkbootimg/mkbootimg mkbootimg.json initrd.bin
@rm -rf initrd
@mkdir iso iso/bootboot iso/boot iso/boot/grub 2>/dev/null || true
@cp ../bootboot.bin iso/bootboot/loader || true
@cp config iso/bootboot/config || true
@cp initrd.bin iso/bootboot/initrd || true
@printf "menuentry \"BOOTBOOT test\" {\n multiboot /bootboot/loader\n module /bootboot/initrd\n module /bootboot/config\n boot\n}" >iso/boot/grub/grub.cfg || true
grub-mkrescue -o grub.iso iso
@rm -r iso 2>/dev/null || true
# test the disk image
rom: initrd.rom
qemu-system-x86_64 -option-rom ../dist/bootboot.bin -option-rom initrd.rom -serial stdio
bios:
qemu-system-x86_64 -drive file=disk-x86.img,format=raw -serial stdio
cdrom:
qemu-system-x86_64 -cdrom disk-x86.img -serial stdio
grubcdrom: grub.iso
qemu-system-x86_64 -cdrom grub.iso -serial stdio
efi:
qemu-system-x86_64 -bios $(OVMF) -m 64 -drive file=disk-x86.img,format=raw -serial stdio
eficdrom:
qemu-system-x86_64 -bios $(OVMF) -m 64 -cdrom disk-x86.img -serial stdio
linux:
qemu-system-x86_64 -kernel ../dist/bootboot.bin -drive file=disk-x86.img,format=raw -serial stdio
sdcard:
qemu-system-aarch64 -M raspi3 -kernel ../dist/bootboot.img -drive file=disk-rpi.img,if=sd,format=raw -serial stdio
coreboot:
ifeq ($(PLATFORM),x86)
qemu-system-x86_64 -bios coreboot-x86.rom -drive file=disk-x86.img,format=raw -serial stdio
else
qemu-system-aarch64 -bios coreboot-arm.rom -M virt,secure=on,virtualization=on -cpu cortex-a53 -m 1024M -drive file=disk-rpi.img,format=raw -serial stdio
endif
# clean up
clean:
rm -rf initrd *.bin *.img *.rom *.iso 2>/dev/null || true