Some of you may already know I’m coding my own operating system. I started like 10 years ago, started again from zero some times and am now at the 5th attempt (probably). Sources are available on GitHub and my personal Gitlab instance (with CI, pages and issue tracker).
LF OS’ architecture builds around a microkernel providing only the most lowlevel services to applications, mostly scheduling and memory management. There is also a service registry in the kernel, where applications implementing a given service (like filesystems, window managers, …) can be found by other applications.
The whole code has some platform portability in mind, but would need a lot of cleaning before that would be possible. Right now, LF OS requires an AMD64 CPU (most modern 64bit desktop CPU) and UEFI (but the loader is cut from the kernel by now, you could write a Grub module or custom loader for i.e. BIOS).
Writing this blog post is actually some kind of procrastination. Currently feels like the actual hard parts are done and now I just have to write more things to it. Currently already working
- custom UEFI loader
- loads kernel and files
- retrieves memory map
- simple scheduling
- syscall definition, code-generator and handling
- framebuffer console
- page- and slub-level memory management (both physical and virtual)
Maybe I’ll stop procrastinating this night and do one of those things:
- malloc() and free() for the kernel
- better data structure for processes
Wish me luck!