From e7627861e8a2ed8f7d13c67f78ab7ff34fa67778 Mon Sep 17 00:00:00 2001 From: Hayden Chow <kin3.chow@live.uwe.ac.uk> Date: Thu, 5 Dec 2024 19:51:01 +0000 Subject: [PATCH] edited --- Worksheet2/iso/boot/grub/makefile | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Worksheet2/iso/boot/grub/makefile diff --git a/Worksheet2/iso/boot/grub/makefile b/Worksheet2/iso/boot/grub/makefile new file mode 100644 index 0000000..6787354 --- /dev/null +++ b/Worksheet2/iso/boot/grub/makefile @@ -0,0 +1,54 @@ +NASM = nasm +LD = ld +MKISO = genisoimage +QEMU = qemu-system-i386 + +ISO_DIR = iso +GRUB_DIR = $(ISO_DIR)/boot/grub +SRC_DIR = source +BUILD_DIR = build + + +LOADER_SRC = $(SRC_DIR)/loader.asm +LINKER_SCRIPT = $(SRC_DIR)/link.ld +KERNEL = $(BUILD_DIR)/kernel.elf +ISO = os.iso +GRUB_CFG = $(GRUB_DIR)/menu.lst +STAGE2_ELTORITO = /opt/os/stage2_eltorito + +NASM_FLAGS = -f elf +LD_FLAGS = -T $(LINKER_SCRIPT) -melf_i386 + +all: $(ISO) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(KERNEL): $(LOADER_SRC) $(LINKER_SCRIPT) | $(BUILD_DIR) + $(NASM) $(NASM_FLAGS) -o $(BUILD_DIR)/loader.o $(LOADER_SRC) + $(LD) $(LD_FLAGS) $(BUILD_DIR)/loader.o -o $(KERNEL) + +$(GRUB_CFG): | $(GRUB_DIR) + cp $(STAGE2_ELTORITO) $(GRUB_DIR)/ + echo "default=0\ntimeout=0\ntitle os\nkernel /boot/kernel.elf" > $(GRUB_CFG) + +$(GRUB_DIR): + mkdir -p $(GRUB_DIR) + +$(ISO): $(KERNEL) $(GRUB_CFG) + cp $(KERNEL) $(ISO_DIR)/boot/ + $(MKISO) -R \ + -b boot/grub/stage2_eltorito \ + -no-emul-boot \ + -boot-load-size 4 \ + -A os \ + -input-charset utf8 \ + -quiet \ + -boot-info-table \ + -o $(ISO) $(ISO_DIR) + +run: $(ISO) + $(QEMU) -nographic -boot d -cdrom $(ISO) -m 32 -d cpu -D logQ.txt + +clean: + rm -rf $(BUILD_DIR) $(ISO) $(ISO_DIR)/boot/kernel.elf logQ.txt -- GitLab