Betriebssystem programmieren und emulieren

Hallo Forum,

Ich hab mir gedacht, wäre doch was schönes, mal so ein eigenes OS programmieren zu können. Grundkenntnisse in Assembler habe ich (nicht x86, aber Z80). Dann habe ich bei Google nach brauchbarem Gesucht und sofort zwei relativ gute Tutorials gefunden.

http://www.cybton.com/tutorials_sho...rammieren---Theorie+Bootloader,0,tut,738.html
http://www.tutorials.de/forum/programming-tutorials/20706-ein-eigenes-kleines-betriebssystem.html

So, nachdem ich nun alles so gemacht habe, wie in den Tutorials beschrieben (besitze jetzt eine .bin für das obere und eine .IMG für das untere) stehe ich nun vor dem Problem:
Es ist so ziemlich das erste mal, dass bis zur fertigen Datei alles zu funktionieren scheint. Allerdings kann ich das kaum Nachprüfen.
Im 2. Tutorial wurde empfohlen, mit RaWrite auf eine Diskette zu schreiben. Leider besitzt mein Notebook und auch der PC kein Diskettenlaufwerk.
Das Obere Tutorial hat aber dann die Idee eingebracht, einen Virtuellen Computer zu benutzen (Bochs). Das habe ich auch installiert, dann das Konfigurationsfile runtergeladen und eigentlich alles so gemacht wie beschrieben. Dann sagt das Gerät, das Konfigurationsfile hätte Fehler.
Na Gut, denke ich mir, lade VirtualPC runter installiere es und schaue erstmal ob das läuft. Ich lege meine Linux-CD (die DVD hat er irgendwie nicht erkannt, nur ewig geladen) ein und bekam als Ergebnis das Linux-Installationsmenü. Scheint also zu funktionieren. Jetzt nehme ich meinen .IMG-File aus dem 2. Tutorial und versuche ihn als Diskette zu laden. Darauf bekomme ich die Meldung, dass ein Disketten-Image 720KB oder 1,4MB groß sein soll. Nachdem ich dann meine IMG durch entrsprechend viele 0s ergätzt habe (mithilfe von NASM) kommt keine Meldung mehr, allerdings bleibt die VirtualMashine schwarz und zeigt nur einen Blinkenden Cursor an.

Meine Frage ist jetzt, wie ich die img-Datei bei VirtualPC als Diskette oder CD emulieren kann oder wie ich das sonst irgendwie testen kann.

Danke für jede Antwort, die mich weiter bringt.

Xantoo
 
also ich habe es, als ich vor langer zeit auch mal eine kleines OS geschrieben habe, mit bochs emuliert. Soweit ich mich erinnern kann, habe ich da aber keine konfigurationsdatei heruntergeladen, sondern einfach die default-config entsprechend editiert und das ging dann auch ohne probleme
 
Hi,

Ich habe mich früher auch mal mit OS-Entwicklung beschäftigt. Die Lowlevel-Comunity kann ich auch nur empfehlen,
durch deren Turorials hab ich meine ersten Kenntnisse in dem Bereich erworben.

Allerdings habe ich mein Projekt sehr schnell aufgegeben, da es einfach zu Umfangreich und Aufwändig ist um
überhaut produktiv etwas mit dem OS machen zu können. Man benötigt dafür eine riesen Infrastruktur.

Gruß Chris
 
Okay, danke. Ich schau' mich da mal um.

Hab's mit Bochs jetzt irgendwie hingekriegt. Würd's aber gern auch mit VPC schaffen, aber naja. Eins nach dem Anderen ;-)
 
Wenn du wirklich ernsthatf vorhast ein OS zu schreiben, würde ich mir irgendwo einen alten Pentium1 rechner besorgen. Ein emulator ist nie so gut wie ein echter PC.
So kann es z.B. passieren dass der PM-Wechsel im emulator funktioniert, auf einen echten PC nicht. genau so siehts auch mit vielen Treibern aus (z.b. floppy-treiber, tastaturtreiber, usw).

Wie BlackSun1102 schon andeutete, ein OS ist mehr als nur ein bootloader. Du solltets dich auf jedenfall mit debugging auseinandersetzen. (z.B. als allererstes ein rs232-treiber schreiben, um informationen an einen 2. PC zu schicken (oder unter bochs in eine *.txt zu schreiben) - Sehr hilfreich!

Und du solltes vorher genaustens überlegen wass das OS machen soll, und was nicht. Brauchste du Multitasking, Verwendest du Paging, (vorher natürlich 16Bit, 32Bit oder 64Bit) und solche sachen.

jedenfalls viel glück,

ps.: Noch eine gute community: http://www.osdev.org/phpBB2/
 
Hi,

Original von Xantoo
Hab's mit Bochs jetzt irgendwie hingekriegt. Würd's aber gern auch mit VPC schaffen, aber naja. Eins nach dem Anderen ;-)

Ich würde erstmal bei Bochs bleiben. Da kannst du wunderbar debuggen, was Virtual PC dir aber verwährt.
Außerdem kannst du mit Bochs verschiedene Architekturen emulieren und die Konfigurationsmöglichkeiten sind auch detailierter.

Original von RedEagle
So kann es z.B. passieren dass der PM-Wechsel im emulator funktioniert, auf einen echten PC nicht. genau so siehts auch mit vielen Treibern aus (z.b. floppy-treiber, tastaturtreiber, usw).

