Skip to content

blazingbbq/os_dev

Repository files navigation

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

About

A simple x86 kernel to explore topics in operating system design and computer architecture. Based on the littleosbook, with reference to the OSDev Wiki.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors