|
|
 |
 |
Entwicklungsumgebung
Für die Bearbeitung der Praktikumsaufgaben haben wir die benötigte
Software auf den Solaris-Maschinen (faui04b) und den Linux-Maschinen (faui00*)
installiert. Ihr könnt die Aufgaben natürlich auch zuhause bearbeiten.
Wir empfehlen hierzu den Einsatz von Linux. Weiter unten finden sich einige
Hinweise, wie ihr eueren Linux-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 Pannen.
Fehlgeschlagene Installationen werden von uns auch nicht als Entschuldigung
für verspätete Programmabgaben akzeptiert.
Da sich bei der Betriebssystementwicklung ab und zu auch Fehler einschleichen
können, müsst ihr euere Lösungen testen, bevor ihr sie abgebt.
Wir benutzen hierzu einen Emulator (bochs) und einen echten PC in Raum 00.156.
Bei der Abgabe benutzen wir immer den echten PC um euere Lösung zu
kontrollieren. Ihr solltet deshalb immer zur Sicherheit auch mit dem
echten PC testen.
compilieren von OOSTUBS unter Solaris (faui04b und andere SUN)
compilieren von OOSTUBS unter x86 Linux im CIP Pool (faui00*)
- es werden die vorinstallierten Tools des Gastsystems (Linux) verwendet
- der Emulator (bochs) kann mit /proj/i4bs/bochs/bochs <diskettenimage>
aufgerufen werden
compilieren von OOSTUBS zuhause mit x86 Linux (eventuell geht auch FreeBSD
usw)
- wir haben OOSTUBS erfolgreich mit RedHat 7.3, 8.0 und Debian (CIP-Installation)
übersetzt, SuSE funktioniert wahrscheinlich auch
- ihr solltet mindestens gcc 2.95.2 verwenden, für alle modernen
Linux-Distributionen trifft dies zu
- für die Assembler-Dateien wird der Netwider Assembler (NASM) benötigt
(siehe auch NASM Homepage)
- der Emulator (bochs) ist ebenfalls frei verfügbar (siehe auch
Bochs Homepage)
OOSTUBS übersetzen
- wenn ihr unter Solaris arbeitet, solltet ihr als erstes immer den Pfad
setzen (s.o.)
- dann sollte oostubs.tar.gz in ein Verzeichniss entpackt werden
(z.B. ~/oostubs)
gal@faui42:/tmp> cd ~ gal@faui42:~> mkdir oostubs gal@faui42:~> cd oostubs gal@faui42:~/oostubs> tar xvfz /proj/i4bs/vorgaben/oostubs.tar.gz
- die Vorgaben (vorgabe1.tar.gz usw) müssen innerhalb dieses Verzeichnisses
entpackt werden
gal@faui42:~/oostubs> tar xvfz /proj/i4bs/vorgaben/vorgabe1.tar.gz
- alle Vorgaben, die ihr von uns erhaltet, lassen sich korrekt übersetzen,
enthalten aber nur unvollständigen Code. Ihr müsst also Code vervollständigen.
Hierzu solltet ihr am besten die Vorgabe 1 in ein eigenes Verzeichnis kopieren,
und die Aufgaben dort bearbeiten. Mit jeder Vorgabe kommen neue Dateien hinzu.
Ihr könnt diese dann später in euer Lösungsverzeichniss übernehmen.
gal@faui42:~/oostubs> cp -r vorgabe1 loesung gal@faui42:~/oostubs> cd loesung gal@faui42:~/oostubs/loesung>
- das eigentliche Übersetzen von OOSTUBS erfolgt durch den aufruf
von "make" im Lösungsverzeichnis. Alle .cc und .asm Dateien im Lösungsverzeichnis
werden daraufhin mit den entsprechenden Tools (Compiler bzw. Assembler) übersetzt.
Mit Hilfe des build tools, das in oostubs.tar.gz enthalten ist, wird dann
in oostubs/loesung/build ein Diskettenimage generiert (bootdisk.img).
gal@faui42:~/oostubs/loesung> make
mkdir ./build<
nasm -f elf -o build/_startup.o startup.asm
nasm -f elf -o build/_io_port.o ./machine/io_port.asm
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/cgastr.o ./device/cgastr.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/guardian.o ./guard/guardian.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/cgascr.o ./machine/cgascr.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/main.o main.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/o_stream.o ./object/o_stream.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/strbuf.o ./object/strbuf.cc
g++ -c -Wall -I. -fno-rtti -fno-exceptions -o build/appl.o ./user/appl.cc
ld -e startup -T sections -o ./build/system ./build/_startup.o /proj/i4bs/i386/lib/crti.o
/proj/i4bs/i386/lib/gcc-lib/i386-linux/2.95.3/crtbegin.o ./build/_io_port.o ./build/cgastr.o
./build/guardian.o ./build/cgascr.o ./build/main.o ./build/o_stream.o ./build/strbuf.o
./build/appl.o /proj/i4bs/i386/lib/gcc-lib/i386-linux/2.95.3/crtend.o
/proj/i4bs/i386/lib/crtn.o
objcopy -O binary build/system build/system.img
../tools/build ../boot/bootsect ../boot/setup build/system.img 0:80:2:18:0:0:1 build/bootdisk.img
BIOS-devicecode: 0x0
Total T/H/S: (80/2/18)
Start T/H/S: (0/0/1)
Setup size is 1 sectors.
System size is 4752 bytes.
dd if=build/bootdisk.img of=build/bootdisk.vmi bs=1474560 conv=sync
0+1 records in
1+0 records out
gal@faui42:~/oostubs/loesung>
OOSTUBS testen
-
wenn ihr euer Betriebssystem mit dem Emulator (bochs) testen wollt,
dann ruft ihr den Emulator einfach mit dem Diskettenimage als Parameter auf.
Leider ist der SunRay Server (faui04b), an dem sich die Terminals in 00.156 befinden,
sehr langsam. Wenn ihr den Bochs verwenden wollt, solltet ihr euch lieber zuerst
an einem der Linux-PCs (faui00*) verbinden (mit ssh). Von dort könnt ihr
dann den Emulator starten.
gal@faui42:~/oostubs/loesung> /proj/i4bs/bochs/bochs ./build/bootdisk.img
- zum Testen mit richtiger PC Hardware müsst ihr eine Bootdiskette
(1,44MB 3 1/2") erstellen. In unserem Rechnerübungsraum (00.156) stehen
leider nur SUN Terminals, die keine Diskettenlaufwerke haben. Wir werden
deshalb noch einen Linux-Rechner (faui07i) aufstellen, auf dem ihr euch mit ssh einloggen
könnt. Dort könnt ihr dann die Bootdiskette schreiben. Ein zweiter
Rechner steht als Testrechner zur Verfügung. Bitte verwendet nur diesen
Rechner zum Testen und nicht den Linux-Rechner. Zuhause könnt ihr natürlich
auch eueren eigenen PC oder Laptop verwenden.
gal@faui07i:~/oostubs/loesung> dd if=./build/bootdisk of=/dev/fd0
|
 |
 |
|