An operating system kernel enthusiast. @vercel.

Joined June 2018
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 :)
3
9
550
Hello World from Linux compatibility (w/ process sandboxing). The OS runs unmodified Linux binaries natively, and a separate supervisor process intercepts system calls.
2
5
337
The architecture is very similar to gVisor - a separate process implements the "userspace kernel", and it isolates your Linux applications from others.
1
1
182
Unlike Linux, FTL provides system calls for dedicated binary emulation to minimize system calls & memory copies. It should perform better than, or at least on par with gVisor + ptrace.
161
"It works" on Google Cloud 🎉
1
8
291
My 9-days-old OS is now running on Google Compute Engine
1
5
232
I've ported smoltcp TCP/IP stack, fixed virtio_net driver bugs, and added some kernel features to run ... an HTTP server!
6
219
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.
6
200
Implemented an asynchronous message passing, and a completion-based event queue. Now it can do message ping pong over IPC.
5
246
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.
1
2
180
Partly inspired by MINIX3’s memory grants (dedicated memory copy system calls), Windows IOCP/Linux io_uring (completion-based API), and JavaScript's Promise.withResolvers.
1
2
128
Went through MP configuration table, local APIC, and I/O APIC to support hardware interrupts.
4
157
Implemented PCI, DMA buffer allocation, virtio-pci, and system calls for them. My virtio-net driver is now sending an ARP packet:
1
1
5
456
Get initfs from bootloader, parse and load an ELF file, and invoke the "print" system call.
1
2
166
A cool thing is that the application is position-independent and runs in kernel mode like Unikernels: system calls are just function calls + Rust ensures memory safety. The user mode isolation will work transparently as well.
115
Context switching! The implementation is pretty straightforward thanks to single kernel stack design.
4
127
GDT/TSS/IDT initialization went well and it's now getting an exception successfully
1
127