From 2eff83e3878532cd07bb2acb4a6e6861a6da23e4 Mon Sep 17 00:00:00 2001 From: Victor Timofei Date: Mon, 25 Apr 2022 22:58:45 +0300 Subject: [PATCH] Create ISO --- Makefile | 21 +++++++++++++++++++++ fonts/Makefile | 1 + grub/grub.cfg | 3 +++ kernel/Makefile | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 grub/grub.cfg diff --git a/Makefile b/Makefile index 9f3e56d..ae32f6a 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,8 @@ BUILD_DIR_ABS := $(abspath $(BUILD_DIR)) FONT_OBJS := $(patsubst %.o,$(BUILD_DIR_ABS)/%.o, $(FONTS)) +ISO_DIR := $(BUILD_DIR)/iso_dir + CROSS_AS := ${TARGET}-as CROSS_CC := ${TARGET}-gcc CROSS_LD := ${TARGET}-ld @@ -21,6 +23,25 @@ export PATH := ${CROSS_BIN}:$(PATH) .PHONY: all all: $(BUILD_DIR)/kernel.bin $(BUILD_DIR)/$(FONTS) +.PHONY: run-qemu +run-qemu: $(BUILD_DIR)/kernel.iso + qemu-system-x86_64 -cdrom $< + +$(BUILD_DIR)/kernel.iso: $(ISO_DIR)/boot/kernel.bin + grub-mkrescue -o $@ $(ISO_DIR) + +$(ISO_DIR)/boot/kernel.bin: $(BUILD_DIR)/kernel.bin $(ISO_DIR)/boot/grub/grub.cfg + @cp $< $@ + +$(ISO_DIR)/boot/grub/grub.cfg: $(ISO_DIR)/boot + @cp -r grub $< + +$(ISO_DIR)/boot: $(ISO_DIR) + @mkdir -p $@ + +$(ISO_DIR): + @mkdir -p $@ + $(BUILD_DIR)/kernel.bin: $(BUILD_DIR) $(BUILD_DIR)/$(FONTS) @$(MAKE) -C kernel \ BUILD_DIR=$(abspath $(BUILD_DIR)) \ diff --git a/fonts/Makefile b/fonts/Makefile index ad0b993..67faf46 100644 --- a/fonts/Makefile +++ b/fonts/Makefile @@ -2,6 +2,7 @@ OBJECTS_GZ := $(patsubst %.o, /usr/share/kbd/consolefonts/%.psfu.gz, $(OBJECTS) OBJECTS_PSF := $(patsubst %.o, $(BUILD_DIR)/%.psfu, $(OBJECTS)) SYMS_PREFIX := consolefonts +.PHONY: all all: $(BUILD_DIR)/$(OBJECTS) $(BUILD_DIR)/%.o: $(OBJECTS_PSF) diff --git a/grub/grub.cfg b/grub/grub.cfg new file mode 100644 index 0000000..dad095b --- /dev/null +++ b/grub/grub.cfg @@ -0,0 +1,3 @@ +menuentry "kernel" { + multiboot /boot/kernel.bin +} diff --git a/kernel/Makefile b/kernel/Makefile index a3c0330..53ae6a7 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -12,7 +12,7 @@ LINKER_LD := linker.ld all: $(BUILD_DIR)/kernel.bin $(BUILD_DIR)/kernel.bin: $(OBJECTS_S) $(OBJECTS_C) $(LINKER_LD) - $(CROSS_CC) \ + @$(CROSS_CC) \ -T $(LINKER_LD) \ $(LDFLAGS) \ $(OBJECTS_C) \