bootable with small multiboot kernel

git-svn-id: svn://anubis/hos/trunk@5 5b3e749e-e535-0410-8002-a9bb6afbdfca
This commit is contained in:
josh 2007-07-25 03:00:58 +00:00
parent bdf4ce8ae8
commit 8f00324b30
4 changed files with 46 additions and 4 deletions

View File

@ -2,8 +2,9 @@
HOS = hos HOS = hos
MKISOFS = genisoimage MKISOFS = genisoimage
ISO = $(HOS).iso ISO = $(HOS).iso
QEMU = qemu-system-x86_64
.PHONY: kernel iso clean .PHONY: kernel iso clean qemu
# default target: build the kernel and ISO image # default target: build the kernel and ISO image
all: kernel iso all: kernel iso
@ -14,9 +15,13 @@ kernel:
# build the ISO image # build the ISO image
iso: kernel iso: kernel
cp kernel/$(HOS) iso/boot
$(MKISOFS) -R -b boot/grub/stage2_eltorito -no-emul-boot \ $(MKISOFS) -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o $(ISO) iso -boot-load-size 4 -boot-info-table -o $(ISO) iso
clean: clean:
make -C kernel clean make -C kernel clean
-rm -f $(ISO) -rm -f $(ISO) iso/boot/$(HOS)
qemu:
$(QEMU) -cdrom $(ISO) -boot d -m 384 -localtime

6
iso/boot/grub/menu.lst Normal file
View File

@ -0,0 +1,6 @@
timeout 10
default 0
title HOS
kernel /boot/hos

View File

@ -1,8 +1,12 @@
KERNEL = hos
TARGET = elf32-i386
.PHONY: clean .PHONY: clean
all: all:
@echo Nothing yet nasm -f elf -o boot.o boot.asm
ld --oformat $(TARGET) -o $(KERNEL) boot.o
clean: clean:
@echo Nothing yet -rm -f *~ $(KERNEL) *.o

27
kernel/boot.asm Normal file
View File

@ -0,0 +1,27 @@
%define MULTIBOOT_HEADER_MAGIC 0x1BADB002
%define MULTIBOOT_HEADER_FLAGS 0x3
[global start]
[global _start]
start:
_start:
jmp multiboot_entry
align 4
multiboot_header:
; magic
dd MULTIBOOT_HEADER_MAGIC
; flags
dd MULTIBOOT_HEADER_FLAGS
; checksum
dd -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
multiboot_entry:
mov byte [0xB8000+160*10+2*2], 'J'
mov byte [0xB8001+160*10+2*2+1], 0x07
looplbl:
hlt
jmp looplbl