Oberon Linux Revival

OLR will likely not get much more development. I am currently evaluating porting Project Oberon to ARM32 Linux and WebAssembly.

OLR is the Oberon System with Gadgets running natively on the Linux Kernel of X86, RISC-V, MIPS and ARM processors. It is a consolidation effort to make a single distribution from Linux Native Oberon, ARM Linux Oberon, MIPS Linux Oberon and RISC-V Linux Oberon.

Basis of the system is the latest Alpha of PC Native Oberon of ETH Z├╝rich. Main changes are the filesystem which is not based on OFS any more and a more direct display system. Object/symbol files are in olr/x86/ , olr/riscv , olr/mips/ , olr/arm/ and olr/armv7/ for X86, RISC-V, MIPS , ARM and ARMv7.


The legacy version for x86 and ARM including all source is available here (about 2MB).
The ROP2-version for ARMv7, RISC-V and MIPS including all source is available here (about 2MB). Traps might currently not work correctly.
Complete Native Oberon Gadgets Alfa-03.01.05 is available here (about 6.5MB).
Documentation in Oberon format is available here ( about 2.7 MB).


Extract gadgets030105a.tgz somewhere ("tar xzf gadgets030105a.tgz"). Extract olrYYMMDD.tgz in the same directory ("tar xzf olrYYMMDD.tgz"). Go to olr/ directory "cd olr" and execute "./oberon". This automatically chooses native binary (./ola, ./olm or ./olx). On some systems, qemu is invoked automatically when executing ./olm or ./ola (manually do a "qemu-arm ./ola" or "qemu-mipsel ./olm"). Framebuffer version needs read/write access to /dev/fb0 and read access to /dev/input/mice. The best way to achieve this is to add the user to groups video and input.

For using Gagdets, you have to compile the modules. See OLR.Gadgets.Tool . Execute the three Compiler.Compile commands. For RISC-V, MIPS and ARM currently not all modules are being compiled. Compiler dependent apps like Watson only do not compile on ARM. Some optimizations were added to the MIPS compiler (removed delay slots, using MIPS II instruction set) and the compiler renamed to RCompiler.


Configuration of OLR when starting can be done by environment variables. ( "export var=value" ) Following variables are available:

  • OTRACE=modulename :write more trace output of specified module
  • TERM= : start on X11/ framebuffer; usually automatically detected
  • SSH_CONNECTION= : open over ssh; usually automatically detected
  • XAUTHORITY= : xauthority filename; usually automatically detected
  • DISPLAY= : use specified display; usually automatically detected
  • OWIDTH= : width of X11 window, negative values are relative to display width
  • OHEIGHT= : height of X11 window, negative values are relative to display height
  • OMEVENT= : mouse event on framebuffer, /dev/input/eventX , /dev/input/mouseX , or /dev/input/mice, usually automatically detected
  • OSHM= : use shared memory for X11 window; usually automatically detected
  • FontConv= same as in native
  • Color= same as in native
  • MB= same as in native

Only OWIDTH and OHEIGHT should be relevant for most users on X11, OMEVENT might be necessary on framebuffer.


For an update, just extract olrYYMMDD.tgz in the parent directory.

Current state:

  • all targets should run well on framebuffer, X11 and over network via ssh -X .
  • X86, ARMv7, RISC-V and MIPS should be able to compile all targets. Due to compiler limitations, ARM only can compile itself.
  • Network does not work

Contact information

If you want to help, found a bug or need something implemented, use contact menu to contact me.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License