Back Original

Show HN: Oberon System 3 runs natively on Raspberry Pi 3 (with ready SD card)

Native Raspberry Pi 3b version of the Oberon System 3

Finally it works on the Raspberry Pi 3b! Here is an image of the running system; I'm using the original Raspberry Pi monitor and a Lenovo ThinkPad TrackPoint keyboard which has three mouse buttons (as suggested for the Oberon system).

image

I attached a ready image (oberon-rpi3.img) which you can flash onto an SD card if you want to run the system on your Raspi 3b yourself. To do so, unpack the image; on Linux, run this command to flash the SD card: sudo dd if=oberon-rpi3.img of=/dev/sdX bs=4M conv=fsync status=progress && sync; on Windows or Mac you can use the Raspberry Pi Imager or e.g. Etcher.

Of course you can also build the whole system yourself, and even the toolchain if you want. I attached the required Raspberry Pi bootfiles and a pre-compiled toolchain for Linux x64 for convenience. The Linux build script is in the arm32/build subdirectory, also a script to flash the SD card.

The image should also work on a Raspi 2b (>= v1.2) or Zero 2.

Why those models? They share essentially the same hardware architecture and can still be regularly ordered. The Raspberry Pi 3b will remain in production until at least 2028 according the the manufacturer. The Pi Zero 2 will even be in production until at least 2030. Even the Pi 2b v1.3 can still be ordered. Looking at the Model 1 and 2, it is reasonable to assume that lifespans of 3b and Zero 2 will be extended. Also migrating the present implementation to Raspi 4 looks feasible so far.

MVP ARMv7 version (QEMU raspi2b)

The inner and outer core of the Oberon system (Kernel, Reals, File System) along with supporting platform-specific drivers (Display, USB, Math) have been fully ported to 32-bit ARM. The full system now boots and runs on QEMU 10.2 emulating the Raspberry Pi 2B (raspi2b machine).

Just like the i386 version, building the entire ARM system from scratch remains very fast. Compiling the modules, statically linking the core, generating the AosFs drive, and populating it with all runtime files takes under a minute using the custom C99 toolchain on a decently modern machine (my T480).

A precompiled version of the QEMU image and the toolchain with which it was built are attached.

The immediate next step is to debug the system over JTAG on real hardware, specifically targeting the Raspberry Pi Model 2B, 3B, and Zero 2. When the system works on bare metal, I consider to migrate the network driver (at least Ethernet, the Wlan might be too much work).

MVP i386 version

The system runs sufficiently stable; 355 of the 358 modules (from i386 and portable directories) were built using my own toolchain.

A precompiled version of the QEMU image and the toolchain with which it was built are attached.

A complete build including creating the drive and uploading all files takes 51 seconds on my Lenovo T480 with Debian Bookworm x64.