RSSAmplifier

Blog

QSOE Development Blog

qsoe-dev.blogspot.comRSS feed ↗14 posts

Latest posts

HFI BIOS 1.3 released

HFI BIOS version 1.3 has been released. Video demonstration: https://www.youtube.com/watch?v=GBVH-6bD9yI Main features SpaceMiT K3 Pico ITX support. The board cold-starts from NOR and boots through to a Linux desktop: the panel is driven by a VideoBIOS module, UFS storage is enumerated over SCSI, and USB host, PCIe and the on-board Ethernet all come up in firmware. The network is handed over live.…

HFI BIOS: from idea to K3 support

On the 2nd of July I made the first commit in a repository called fu740-bios . Its README opened with a single sentence that never changed, even after the project outgrew the board in its name: A RISC-V machine that powers on and greets you like a classic PC. Not a boot loader with a menu. A BIOS : the rainbow banner, the memory count, the hardware summary, and the immortal Press DEL to run Set-Up…

qjmcc: the Portable C Compiler on RISC-V 64

For a few months there has been a compiler in my tree that I have said nothing about, and it has now done the one thing that made me want to write about it at last: it compiles the whole of QSOE/N — the Skimmer microkernel, taskman, the C library, the dynamic loader, the shell, and every driver and userspace program — and the operating system it produces boots on real hardware and logs in as root,…

QSOE/N v0.18: a second board, and a second compiler

Two things happen in this release, and they turn out to be the same thing seen from opposite ends. QSOE/N boots to an interactive shell on the SpacemiT K3 — the second piece of silicon it has ever run on, after the SiFive Unmatched. And the entire operating system — kernel, taskman, libc.so , the runtime linker, every program under /bin and /sbin — now builds with a second compiler, jmcc, and…

Series about bringing up my NVidia video card on the RISC-V board (SiFive Unmatched)

The project of bringing up my GK-208 video card at the early boot stages turned out to be much bigger than originally envisioned — and the approach for accomplishing the goal had to change completely mid-course. I want to document that journey in detail, and since it is not directly related to QSOE, I will be posting an 8-part series, which I'm calling gk208-videobios , to my "legacy" blog…

What I'm working on right now

Since 2024 I've wanted one specific thing: a RISC-V board that feels like a real personal computer. Not a serial console scrolling kernel logs over a USB cable — an actual screen that lights up at power-on, a boot menu, an operating system coming up on it. Power button, video BIOS, mr-bml's menu, QSOE booting on the display. That's the picture I've carried around for two years, and with Claude…

A free QNX-like operating system (2003)

I came across an old post of mine on the comp.os.qnx newsgroup, dated August 7, 2003. The subject line was "A free QNX-like operating system," and under it I announced RadiOS — a hobby effort to build a free, QNX-compatible microkernel OS for x86, with the microkernel and task manager written entirely in NASM assembly. About 70% of the required system calls were in place by then, along with parts…

QSOE project v0.1 released

The first QSOE release, v0.1, is out. It bundles both kernel variants, the boot loader, the userspace, and libc into a single numbered drop, and consists of the following components: QSOE/N v0.17 , with the custom "Skimmer" kernel. QSOE/L v0.14 , which works together with seL4 version 15. mr-bml v0.5.1 , a GRUB-derived boot loader with support for Multiboot 3, RISC-V Linux-style kernels, and…

QSOE/L: The first spawn from real storage

The last post ended with QSOE/L still in the emulator, and the next job named in plain words: carry the image across to the Unmatched and find out which of my QEMU assumptions were lies. The image went across. It got further than I'd have guessed — far enough to bring up the PCIe root, raise devb-nvme over real DesignWare MSI, spin up the Samsung NVMe, and mount an on-disk filesystem off it — and…

QSOE/L: the same userspace, on seL4

The three QSOE/N posts ended with a promise — the other half of the umbrella, QSOE/L, the same userspace running on seL4. This is that post. It is also, in a sense, the first post, because QSOE/L is where the whole thing began. Tomorrow is one month to the day since I started the real QSOE, and the first thing that booted was an seL4 image. QSOE/N, the from-scratch-kernel variant I wrote about…

QSOE/N, part 3: first boot on the HiFive Unmatched

Part 2 left QSOE/N as a working operating system that had only ever run in QEMU. This post is the jump to real silicon — a SiFive HiFive Unmatched (FU740) on my desk — and the five obstacles between "boots fine in the emulator" and an interactive shell on real hardware. The recurring theme is that QEMU is generous in ways the FU740 is not. Every fix below is a thing the emulator either did for me…

QSOE/N, part 2: from a kernel to an operating system

Part 1 ended with Skimmer at v0.5 — a sound microkernel with QNX-shape synchronous IPC, and nothing running on top of it. This post is the rest: how Skimmer became QSOE/N, an actual operating system with processes, a C library, drivers, and a conformance suite that passes a full lap. All of it still in QEMU; real hardware is part 3. The umbrella QSOE — "Quick and Secure Operating Environment" — is…

QSOE/N, part 1: proving the core (Skimmer v0.1–v0.5)

This is the first of three posts tracing QSOE/N from its first commit to its first boot on real hardware. This one is about the kernel alone — Skimmer — before there was any userspace to speak of. The whole point of v0.1 through v0.5 was to answer one question: is the core sound? Everything after it assumes the answer is yes. I built all of it alongside Claude Code (Opus 4.7 for this stretch, 4.8…

How QSOE started

It was the first of April, and work on QRV — my port of QNX to RISC-V — was in full swing. A couple of weeks earlier I had put up an open petition asking QNX Software Systems and BlackBerry to re-license the historical 2007–2009 QNX Neutrino source under Apache 2.0. Around this time a thought settled in: there's a real chance it gets ignored completely. I needed a plan B. I've kept the L4…