GenesisOS: Publishing my micro-kernel!

 Date: April 22, 2024

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.

 Tags:  kernel dev osdev

Previous
⏪ Exploiting n-day in Home Security Camera

Next
Hunting bugs in Nginx JavaScript engine (njs) ⏩