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)
- es werden die vorinstallierten Tools des Gastsystems (Linux) verwendet
-
der Emulator (QEMU) kann mit
...
aufgerufen werden
OOStuBS auf anderen Rechnern
- Wir haben OOStuBS erfolgreich mit Ubuntu Lycid Lynx (32 Bit) und Gentoo sowie im SUN-Pool unter Solaris übersetzt.
-
Ihr benötigt die Werkzeuge
GCC, G++, GDB, LD, MAKE, PATCH, DOXYGEN
undQEMU
. Beim GCC solltet Ihr mindestens denGCC 2.95.2
verwenden (für alle modernen Linux-Distributionen trifft dies zu).
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-ServerXming
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
angelegt und dann mit folgendem Inhalt versehen wird.touch ~/usbboot/boot/grub/grub.conf
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