Skip to content

Latest commit

 

History

History
74 lines (58 loc) · 1.54 KB

README.md

File metadata and controls

74 lines (58 loc) · 1.54 KB

Simple OS for the i386 architecture

To Do

Main Goals

  • Boot + Hello World
  • Call C code from assembly
  • Framebuffer driver
  • Serial port driver
  • Segmentation
  • Interrupt handling
    • Register interrupt handlers by interrupt number
    • Setup timer interrupt handler
  • Keyboard driver
  • Run GRUB modules
  • Enable paging
  • Page frame allocation
  • Create kernel heap
  • Running C programs in User Mode
  • Implement filesystem
  • System calls
  • Implement process scheduling

Stretch Goals

  • Simple shell
  • File editor

Side Quests:

  • Better logging / printing
    • newline characters
    • colors
    • log levels
  • Util file:
    • itoa
    • str_reverse

Development requirements

Install dependencies:

sudo apt install build-essential nasm genisoimage bochs bochs-sdl bochs-x

Launch the os

Make

Make run

Manual

Generate loader.o: nasm -f elf32 loader.s

Link kernel.elf executable: ld -T link.ld -melf_i386 loader.o -o kernel.elf

Generate iso image:

genisoimage -R                              \
            -b boot/grub/stage2_eltorito    \
            -no-emul-boot                   \
            -boot-load-size 4               \
            -A os                           \
            -input-charset utf8             \
            -quiet                          \
            -boot-info-table                \
            -o os.iso                       \
            iso

Run Bochs: bochs -f bochsrc.txt -q