QSOE 0.1: A QNX-Inspired OS for RISC-V with Selectable Microkernels

The first public release of QSOE (version 0.1) is out, bringing a QNX Neutrino-inspired operating system to 64-bit RISC-V hardware. What sets QSOE apart is its two-kernel design: it ships in two variants that share a single userspace and build system. QSOE/N runs on Skimmer, a new SMP microkernel written from scratch. QSOE/L runs on the formally verified seL4 kernel. The userspace is 100% identical across both variants—only the task manager and C library differ at the kernel interface layer.

Architecture and Design

QSOE follows the QNX Neutrino tradition: a small kernel with everything else in userspace, synchronous message-passing IPC, and the resource-manager model for services. The design targets 64-bit RISC-V (RV64, Sv39) on the SiFive HiFive Unmatched (FU740). Development happens in QEMU, but both variants now boot on real hardware. The entire project is released under Apache-2.0.

Downloads and Quick Start

Pre-built binaries and source are available. For QEMU, the fastest way to see QSOE run is to grab nvme.img.gz (and virtio.img.gz for QSOE/L) and use the provided run-nvme.sh launcher:

gunzip nvme.img.gz virtio.img.gz
NVME_IMG=./nvme.img VIRTIO_IMG=./virtio.img ./run-nvme.sh

This boots to a menu where you pick a variant, then a login: prompt appears. Log in as root with password QSOE. You need QEMU 11.0.1+ and the edk2 RISC-V UEFI firmware.

For real hardware, copy mrbml-riscv64.efi to the EFI System Partition, place kernel images in /boot/qsoe/, and configure /boot/mr-bml/mr-bml.cfg with entries like:

menuentry 'QSOE/N (Skimmer)' {
    kernel /boot/qsoe/skimmer.bin mainfs=/dev/nvme0n1p8
    modpkg /boot/qsoe/modpkg.cpio
}
menuentry 'QSOE/L (seL4)' {
    kernel /boot/qsoe/qsoe-l-sifive.elf mainfs=/dev/nvme0n1p8
}

Building from Source

Building requires a riscv64-linux-gnu- cross toolchain (rv64gc) and stock make:

git clone https://gitlab.com/qsoe/os
cd os
make prepare   # fetches components including seL4 for QSOE/L
make           # builds both variants
make dist      # optional: QEMU disk images

The build produces exactly the files listed on the Downloads page. The whole tree is Apache-2.0.

Roadmap to 1.0

The roadmap maps out ten releases from 0.1 to 1.0. Key milestones:

  • 0.2: Text-mode console on GK208 (Kepler) GPU for on-device display.
  • 0.3: Writable filesystem (qrvfs with file create/unlink, O_CREAT/O_TRUNC).
  • 0.4: Dual-panel file manager (flagship app).
  • 0.5: First hard-real-time audio device (deva-hdmi).
  • 0.6: Conformance suites and real-time audio package.
  • 0.8: Second hardware target (SpaceMiT K3, RVA23-class) with AIA interrupt architecture.
  • 0.9: QNX-libc compatibility push—recompile QNX utilities.
  • 1.0: API comparable to QNX 6.x, with fork()posix_spawn support.

Documentation

Four PDF manuals accompany the release:

  • Design.pdf: Two-kernel model, taskman, IPC, resource-manager.
  • UserGuide.pdf: Installation, shell, commands, text editor.
  • ProgrammingBook.pdf: Programming for QSOE, including the Resource Server Framework.
  • AppPortingGuide.pdf: Porting Unix/QNX software—no fork(), no brk(), select() via poll().

Why This Matters

QSOE brings a QNX-like microkernel architecture to open-source RISC-V hardware, offering a formally verified kernel option (seL4) alongside a custom one. For developers interested in real-time systems, embedded, or OS research, this is a rare opportunity to experiment with a production-quality microkernel OS on affordable hardware.

Editor's Take

I've been following microkernel OS projects for years, and QSOE stands out because it doesn't just clone QNX—it provides two kernels sharing one userspace, letting you compare performance and features directly. I wish more projects documented their roadmap as concretely as QSOE does. The choice of RISC-V is smart; it avoids x86 legacy baggage. If you're into low-level systems, grab the QEMU image and play with it. The real test will be 1.0's QNX compatibility.

Developer Insights

  • Try QSOE in QEMU first with the provided disk images to see the two-kernel system in action.
  • Study the AppPortingGuide.pdf before porting Unix software; the lack of fork() and brk() requires significant changes.
  • Contribute to the project via GitLab—the roadmap shows clear milestones for filesystem and audio support.

Tags

  • QSOE
  • QNX
  • microkernel
  • seL4
  • RISC-V
  • operating system
  • real-time
  • open-source

Category

open-source

Quality Score

82