Skip to content

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

Notifications You must be signed in to change notification settings

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

Watchers

Forks

Releases

No releases published

Packages

No packages published