Norost B is an object-oriented OS built around a microkernel. It is mainly focused on isolating processes from the rest of the system to improve security, portability ∧ scaling.
Website
Design rationale
Documentation
Files, network sockets … are all objects and have a common API. This keeps the interface simple & comprehensible while providing a great amount of flexibility and power.
Any process can create new objects. IPC is performed via operations on objects.
Processes can only perform operations on objects they have a handle to. This makes it trivial to isolate processes from the rest of the system by simply giving it only handles to objects it needs.
Minimal applications can use the synchronous API to keep the binary small while more advanced applications can take advantage of asynchronous I/O to more efficiently perform batch work.
Applications can also take advantage of shared memory with specialized I/O structures to further reduce overhead.
Some basic support for networking is present. A basic SSH server and HTTP server are available.
Applications can allocate a window and draw any arbitrary pixels to it. The tiling window manager automatically handles layout to optimize screen estate.
The kernel is nearly fully preemptible.
Most drivers are outside the kernel, which makes it easier to replace and/or stub them.
| Architecture | Supported |
|---|---|
x86 |
✗ |
x64 |
✓ with SSE and AVX2 |
RISC-V |
✗ |
USB: xHCI
VIRTIO block devices
USB mass storage devices (BBB)
Plain framebuffer via multiboot2
VIRTIO GPU
Intel HD Graphics (very poorly, only on specific laptops with specific boot settings)
PS/2 keyboard & mouse
USB HID
You will need a patched Rust compiler.
Once the compiler is properly configured, mkiso.sh will create a bootable image.
run.sh will run the OS in QEMU.