Home

Awesome

AlmeidaOS

Codacy Badge

Simple, self-contained, clean code, well-documented, hobbyist 64-bit operating system for Intel and AMD processors. It's written in Assembly (Intel syntax) and C (GNU99 Standard) in which I strive for adding comments to the source code as much as possible so it could be used as a reference for future OS developers.

It contains the following components written from scratch:

BIOS

ComponentDescriptionSource code
MBRFirst stage bootloadercode
LoaderSecond stage bootloadercode

Kernel

ComponentDescriptionSource code
PML4Paging Structurecode
BuddyMemory allocator Systemcode
PrintKprintf-like string format parsing utilitycode
Serial Driversend printk msgs via RS232 to help debuggingcode
Core DumpDump CPU registers for debugging purposescode
Syscall/Sysretmethod chosen to jump to Ring 3 and backcode
PITProgrammable Interval Timercode
PICProgrammable Interrupt Controllercode
(x)delayBased on tightloops given that I'm using PITcode
CMOS RTCReal-time clockcode
SchedulerSimple Round-Robin schedulercode

libc

functions are being added on-demand: code

More to come! Star/Watch this repo to stay tuned!

Build

In order to build this app, you are expected to have make and docker installed in your machine. All of the other building dependencies should be taken care of automatically by the docker image created during this step.

To build it you have to run:

make build

Run

In order to run this app, you are expected to have make and qemu-system-x86_64 installed in your machine.

make test

Wishlist

To make sure I won't lose focus on what I want this OS to be able to do, I decided to write a list of features that I want to implement in the short to medium term.

Stretch goals

Things that would be fantastic to have but I am not sure if I have what it takes to do within my lifetime.

References

These are all the references that helped me a lot during the development of AlmeidaOS

Forums:

Books:

Existing OSes:

Courses: