GenesisOS: Publishing my micro-kernel!
Hello world, and happy Passover ✡️.
After more than a year, I finally decided to publish a tiny side project I’ve been working on.
Link to the project: / https://github.com/0xbigshaq/GenesisOS
This is a collection of all my tweets/progress over the time whil working on this:
- Day 1: Reading stuff about micro kernels, looking for OSDev enthusiast communities so I can ask and learn more on how to make my first steps.
- Day 17: Kernel allocator
- Day 53: Virtual Memory
- Day 59: Mental Breakdown because of PIC
- Day 63: Interrups, and ranting about Intel specs
- Day 70: Programming 8259A IRQ Chip to read keyboard keystrokes
- Day 86: Started working on a scheduler, almost gave up at this point
- Day 135: Scheduler, round two, I lost again.
- Day 156: Scheduler, round three, it works!
- Day 177: Almost gave up because ATA PIO is annoying
- Day 178: Didn’t gave up! Tried again. Now reading from disk with ATA PIO successfully
- Day 180: Took another break. lost motivation. Wanted to do other things(v8, embedded, etc.)
- Day 234: Planned on coming back but World War III just started (October 7th)
- Day 409: Announcing my return and set a goal - loading an
init
binary into memory as the first userland process. - Day 417: FAT32 Driver and userland VM works!
init
process/shell is loaded successfully. - Day 418: Learning about some GitHub Actions stuff because I’m bored and I don’t want to develop more syscalls.
There are many other things that are still not ready. Like writing to the disk, networking drivers, basic syscalls like execv
/fork
, etc. I’m not sure if I have the energy to get into it tho. This is why i’m writing this blogpost: if you want to contribute & make a community out of this silly project, join my discord server and we can try to set something up.
Either way, I’m glad I finally published it and didn’t keep it as another project in my archive. It’s been a nice journey.