[Oberon] Oberon System 4 on 64-bit operating system?

Alexander Hofmann alexander.hofmann at physik.uni-augsburg.de
Tue Apr 1 16:14:55 CEST 2025


Dear all,

I just tried in a newly installed virtual machine to test (it runs on my 
Linux Mint, based on 22.04 LTS, but I wanted to know what steps are 
required). So, with Ubuntu 22.04 I succeeded with the following (Kubuntu 
24 didn't work, I have yet to find out why):

Am 31.03.25 um 21:43 schrieb Richard Hable:
> I have already executed
>
> dpkg --add-architecture i386
>
> and it finishes immediately without error message—which in Unix probably
> means that it worked correctly.

Yes, this does not print anything, but it also does not install anything 
right away.

> I’ve also installed some additional libraries as described in
>
> https://unix.stackexchange.com/questions/12956/how-do-i-run-32-bit-programs-on-a-64-bit-debian-ubuntu/47003#47003

As a bare minimum (to be able to execute i386 without "file not found" 
warnings):

apt-get install libc6:i386

This pulls libC and required libs as well. Oberon also requires X:

apt-get install libx11-6:i386

> However, when trying to execute the “oberon” executable (with the
> correct +x flags), I still get the error message:
>
> …oberon: No such file or directory
If you're in the same directory in terminal as the "oberon" binary, 
you'll still need to prepend the "./" directory specifier. But even if 
you did, a similar "file not found" message is shown if the i386 
architecture is enabled, but the required libraries and tools to execute 
those binaries are not installed (see above). Linux will simply not find 
an "executable" file with that name...

But, I'd recommend not to run the "oberon" binary directly, but instead 
use the "sob" script. This, additionally, creates the required symbolic 
links and temporarily modifies the system variable "LD_LIBRARY_PATH" to 
allow the oberon binary to find the bundled shared library as well.

 From the "INSTALL" file I assume the default path (where linux oberon 
was supposed to be installed) is "/usr/share/oberon". It does not need 
to be there, but the path must be modified in the "sob" script then to 
resemble the actual location.

AFAIK, the idea of that script was to put it to a "system-wide" 
location, modify the PATH to point to that location and then in a new 
directory, e.g. ~/OberonDevelopment, just execute "sop". That will link 
required directories there and execute oberon in that working directory, 
without the "danger" of modifying system files (of Oberon).

> I then tried to rebuild the oberon executable and the wrapper library as
> x64 executables with
>
> make clean
> make all
>
> This worked correctly, except for some warnings of the compiler. Then I
> could also execute the “oberon” executable—but it immediately failed with
>
> 6858 Segmentation Fault $OBROOT/oberon

I checked changing that to 64bit lately and AFAIK it would require 
changing the Compiler inside Oberon as well, to create x86_64 binaries.

Even if you compile the starter for 64 bits, it will still try to load 
the 32-bit based oberon "blob" containing the code created by Oberon 
itself, and at the end of boot() just jump into there. And because the 
"oberon" binary is executed in long mode (64 bit), the bytes loaded and 
executed from the x86-32 binary mean something different to the CPU. We 
unfortunately cannot directly execute 32-bit code in a 64-bit process 
that easily.

Best regards,

Alexander



More information about the Oberon mailing list