Pinned Tweet
I made a New Year's resolution: build a general-purpose microkernel operating system from scratch, in public. I'll use this account to post the devlog to share how it evolves :)
Hello World from Linux compatibility (w/ process sandboxing). The OS runs unmodified Linux binaries natively, and a separate supervisor process intercepts system calls.
The architecture is very similar to gVisor - a separate process implements the "userspace kernel", and it isolates your Linux applications from others.
I wrote about my 10 days of creating a new microkernel-based operating system in Rust. This was fun.
seiya.me/blog/new-microkerne…
I've ported smoltcp TCP/IP stack, fixed virtio_net driver bugs, and added some kernel features to run ... an HTTP server!
Implemented hardware interrupt system calls, bulk data transfer IPC mechanism, and event-driven API to get virtio-net to work. I can finally start working on TCP/IP support.
Implemented an asynchronous message passing, and a completion-based event queue. Now it can do message ping pong over IPC.
I've spent the last 2 days exploring the API design for my new microkernel OS, and it's finally taking shape: event-driven, completion-based, request +reply (not one-way), and self-initiated memory copies.
Implemented PCI, DMA buffer allocation, virtio-pci, and system calls for them. My virtio-net driver is now sending an ARP packet:
Context switching! The implementation is pretty straightforward thanks to single kernel stack design.









