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

Aufgrund seiner aufopferungsvolle Hingabe zu seiner Lehrtätigkeit hat unser Tutor Michael Schiefer eine Anleitung für die notwendigen Anpassungen erstellt, die für eine Entwicklung von OOStuBs unter Windows notwendig sind. Diese ist jedoch experimentell. Falls jemand diese Verwenden will, kann er das tun, wir geben absolut keine Garantien.

Mac OSX

Dank Martin Knoll gibt es jetzt auch einen experimentellen Support für Apple OSX-Rechner. Hierbei werden folgende Tools benötigt:

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 oder durch Übetragung unseres USB-Stick-Images auf euren Stick erzeugen.

Boot-Stick durch Image erzeugen

Um das USB-Stick-Image auf euren USB-Stick zu übertragen, verwendet man am einfachsten das Linux-Kommando dd.

Dieses Tool greift direkt auf eure Festplatten zu und kann daher sehr schnell zum Datenverlust führen. Prüft jeden Schritt mehrfach bevor ihr ihn ausführt.

Beispielsweise liegt der USB-Stick, auf den ihr das Image übertragen wollt unter /dev/sdb, ihr findet den Namen des Linux-Devices eures USB-Sticks durch das Kommando dmesg heraus. Wenn ihr den USB-Stick einsteckt und danach dmesg ausführt, dann sollte am Ende der Ausgabe eine Zeile mit wie

/dev/sdb: /dev/sdb1 /dev/sdb2

erscheinen. Diese Zeile sagt euch, das euer USB-Stick unter /dev/sdb verfügbar ist und dass dieser zwei primäre Partitionen enthält.

Bei der Anwendung des Images auf den USB-Sticks, werden alle Daten auf dem Stick überschrieben

Um nun das Image auf den Stick zu kopieren führt ihr sudo dd if=oostubs_boot.img of=/dev/sdb aus. Danach solltet ihr den USB-Stick abziehen und wieder einstecken und könnt auf die definierte 32Mb-Partiton zugreifen. Wenn ihr den restlichen Speicherplatz weiter nutzen wollt, so könnt ihr das tun, indem ihr weitere Partitionen definiert. Diese werden jedoch wieder überschrieben, wenn ihr das Image neu aufspielt.

Boot-Stick mit Grub 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