Skip to main content.

Navigation:

Entwicklungsumgebung

Eine Entwicklung ist sowohl unter Linux (32/64 Bit) als auch Solaris möglich. Die für die Bearbeitung der Programmieraufgaben benötigte Software steht die in den SUN Pools G29-333 und G29-336 zur Verfügung. Ihr könnt die Aufgaben natürlich auch zu Hause bearbeiten. Wir empfehlen hierzu den Einsatz von Linux. Weiter unten finden sich einige Hinweise, wie ihr euren Rechner entsprechend konfigurieren könnt.

Achtung! Wer die Software bei sich zu Hause installieren möchte, trägt natürlich die volle Verantwortung für eventuelle auftretende Pannen. Fehlgeschlagene Installationen werden von uns auch nicht als Entschuldigung für verspätete Abgaben der Aufgaben akzeptiert. Da sich bei der Betriebssystementwicklung ab und zu auch Fehler einschleichen können, solltet ihr euere Lösungen vor der Abgabe testen. Ihr könnt dazu den Emulator QEMU benutzen. Ihr solltet jedoch beachten, das eine fehlerfreie Ausführung in Emulator nicht bedeutet, dass euer Betriebssystem auch auf dem realen Rechner läft

Achtung! Bei der Abgabe benutzen wir immer den echten PC um euere Lösung zu kontrollieren.

OOStuBS SUN-Pools (G29-333 und G29-336)

OOStuBS auf anderen Rechnern

OOSTUBS Umgebung

Windows

Da es in der Vergangenheit mit der Einrichtung der Toolchain unter Windows immer wieder zu Problemen kam, wird eine Entwicklung unter Windows von uns im Moment nicht unterstützt.

Linux

Die Einrichtung des Systems wird hier am Beispiel von Ubuntu 10.04 (32 Bit) gezeigt. Für andere Linux Disributionen müssen gegebenenfalls Anpassungen vorgenommen werden.

Installation der benötigten Tools:

sudo apt-get install gcc g++ gdb ld make doxygen patch qemu
Nachdem der Packetmanager die notwendigen Packete installiert hat, müsst ihr euch zunächst die Entwicklungsumgebung herunterladen.
wget URL_ARCHIVS
Anschließend müsst ihr sie entpacken, dazu benutzt ihr am besten das Tool TAR.
tar xvfz NAME_DES_ARCHIVS.tar.gz

OOSTUBS übersetzen

Alle Vorgaben, die ihr von uns erhaltet, lassen sich korrekt übersetzen, enthalten aber nur unvollständigen Code. Eure Aufgabe ist es, den vorgegebenen Sourcecode zu vervollständigen, um die Aufgabe zu lösen.
Zu Übersetzen des Betriebssystems wechselt ihr mit dem Befehl cd in das Hauptverzeichnis der Entwicklungsumgebung, um anschließend durch den Anruf von make den Kompilationsvorgang anzustoßen.

cd NAME_DES_ARCHIVS
make

Die Dokumentation für OOStubs wird direkt aus dem Quellcode erzeugt. Ihr müsst dafür nur make doc im Hauptverzeichnis ausführen. Auf die Dokumentation könnt ihr nun über firefox doc/html/index.html zugreifen. Auch dieses Kommando muss wieder im Hauptverzeichnis der Umgebung aufgerufen werden.

OOSTUBS testen

Um euer Betriebssystem mit dem Emulator QEMU zu testen, müsst ihr im Hauptverzeichnis der Entwicklungsumgebung nur 'make run' für einen regulären Testlauf und 'make debug' für eine Fehlersuche mit Hilfe des Debuggers gdb in der Konsole eingeben. Ihr könnt euch dazu auch per ssh mit einem Rechner im Pool verbinden. Die momentan eingetzten Server, auf die ihr euch mit einem ssh Client einloggen könnt, heißen trex.cs.uni-magdeburg.de und grex.cs.uni-magdeburg.de.

