This is the repo for the work done from my Independent Study. The goal is to create an Operating System that is heavily based Linux and handles:
- Interrupt Handling
- Memory Management
- Process Scheduling
- Userspace programs
- LibC
This project is meant to be built under Linux with a cross compiler. The projects can be built with the local tools of the system or with docker
To build the project without the use of docker, the following tools are required:
- Make
- grub-mkrescue
- xorriso
- nasm
- i686-gcc-elf
- bash
To build the project and produce an .iso in build
, simply run:
make docker
The docker image will be pulled, and the project will be built.
The system requirments to run the project is qemu-system-i386
and can be run with make run
The operating system can be debugged using qemu's gdb-stub. Two terminal sessions are required, and qemu can be launched with make qdb
and gdb can be connected to qemu with make gdb
Here is a small list of resources that were used throughout the project:
- OSDev Wiki : this is an invaluable resource and the barebones and meaty skeleton examples were extremely helpful
- MonkOS: the inspiration and basis for the docker build system
- The World of Protected Mode : referenced to load the GDT
- Bran's Kernel Implementation: an excelent resource that was reference for setting up the GDT and IDT