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.7.17 | Im Vergleich zu 0.7.16 sind nur Änderungen hinzugekommen, die die Installierung von Skripten unter /etc/init.d bei SuSE betreffen. | 0.7.16 | Im Modul Streams wurde ein Bug behoben, der für eines der Vorlesungsbeispiele der letzten Vorlesung relevant war. Die Dienste pons und cdbd sind in der neuen Version deutlich restriktiver in der voreingestellten Konfiguration und damit sicherer. Mehr Hinweise dazu finden sich in der beiliegenden Datei SECURITY. | 0.7.15 | Die dynamische Allokation von Records oder Arrays mit der genauen Größe von 124 Bytes führte zur mehrfachen Verwendung der gleichen Speicherfläche und damit zum fast sicheren Crash. Das betraf insbesondere das Bibliotheksmodul PipeReaders, das für das kommende Blatt 15 relevant ist. | 0.7.14 | Einige Fehler wurden in der Oberon-Bibliothek behoben, die für das kommende Blatt 15 relevant sind. | 0.7.13 | Hinzugekommen sind die Unterstützung von 64-Bit-Systemen (wobei Oberon hier weiterhin im 32-Bit-Modus operiert) und einige Modulanpassungen, die für das kommende Blatt 15 relevant sind. Ferner vereinfacht sich ab sofort der Aufruf von obci und anderer Kommandos, da die entscheidenden Parameter über Umgebungsvariablen gesetzt werden. Mit letzterem entfällt die Notwendigkeit, ein Skript zur Vereinfachung zu schreiben wie es in der Antwort auf die Frage 134 im Feedback geschehen ist. | 0.7.12 | Gigantische Datenstrukturen mit Zeigern in lokalen Variablen konnten zu sehr langen Übersetzzeiten und recht umfangreichen Programmen führen. | 0.7.11 | Ein weiterer Fehler wurde behoben, der zu einem Crash von obload bzw. obbuild führen konnte, wenn bestimmte Formen von Fehlermeldungen auszugeben waren. | 0.7.10 | Ein weiterer schwerwiegender Fehler wurde im Code-Generator behoben, der dazu führte, daß unter bestimmten Umständen bei CASE-Anweisungen falscher Code generiert werden konnte. Dies führte auch dazu, daß auf diese Weise weitere Bugs in den Compiler selbst hineinkamen, da er mit sich selbst übersetzt wurde. Letzteres führte typischerweise zu einem Crash von obload. | 0.7.9 | Ein schwerwiegender Fehler, der bei der Generierung komplizierter Ausdrücke zur Array-Indizierung auftreten konnte, wurde behoben. Falls dieser Fehler zuschlägt, kommt es zu einem korrupten Base-Register, was dann kurz darauf zu einem Crash führt. Es empfiehlt sich in jedem Falle, zu der neuen Version zu wechseln. | 0.7.8 | Einige Fehler bei der Generierung von Init-Skripten für SuSE wurden behoben. Das ist nur relevant, wenn Sie mit SuSE arbeiten und die Oberon-Dienste automatisch durch entsprechende Skripte in /etc/init.d gestartet werden sollen. | 0.7.7 | Der Speicherplatzverbrauch von obload und cdbd wird nun in Abhängigkeit des physikalisch vorhandenen Speichers bestimmt. Siehe Datei TUNING. Dies ist nützlich für Maschinen mit knappem Hauptspeicher. |
So können Sie loslegen:
mkdir /tmp/oberon && cd /tmp/oberon wget ftp://ftp.mathematik.uni-ulm.de/pub/soft/oberon/ulm/i386/ulm-oberon-i386-0.7.17.tar.gz tar xvfz ulm-oberon-i386-0.7.17.tar.gz cd ulm-oberon-i386-0.7.17 |
wget ftp://ftp.mathematik.uni-ulm.de/pub/soft/oberon/ulm/i386/tof2elf chmod 755 tof2elf touch tof2elf mv tof2elf src/util/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.