Skip to content

My second attempt in making a simple operating system

Notifications You must be signed in to change notification settings

pAplakidis/PaulOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PaulOS

My take on geohot's fromthetransistor operating system section (section 5)

Kernel Design: Monolithic

Linux-ish:
* only user space threads
* open, read, write, close
* fork, execve, wait, sleep, exit
* mmap, munmap, mprotect
* Consider the debug interface you are using, ranging from printf to perhaps a gdbremote stub into kernel


Requirements:
- make
- cross compiler for i386 (check out [https://wiki.osdev.org/GCC_Cross-Compiler])
- grub
- xorriso
- qemu
NOTE: these requriements are not exactly the packages needed to be installed


Build:
./build.sh

Clean:
./clean.sh

Run (using qemu-system-i386):
./run.sh

For multiboot kernel (directly without bootable medium):
$ qemu-system-i386 -kernel PaulOS.bin


STEPS:
- interrupt handlers
- process management
- paging + memory map (physical first, then paging)
- usermode -> syscalls (open, read, write, ...)
- shell
- drivers(?)
- filesystem


TODO:
* output object files in build/ (modify Makefile)
* replace "" with <> in includes

* implement interrupts and exceptions
* plan memory map (virtual and physical)
* move on with syscalls
* malloc/free (mmap, munmap, mprotect)
* open, read, write, close
* fork, execve, wait, sleep, exit
* build drivers

check out:
- https://wiki.osdev.org/Main_Page
- https://github.com/SerenityOS/serenity

About

My second attempt in making a simple operating system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published