ssh -X trex.cs.uni-magdeburg.de
Die -X Option wird benötigt, um auch grafische Programme wie zB. den Emulator starten zu können. Hierfür ist es notwendig, dass auf dem lokalen Rechner ein X-Server läuft. Unter Linux müsst ihr keine weiteren Programme dafür installieren. Windows hat standardmäßig keinen X-Server, deswegen müsst ihr hier extra einen installieren. Bei unseren Tests hat sich der freie X-Server Xming bewährt.

Ihr könnt auch grafische ssh-Clients wie zum Beispiel Putty benutzen, hier müsst ihr nur darauf achten, dass ihr bei den Optionen das X11 Forwarding aktiviert.

Zum Testen mit richtiger PC-Hardware könnt ihr natürlich auch euren eigenen PC oder Laptop verwenden. Das Betriebssystem kann mithilfe eines bootbaren USB-Sticks getestet werden. Einen solchen USB-Stick kann man sich mithilfe von GRUB oder SYSLINUX erzeugen. Auf dieser Seite sind alle Informationen und notwendigen Schritte in knapper Weise zusammengefasst. Eine schöne ausführliche Beschreibung wurde uns freundlicherweise von Tobias Stein bereit gestellt. Generell geht man wie folgt vor:

Vorbereitung

Zuerst muss sichergestellt werden, dass der USB-Stick auch bootbar ist. Die meisten verfügbaren Sticks sind in der Lage als Bootstick zu fungieren, es muss nur noch die Partition als bootbar gekennzeichnet werden. Zu diesem Zweck kann fdisk verwendet werden (Kommandos: o,n,a,w). Will man seinen Stick komplett neu erzeugen, sollten die folgenden Kommandos verwendet werden (/dev/sdb ist das Device auf das der Stick gemountet wird.):

cat /dev/zero > /dev/sdb
fdisk /dev/sdb
mkfs.dosfs /dev/sdb1

GRUB

Als nächstes erstellt man sich ein temporäres Arbeitsverzeichnis und kopiert die notwendigen Dateien dorthin.

    mkdir -p ~/usbboot/boot/grub
    cp /boot/grub/*stage* ~/usbboot/boot/grub
    cp /.../memdisk ~/usbboot/boot/
    echo '(hd0) /dev/sdb' > ~/usbboot/boot/grub/device.map
                

Danach wird das Bootmenu von GRUB über die Datei 'grub.conf' konfiguriert. Dies geschieht, indem die Datei mit

    touch ~/usbboot/boot/grub/grub.conf
                
angelegt und dann mit folgendem Inhalt versehen wird.
    default=0
    timeout=5
    title OO-Stubs
    kernel /boot/memdisk
    initrd /boot/bootdisk.vmi
                

Abschließend muss nur noch der eigentliche Bootloader installiert werden. Dazu wird der Stick gemountet (Hier in das Verzeichniss /mnt), das temporäre Arbeitsverzeichniss auf den Stick verschoben und das Progamm 'grub-install' aufgerufen.

    mount /dev/sdb1 /mnt
    mv ~/usbboot/boot/ /mnt
    grub-install --root-directory=/mnt /dev/sdb
                

Der USB-Stick sollte nun bootbar sein und mit Hilfe von memdisk bei jedem Bootvorgang das Bootimage in 'bootdisk.vmi' starten. Durch einfaches Austauschen diese Images kann auch das gestartete Betriebssystemeinfach ausgetauscht werden.

Wenn der Stick nicht bootet bzw. der MBR leer zu sein scheint

Wenn der Testboot einen defekten Bootsektor zeigt, müssen Sie einen Master Boot Record (MBR) auf das Bootmedium schreiben.

Um einen MBR zu schreiben, verwenden Sie bitten folgenden Befehl

    cat syslinux_directory/mbr.bin > /dev/sdb