Began using Limine as a bootloader instead of QEMUs mb1 bootloader.

This commit is contained in:
2025-04-14 20:15:05 +02:00
parent f1bdfc9c9f
commit 354339e831
11 changed files with 82 additions and 10 deletions
+35 -6
View File
@@ -1,22 +1,51 @@
include defaults.mk
KERNEL = ./kernel
TARGET = ./$(IMG_NAME)
OFFSET = 1048576
SYSROOT = ./sysroot
# Modules
KERNEL = ./kernel
MODULES = $(KERNEL)
# Treat these targets as names and not files
.PHONY: all clean $(MODULES) qemu
all: $(MODULES)
all: $(TARGET)
$(TARGET): $(SYSROOT) $(MODULES)
cp /usr/share/limine/limine-bios.sys $(SYSROOT)/boot
echo -e 'timeout: 5\n\n/kern.\n\tprotocol: multiboot1\n\tpath: boot():/boot/kernel.elf\n' > $(SYSROOT)/boot/limine.conf
dd if=/dev/zero of=$(TARGET) bs=1M count=$(IMG_SIZE)
echo ',,c,*' | sfdisk $(TARGET) >/dev/null
mformat -F -i $(TARGET)@@$(OFFSET) ::/
mcopy -i $(TARGET)@@$(OFFSET) $(SYSROOT)/* ::
limine bios-install $(TARGET)
# Build out base directory structure
$(SYSROOT):
@mkdir $(SYSROOT)
@mkdir $(SYSROOT)/bin
@mkdir $(SYSROOT)/boot
@mkdir $(SYSROOT)/dev
@mkdir $(SYSROOT)/etc
@mkdir $(SYSROOT)/lib
@mkdir $(SYSROOT)/sbin
@mkdir $(SYSROOT)/usr
@mkdir $(SYSROOT)/usr/bin
@mkdir $(SYSROOT)/usr/include
@mkdir $(SYSROOT)/usr/share
@mkdir $(SYSROOT)/tmp
$(MODULES):
$(MAKE) -C $@
$(MAKE) -C $@ SYSROOT=$(abspath $(SYSROOT))
clean:
rm -f $(IMG)
rm -f $(TARGET)
rm -fr $(SYSROOT)
for m in $(MODULES); do $(MAKE) -C $$m clean; done
qemu:
qemu-system-x86_64\
-kernel ./kernel/kernel.elf\
qemu-system-x86_64 $(TARGET)\
-m 256M -accel tcg -monitor stdio -net none\
-rtc base=localtime,clock=host,driftfix=slew\
-audiodev $(AUDIODEV),id=audio0 -machine pcspk-audiodev=audio0