# Nuke built-in rules and variables. override MAKEFLAGS += -rR override IMAGE_NAME := barebones .PHONY: all all: $(IMAGE_NAME).iso .PHONY: all-hdd all-hdd: $(IMAGE_NAME).hdd .PHONY: run run: $(IMAGE_NAME).iso qemu-system-x86_64 -M q35 -m 2G -cdrom $(IMAGE_NAME).iso -boot d .PHONY: run-uefi run-uefi: ovmf $(IMAGE_NAME).iso qemu-system-x86_64 -M q35 -m 2G -bios ovmf/OVMF.fd -cdrom $(IMAGE_NAME).iso -boot d .PHONY: run-hdd run-hdd: $(IMAGE_NAME).hdd qemu-system-x86_64 -M q35 -m 2G -hda $(IMAGE_NAME).hdd .PHONY: run-hdd-uefi run-hdd-uefi: ovmf $(IMAGE_NAME).hdd qemu-system-x86_64 -M q35 -m 2G -bios ovmf/OVMF.fd -hda $(IMAGE_NAME).hdd ovmf: mkdir -p ovmf cd ovmf && curl -Lo OVMF-X64.zip https://efi.akeo.ie/OVMF/OVMF-X64.zip && unzip OVMF-X64.zip limine: git clone https://github.com/limine-bootloader/limine.git --branch=v5.x-branch-binary --depth=1 $(MAKE) -C limine .PHONY: kernel kernel: $(MAKE) -C kernel $(IMAGE_NAME).iso: limine kernel rm -rf iso_root mkdir -p iso_root cp kernel/kernel.elf \ limine.cfg limine/limine-bios.sys limine/limine-bios-cd.bin limine/limine-uefi-cd.bin iso_root/ mkdir -p iso_root/EFI/BOOT cp limine/BOOT*.EFI iso_root/EFI/BOOT/ xorriso -as mkisofs -b limine-bios-cd.bin \ -no-emul-boot -boot-load-size 4 -boot-info-table \ --efi-boot limine-uefi-cd.bin \ -efi-boot-part --efi-boot-image --protective-msdos-label \ iso_root -o $(IMAGE_NAME).iso ./limine/limine bios-install $(IMAGE_NAME).iso rm -rf iso_root $(IMAGE_NAME).hdd: limine kernel rm -f $(IMAGE_NAME).hdd dd if=/dev/zero bs=1M count=0 seek=64 of=$(IMAGE_NAME).hdd parted -s $(IMAGE_NAME).hdd mklabel gpt parted -s $(IMAGE_NAME).hdd mkpart ESP fat32 2048s 100% parted -s $(IMAGE_NAME).hdd set 1 esp on ./limine/limine bios-install $(IMAGE_NAME).hdd sudo losetup -Pf --show $(IMAGE_NAME).hdd >loopback_dev sudo mkfs.fat -F 32 `cat loopback_dev`p1 mkdir -p img_mount sudo mount `cat loopback_dev`p1 img_mount sudo mkdir -p img_mount/EFI/BOOT sudo cp -v kernel/kernel.elf limine.cfg limine/limine-bios.sys img_mount/ sudo cp -v limine/BOOT*.EFI img_mount/EFI/BOOT/ sync sudo umount img_mount sudo losetup -d `cat loopback_dev` rm -rf loopback_dev img_mount .PHONY: clean clean: rm -rf iso_root $(IMAGE_NAME).iso $(IMAGE_NAME).hdd $(MAKE) -C kernel clean .PHONY: distclean distclean: clean rm -rf limine ovmf $(MAKE) -C kernel distclean