Das stimmt, Bochs lässt viele Sachen zu und schmeißt eine Warnung aus, bei der die echte CPU gleich eine Exception auslöst.
Und wenn dein Kernel mal hängen bleibt und du nur einen schwarzen Bildschirm hast... Nicht so toll ;)
Das mit der Seriellen Schnittstelle stimmt zwar. Aber so weit musst du erst kommen...

Original von RedEagle
Und du solltes vorher genaustens überlegen wass das OS machen soll, und was nicht. Brauchste du Multitasking, Verwendest du Paging, (vorher natürlich 16Bit, 32Bit oder 64Bit) und solche sachen.

Das Kerneldesign ist viel schwieriger als es sich anhört... Mir wurde das fast schon komplex in den Protected Mode zu schalten, da wirklich viel dazugehört.
z.B. Wie integrierst du Treiber und lässt diese miteinander kommunizieren?


Gruß Chris
 
Naja, das mit der OS-Entwicklung mache ich momentan hauptsächlich, um mal wieder ein neues Themengebiet der Programmierung anzufangen (Z80-Assembler und PHP habe ich inzwischen vollständig durch) und um meine Kenntnisse auf diesem grundlegendem Gebiet als auch in Assembler zu erweitern.
Ich weis noch nicht, ob ich ein gutes OS hinbekomme, aber ich will auf jeden Fall Erfahrungen sammeln auf diesem Gebiet. Ganz besonders Herausforderungen wie Filesystem und Multitasking, über das ich mich bestens informiert habe als auch Benutzeroberflächen möchte ich zumindest mit einbringen.

Zu Bochs:
Es sieht zwar nach sehr vielen Konfigurationsmöglichkeiten aus, allerdings habe ich nicht wirklich die Lust, diese "Konfigurationssprache" erst noch langwierig zu erlernen, genauso wenig, wie C mir bis jetzt Schmackhaft gemacht wurde.

Ansonsten habe ich noch nen Win98 50Mhz Rechner im Keller und einen 366 Megahertz-Rechner hier oben, mit dem allerdings nach dem Bootvorgang nicht mehr viel anzufangen ist (was ya letzendlich auch egal ist).
Allerdings müsste ich beide Geräte erst wieder "in Stand setzen" und da warte ich doch lieber erstmal bis sich das auch lohnt.
Nebenbei - Ich bin ein Vielspeicherer, das heißt, dass ich spätestens nach einer Zeile Code eigentlich schon automatisch die Speichertaste (STRG+S) drücke und das ich mir meine Fortschritte alle 2 Minuten auf dem Bildschirm anschauen möchte ;) .
Das heißt, dass mir ein Emulator sehr entgegen kommt (wenn er funktioniert).

Das mit dem Debuggen war mir bis jetzt eh immer zu schwierig, deswegen debugge ich lieber meinen ASM-Code im Kopf, bei komplexeren Sachen dann auch mal schriftlich oder mit dem Programmcode.

Und wenn jemand noch ein gutes Tutorial über BIOS-Interrupts findet, kann er gern einen Link dazu posten.

Thanks, Xantoo
 
Hi,

Original von Xantoo
Ich weis noch nicht, ob ich ein gutes OS hinbekomme, aber ich will auf jeden Fall Erfahrungen sammeln auf diesem Gebiet. Ganz besonders Herausforderungen wie Filesystem und Multitasking, über das ich mich bestens informiert habe als auch Benutzeroberflächen möchte ich zumindest mit einbringen.

Mach dir lieber nicht so viele Hoffnungen... OS Entwicklung ist ein SEHR komplexes Gebiet.
Du wirst schon noch verstehen, was ich meine ;)

Original von Xantoo
Zu Bochs:
Es sieht zwar nach sehr vielen Konfigurationsmöglichkeiten aus, allerdings habe ich nicht wirklich die Lust, diese "Konfigurationssprache" erst noch langwierig zu erlernen, genauso wenig, wie C mir bis jetzt Schmackhaft gemacht wurde.

Aber Bochs ist das kleinste Problem. Im Manual steht alles kurz und knackig drin
Das ist sogar viel einfach als irgendeine Man-Page zu studieren, geschweige denn den Protected-Mode zu verstehen :)

Original von Xantoo
Und wenn jemand noch ein gutes Tutorial über BIOS-Interrupts findet, kann er gern einen Link dazu posten.

Was willst du denn genau wissen? Wie die Interrupts funktionieren oder brauchst du eine Referenz?

Gruß Chris
 
Mach dir lieber nicht so viele Hoffnungen... OS Entwicklung ist ein SEHR komplexes Gebiet.
Du wirst schon noch verstehen, was ich meine ;)
Ja mal schauen. Mir geht es ja in erster Linie darum, Erfahrungen auf diesem Gebiet zu sammeln.

Aber Bochs ist das kleinste Problem. Im Manual steht alles kurz und knackig drin
Das ist sogar viel einfach als irgendeine Man-Page zu studieren, geschweige denn den Protected-Mode zu verstehen :)
Mal schaun.

Was willst du denn genau wissen? Wie die Interrupts funktionieren oder brauchst du eine Referenz?
Naja, eine englische Referenz kenne ich inzwischen und auch eine deutsche habe ich bis jetzt kennengelernt (nicht ganz volständig).
Dort sind zwar Beispielcodes, aber mich interessiert zum Beispiel, wie der Int 10h (ah=0) genau aussieht, also welche Werte wann zur verfügung stehen und so. Auch darüber habe ich inzwischen was in Erfahrung bringen können. Aber ein paar längere Erklärungstexte zu den Interrupts wären schon nicht schlecht. Aber natürlich bin ich auch immer weiter am Suchen.

MfG, Xantoo
 
Zurück
Oben