Cached at:
06/28/26, 10:59 PM
# QSOE Systems
Source: [https://qsoe.net/](https://qsoe.net/)
## QSOE
A QNX\-inspired operating system with selectable kernels\.
**News:**QSOE 0\.1 is out — the first public release of the unified two\-kernel system \(June 2026\)\.[Read the announcement →](https://qsoe-dev.blogspot.com/2026/06/qsoe-project-v01-is-released.html)
QSOE ships in two variants that share one userspace and one build system\.QSOE/Nruns on**Skimmer**, a microkernel written from scratch for this project \(SMP by design\);QSOE/Lruns on**seL4**as its kernel\.
Both variants, when compiled, offer the kernel and initrd files directly usable in e\.g\. U\-Boot loader\. The userspace is**100% identical**across both variants; the only parts produced per\-kernel are`taskman`, the task manager, and`libc\.so`— the C library, which is around 85% shared at the source level and diverges only at the thin layer where it meets the kernel\.
The design follows the QNX Neutrino tradition: a small kernel with everything else in userspace, synchronous message\-passing IPC, and the resource\-manager model for services\.
QSOE targets 64\-bit RISC\-V \(`RV64`,`Sv39`\) on the SiFive HiFive Unmatched \(`FU740`\), with QEMU used for day\-to\-day development\. Both QSOE variants now boot on real hardware\. Released under Apache\-2\.0\.
DownloadsQSOE can be built from source or installed from pre\-built binaries\. Ready\-made images for each release are published at[github\.com/qsoe\-dev/dl](https://github.com/qsoe-dev/dl)\(current release:**0\.1**\)\. The files are:
- [`skimmer\.bin`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/skimmer.bin)— the Skimmer microkernel: the kernel of the**QSOE/N**variant\. A raw binary image, loaded by the bootloader \(or QEMU\) together with the userspace package below\.
- [`modpkg\.cpio`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/modpkg.cpio)— the module package: the shared QSOE userspace \(taskman,`init`, the C library, the shell, drivers and utilities\) as a CPIO archive\.**QSOE/N**boots it as an initrd alongside`skimmer\.bin`\.
- [`qsoe\-l\-qemu\.elf`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/qsoe-l-qemu.elf)— the**QSOE/L**variant \(on the seL4 kernel\) as a single, self\-contained ELF for the QEMU`virt`machine\. It bundles the elfloader, the seL4 kernel, taskman and the userspace together — nothing else is needed to boot\.
- [`qsoe\-l\-sifive\.elf`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/qsoe-l-sifive.elf)— the same QSOE/L image, built for the SiFive HiFive Unmatched \(FU740\) board\.
- [`mrbml\-riscv64\.efi`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/mrbml-riscv64.efi)—**mr\-bml**, QSOE's own bootloader \(an EFI application for RISC\-V\)\. It can load either variant and drives the boot menu on real hardware\.
- [`nvme\.img\.gz`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/nvme.img.gz)— a ready\-to\-run, self\-booting QEMU disk image \(GPT\)\. Its EFI partition holds`mr\-bml`, and an on\-disk root holds both kernels — so QEMU boots straight to the mr\-bml menu, no`\-kernel`needed\. The fastest way to see QSOE run; see**Running under QEMU**below\.
- [`virtio\.img\.gz`](https://github.com/qsoe-dev/dl/raw/main/releases/0.1/bin/virtio.img.gz)— a companion root disk used*only*when running**QSOE/L**under QEMU \(stock seL4 predates the interrupt controller QEMU's NVMe needs, so it mounts its root from a virtio disk instead\)\. Not needed for QSOE/N or for real hardware\.
In short: to**run it in QEMU**, grab`nvme\.img\.gz`\(plus`virtio\.img\.gz`for QSOE/L\) and see**Running under QEMU**\. To put it on**real hardware**, you need`mrbml\-riscv64\.efi`plus the kernels —**QSOE/N**uses`skimmer\.bin`\+`modpkg\.cpio`,**QSOE/L**uses one of the`qsoe\-l\-\*\.elf`images — and see**Installation**\.
Running under QEMUThe quickest way to see QSOE run — no hardware, no`\-kernel`juggling\. The`nvme\.img`download is a self\-booting UEFI disk: QEMU's firmware runs`mr\-bml`from it, and mr\-bml's menu starts either variant straight off the disk\.
#### You need
- `qemu\-system\-riscv64`— version**11\.0\.1 or newer**for QSOE/N \(its NVMe needs the AIA interrupt controller\)\.
- edk2 RISC\-V UEFI firmware — on Debian/Ubuntu, the`qemu\-efi\-riscv64`package\.
- The launcher`run\-nvme\.sh`from the[os](https://gitlab.com/qsoe/os)repository — it wraps the right QEMU machine, firmware and disks for each variant, so you don't have to\.
#### Run it
```
# unpack the image(s) — add virtio.img.gz only if you want QSOE/L
gunzip nvme.img.gz virtio.img.gz
# point the launcher at them and pick a variant from its menu
NVME_IMG=./nvme.img VIRTIO_IMG=./virtio.img ./run-nvme.sh
```
Pass`n`or`l`to skip the menu \(`\./run\-nvme\.sh n`\)\. The script selects the matching QEMU machine automatically — QSOE/N on the AIA machine with an NVMe root, QSOE/L on the PLIC machine with the virtio root disk\. The mr\-bml menu and the system console both appear on your terminal; choose a variant and it boots to a`login:`prompt\. Log in as`root`with password`QSOE`\.
InstallationReal hardware, real disk\. QSOE 0\.1 boots on the SiFive HiFive Unmatched \(FU740\); the SpaceMiT K3 is a future target\. This assumes a board already running Linux — you'll be placing files on its existing EFI and boot partitions, so familiarity with the board's firmware is expected\.
The boot model is simple:**mr\-bml**lives in the EFI System Partition; it reads its menu and the kernels from an**ext2/3/4**partition; the chosen variant then mounts its own root from a**fs\-qrv**partition\.
#### Steps
1. Copy`mrbml\-riscv64\.efi`into your ESP as`EFI/BOOT/BOOTRISCV64\.EFI`\(the UEFI removable\-media path\), or register it with`efibootmgr`as a boot entry\.
2. On your boot/root filesystem, create`/boot/qsoe/`and copy the kernels there:`skimmer\.bin`\+`modpkg\.cpio`for QSOE/N,`qsoe\-l\-sifive\.elf`for QSOE/L\.
3. Create`/boot/mr\-bml/mr\-bml\.cfg`with one entry per variant — for example:
```
# /boot/mr-bml/mr-bml.cfg — adjust the mainfs= partition to your disk
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
}
```
The`mainfs=`device names the partition holding the QSOE root filesystem \(fs\-qrv\) — set it to whichever partition you've devoted to QSOE on your board\. On real hardware there is no QEMU virtio split:*both*variants drive the NVMe disk directly\.
Building from sourceQSOE is built with a`riscv64\-linux\-gnu\-`cross toolchain \(rv64gc\) and a stock`make`; QEMU is handy for testing\. The umbrella repository orchestrates the build and pulls in the component repositories that match its release tag\.
```
git clone https://gitlab.com/qsoe/os
cd os
make prepare # fetch the components for this tag (see component.list)
make # build both variants: QSOE/N, then QSOE/L
make dist # optional: the QEMU disk images (nvme.img.gz, virtio.img.gz)
```
QSOE/L additionally shallow\-clones the seL4 kernel during`make prepare`\. The build produces exactly the files on the Downloads list\. The whole tree is Apache\-2\.0; the source lives under[gitlab\.com/qsoe](https://gitlab.com/qsoe)\.
DocumentationThe QSOE manuals, published as PDF alongside the releases:
- [`Design\.pdf`](https://github.com/qsoe-dev/doc/raw/main/Design.pdf)— the architecture: the two\-kernel model, taskman, the IPC and resource\-manager design\.
- [`UserGuide\.pdf`](https://github.com/qsoe-dev/doc/raw/main/UserGuide.pdf)— installation, the shell, the basic commands, the text editor and the utilities\.
- [`ProgrammingBook\.pdf`](https://github.com/qsoe-dev/doc/raw/main/ProgrammingBook.pdf)— programming for QSOE, including the**Resource Server Framework**chapter\.
- [`AppPortingGuide\.pdf`](https://github.com/qsoe-dev/doc/raw/main/AppPortingGuide.pdf)— porting Unix \(and QNX\) software to QSOE: what to account for — no`fork\(\)`, no`brk\(\)`,`select\(\)`via`poll\(\)`, and the rest\.
RoadmapIt is often said that the Linux kernel has no roadmap\. QSOE does — the ten releases that carry it from today's**0\.1**to the unified**1\.0**are mapped out\. A working plan, not a contract: milestones may shift as the work reveals what's really next\.
- `0\.1`—**First public release\.**Two\-kernel foundation, shared userspace, read\-only`fs\-qrv`at`/usr`, interactive getty \+ login, sources opened\.*\(current\)*
- `0\.2`— Text\-mode console on the GK208 \("Kepler"\): a watchable on\-device display, so the real\-time audio work can be seen on hardware, not just over serial\.
- `0\.3`— First writable filesystem: qrvfs gains file create/unlink,`O\_CREAT`/`O\_TRUNC`,`realpath`and symlink resolution\.
- `0\.4`— The canonical dual\-panel file manager: QSOE's flagship application, exercising the writable filesystem and the userspace end to end\.
- `0\.5`— First`deva\-hdmi`audio device, with the priority / interrupt / scheduling groundwork the hard\-real\-time path needs\.
- `0\.6`— Comprehensive conformance suites, and the audio real\-time package \(up to N hard\-real\-time tasks on an N\-CPU system\)\.
- `0\.7`—to be definednearer the time\.
- `0\.8`— Second hardware target \(SpaceMiT K3, RVA23\-class\) and the AIA interrupt architecture \(IMSIC/APLIC\), so MSI/MSI\-X works uniformly across boards\.
- `0\.9`— QNX\-libc compatibility push: recompile and run a target set of QNX\-source utilities, closing the remaining libc gaps\.
- `1\.0`— First stable release: API comparable to QNX 6\.x; intended for porting QNX userland software \(`fork`→`posix\_spawn`\)\.
## Other projects
Earlier and adjacent work\.
- [GateMate PC](https://gitlab.com/gatemate/pc)— a personal computer built on the Cologne Chip GateMate FPGA\.
- [GateMate System/359](https://gitlab.com/gatemate/s359)— an IBM S/360\-inspired FPGA implementation of a computing system, with I/O channels and a powerful macroassembler\.
- [QRV](https://qsoe.net/qrv.html)— a QNX port to RISC\-V \(historical\); fed hardware bring\-up lessons into QSOE/N\.
## Services
Consulting and development in low\-level and systems software\.
- Microkernel\-based operating systems
- System libraries and low\-level runtime
- Virtualization for real\-time applications
- RISC\-V systems bring\-up
- AI\-assisted development for FPGAs
Engagements range from focused bring\-up work to longer\-term architecture and implementation\. Get in touch to discuss scope\.
## About
QSOE Systems is the independent practice of**Yuri Zaporozhets**, a systems software developer with 25\+ years of experience building low\-level software — kernels, operating systems, runtimes, and the hardware bring\-up underneath them\.
## Contact
Email is the best way to reach me\.
[yuriz@qsoe\.net](mailto:
[email protected])