[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