The jsix Operating System
Introduction
jsix is a custom multi-core x64 operating system being built from scratch, supporting modern [1] Intel or AMD CPUs, and UEFI firmware. It was initially created out of a desire to explore UEFI and to explore what’s possible with a microkernel architecture on modern 64-bit architectures.
Most of jsix is written in C++ (C++17, using LLVM), but you’ll also find some assembly (in NASM syntax) and Python for development tooling.
jsix can be found on GitHub, and is released under the terms of the MPL 2.0.
A note on the name
This kernel was originally named Popcorn, but I have since discovered that the Popcorn Linux project is also developing a kernel with that name, started around the same time as this project. So I’ve renamed this kernel jsix as an homage to L4, xv6, and my wonderful wife.
The name jsix is always styled jsix or j6
, never capitalized.
Current Features
The jsix kernel is quite far along now, but the userland systems are still lacking.
Platform: amd64
UEFI bootloader
Multi-core & multi-tasking microkernel
Work-stealing SMP scheduler
Pluggable panic handler modules
Capability-style object-oriented syscall API
Custom IDL for specifying and documenting syscalls
Virtual memory based on sharable Virtual Memory Area objects (VMAs)
Kernel API library (libj6), also provides features built on kernel primitives:
Channels (async stream IPC) built on shared memory and futexes
Ring buffers via doubly-mapped pages
Custom libc
Runtime dynamic linker
Init service
Built-in VFS service for the initrd
ELF loader
Service-lookup protocol service
Userland UART driver
Userland UEFI framebuffer driver
Userland kernel log output service
Userland unit test runner
Build configuration system (bonnibel)