Dank Christian Ehrhardt gibt es eine Portierung des Ulmer Oberon-Systems für die Linux-Plattform. Zu bedenken ist nur, daß sich diese noch im Alpha-Zustand befindet (d.h. mit Fehlern, Problemen und Unschönheiten muß noch gerechnet werden) und sich in der Benutzung unterscheidet. Auch sind einige Grundkenntnisse für Linux erforderlich, um dieses System unter Linux nutzen zu können. Wenn jedoch alles klappt, können Beispiele aus der Vorlesung und Lösungen für Übungsaufgaben unverändert übertragen und zur Ausführung gebracht werden. Wenn es nicht klappt, können Sie gerne zu uns kommen. Entweder mit Ihrem Notebook (das macht es einfacher) oder detaillierten Fehlerberichten mitsamt allen Fehlermeldungen und einem Installationsprotokoll.
Wichtig: Für die Installation kommen nur neuere Maschinen in Frage, die genügend Hauptspeicher mitbringen (empfohlen sind mindestens 256 Megabyte). Bitte quälen Sie damit nicht alte Maschinen mit zu wenig Hauptspeicher. Da kann eine Übersetzung tatsächlich Stunden dauern, die sonst binnen Sekunden erledigt ist.
Wir haben das Ulmer Oberon-System bereits erfolgreich unter SuSE 9.1, SuSE 9.2, Debian Woody, Gentoo und Fedora 2 installiert. Letzteres allerdings erst ab Version 0.7.6. Ab Version 0.7.13 werden auch 64-Bit-Systeme unterstützt (getestet auf AMD-Athlon-64-Systemen unter SuSE 9.2 und Fedora 2). Grundsätzlich kann es bei einigen Linux-Kernels Probleme geben, da das Ulmer Oberon-System nicht die C-Bibliothek nutzt und wir daher gelegentlich die ersten sind, die neue Kernel-Bugs entdecken dürfen.
Sollten Sie jedoch ein glücklicher Besitzer eines UltraSPARC-Systems sein, das unter Solaris läuft, dann steht ein Solaris-Paket für Oberon zur Verfügung.
Kürzliche Änderungen:
0.8.6 | Einige Fehler im Compiler wurden behoben, die zu einem Absturz oder zu unvollständigen Fehlermeldungen führen konnten. | 0.8.5 | Einige Fehler wurden im Compiler behoben (unvollständige Laufzeitüberprüfungen bei Typerweiterungen und einige Crashes des Compilers beim Übersetzen). Ferner ist XPlotters nun toleranter bezüglich von Extremfällen mit minimaler Breite oder Höhe. | 0.8.4 | Ein Wechsel von 0.8.3 zu 0.8.4 ist nur für diejenigen interessant, bei denen eine Verbindung zum X-Server nicht gelang, weil der Authorisierungs-Eintrag nicht gefunden wurde. Die Fehlermeldung lautete dann ``no matching entry found''. Die neue Version ist jetzt toleranter, falls als Rechnername ein voll-qualifizierter Name konfiguriert worden ist. Wenn jedoch X-Anwendungen vorher bereits funktionierten, dann gibt es keinen Grund, auf 0.8.4 zu wechseln. | 0.8.3 | Im Vergleich zu 0.8.2 gibt es nur eine kleine Verbesserung des Moduls TurtleGraphics, die Crashs vermeidet, wenn die Grafik leer oder in einer der beiden Dimensionen unendlich schmal ist (z.B. nur ein senkrechter Strich). | 0.8.2 | Im Vergleich zu 0.8.1 gibt es nur eine minimale Änderung im Modul XPlotters, die dafür sorgt, daß das darzustellende Fenster auch wirklich auf den Bildschirm paßt. | 0.8.1 | Leider hat sich in die Version 0.8 noch ein Fehler eingeschlichen, der dazu führte, daß sich UNIX-Domain-Sockets nicht öffnen ließen. Das betrifft insbesondere Versuche, das lokale X-Display zu eröffnen. | 0.8 | Neben einer Reihe von Fehlerbehebungen (insbesondere auch beim Compiler) ist insbesondere eine erste Unterstützung für X-Windows hinzugekommen. Diese ist relevant für die Übungsblätter zu Beginn des Sommersemesters. |
Neu: Für Gentoo-Systeme steht inzwischen ein Gentoo-Paket zur Verfügung, das freundlicherweise von Dominik Brugger zur Verfügung gestellt worden ist. Entpacken Sie ulm-oberon-i386-0.8.6.ebuild.tar.bz2 in $PORTDIR_OVERLAY und installieren Sie es danach mit emerge ulm-oberon-i386.
So können Sie loslegen:
onsshut -a $OBERON/var/pons/shutdown /pub/pons |
Wenn onsshut erfolgreich ist, erhalten Sie eine Meldung ``onsshut: fatal: /pub/pons: cannot receive message from remote object''. Falls bei Ihnen die Dienste jedoch unter /etc/init.d laufen, dann sollten Sie diese als Super-User mit
/etc/init.d/pons stop |
beenden. Den zweiten Dienst cdbd müssen Sie nicht beenden, wenn Sie pons terminieren, da cdbd automatisch terminiert, wenn der Oberon-Namensdienst verschwindet.
Wenn Sie Ihre die alten Datenbanken von pons und cdbd in den entsprechenden Verzeichnissen unter $OBERON/var nicht löschen, bleiben diese bei einer Neu-Installation erhalten. Wenn Sie load_libsources im Rahmen der Installation aufrufen, stehen dann die neuen Bibliotheks-Quellen neben den alten Quellen und Ihren eigenen zuvor eingefügten Quellen zur Verfügung, wobei automatisch immer die neueren Quellen verwendet werden.
mkdir /tmp/oberon && cd /tmp/oberon wget ftp://ftp.mathematik.uni-ulm.de/pub/soft/oberon/ulm/i386/ulm-oberon-i386-0.8.6.tar.gz tar xvfz ulm-oberon-i386-0.8.6.tar.gz cd ulm-oberon-i386-0.8.6 |
make download_tof2elf |
make DestDir=/usr/local/oberon |
. /usr/local/oberon/rc |
Es empfiehlt sich, dies auch in ~/.profile oder in /etc/profile aufzunehmen. Unter Gentoo Linux sollte rc unter /etc/env.d installiert werden:
cp /usr/local/oberon/rc /etc/env.d/oberon env-update |
make DestDir=/usr/local/oberon \ InitDir=/etc/init.d InstallInitDir=/etc/init.d suserun |
start_pons start_cdbd |
Diese beiden Skripte müssen dann nach einem Reboot der Maschine neu aufgerufen werden.
Ob die beiden Dienste korrekt arbeiten, können Sie leicht überprüfen, indem Sie mit Hilfe von nsh einen Blick in das Namenssystem von Oberon werfen:
borchert@portia:~> nsh * ls pub * cd pub * ls cdb * cd cdb * ls oberon * cd oberon * ls cdbd modules * q borchert@portia:~> |
load_libsources |
Dies ist nur einmalig erforderlich.
borchert@portia:~/Hello> obci Welcome.o[dm] borchert@portia:~/Hello> obbuild Welcome borchert@portia:~/Hello> ./Welcome Welcome to Ulm's Oberon System on the I386 platform! borchert@portia:~/Hello> |
Bitte haben Sie auch für so ein winziges Programm Geduld. Da zu Beginn in der Datenbank nur Quellen enthalten sind, muß der Compiler zunächst recht viele Module übersetzen, bevor er zu Welcome kommt.
Nein. Die Portierung auf UNIX-Anwendungen nach Cygwin beschränkt sich nur auf solche, die sich mit dem GCC übersetzen lassen, beziehungsweise, die mit der GNU C-Bibliothek zusammen gebaut werden können. Das Ulmer Oberon-System ist jedoch zu 100% frei von C-Code und verwendet auch keine C-Bibliotheken. Deswegen wird auch ein echtes UNIX-System (sei es Linux oder Solaris) benötigt und nicht nur eine durch eine C-Bibliothek simulierte UNIX-Umgebung. Viele sehr wesentliche Fähigkeiten der Ulmer Oberon-Bibliothek wären überhaupt nicht denkbar, wenn das Ulmer Oberon-System auf einer C-Bibliothek basieren müßte. Eine Unterstützung des Ulmer Oberon-Systems wird es unter Microsoft Windows wahrscheinlich nie geben, schon alleine deswegen, weil viele sehr wichtige Fähigkeiten von UNIX fehlen.
Das neue System unter Linux folgt einem neuen Konzept, das später das dynamische Laden von Modulen aus einer Datenbank erlaubt. Um dies (anders als dies es für Java, C und C++ üblich ist) mit uneingeschränkter Schnittstellensicherheit zu gewährleisten und dies auch über das Netzwerk zu gestatten, ist eine andere Architektur erforderlich, bei der hier verteilte objekt-orientierte Datenbanken und Namensräume zum Zuge kommen. Mit dem traditionellen Modell, das auf dem Dateisystem basiert, läßt sich das nicht erreichen.
Die beiden Dienste pons und cdbd benötigen zusammen etwa 128 Megabyte Hauptspeicher, der dafür auch zur Verfügung stehen sollte. Sonst geht viel Zeit mit Swap-Aktivitäten verloren. Während einer Übersetzung wird noch einmal eine ähnliche Speichermenge benötigt.
Das System ist noch im Alpha-Zustand, und viele Dinge haben wir noch nicht optimiert. Es wird später schneller sein und wir wissen auch, was wir anpacken müssen. Nur Zeit dazu muß noch gefunden werden :-)
Zu berücksichtigen ist auch, daß ganz zu Anfang nur die Quellen vorliegen und somit eine Vielzahl von Modulen der Bibliothek übersetzt werden muß.
In dieser Datei ist ein Zugangsschlüssel, der einen Schreibzugriff auf die Datenbank gewährt.
Das ist nicht erforderlich. Sicherheitsbewußte können gerne neue User-IDs für pons und cdbd anlegen, die korrespondierenden Verzeichnisse mitsamt deren Inhalt unter /usr/local/oberon/var diesen Benutzern übereignen und dann diese Dienste unter den entsprechenden User-IDs starten.
Bei diesem Paket sind auch sämtliche Manualseiten dabei. Sie können also mit ``man Streams'' beispielsweise die Manualseite zum Modul Streams ansehen, wenn der MANPATH dank /usr/local/oberon/rc entsprechend erweitert worden ist. Die Manualseiten liegen allesamt unter /usr/local/oberon/man.
Ja, ab Version 0.7.13.
Sie können gerne zu mir kommen oder bei Christian Ehrhardt vorbeischauen, wenn Sie das System auf einem Notebook haben oder wir Ihren Rechner über das Netzwerk erreichen können. Andernfalls müssen wir Sie um ein Installationsprotokoll (welche Schritte wurden wie durchgeführt) und die genauen Fehlermeldungen bitten.