Probleme mit ersten Gehversuchen unter Bochs



  • Hi zusammen!

    Seit kurzem befasse ich mich auch mit der OS Entwicklung und versuche auch, das Ganze zu verstehen. Um Fehler meinerseits erstmals auszuschließen, habe ich das allererste Beispiel von http://www.henkessoft.de/OS_Dev/OS_Dev1.htm einfach kopiert und laut Anleitung erstellt (echt tolle Beschreibung übrigens). Ich habe den ASM Code nicht verändert und auch die Bochs Config File so übernommen.
    Da ich kein Floppy Laufwerk auf diesem PC habe, hab ich diese natürlich entsprechend angepasst (wie beschrieben).

    Wenn ich nun Bochs starte, komme ich nur bis zur Meldung "Booting from Floppy..." und dann wars das. Der Cursor blinkt außerdem sehr schnell, ich würde es eher schon als flackern bezeichnen.

    Ist das unter Bochs relevant, welchen Prozessor ich habe oder wird dieser auch auf irgendeine Art emuliert? Dass das Ganze hier auf keinen AMD Phenom II ausgelegt ist, ist mir klar. An was liegts, kann das wer sagen? Weil ich überlege mir, einen alten Laptop anzuschaffen zum Testen, nur weiß ich nicht, ob das nötig ist.

    Danke für eventuelle Antowrten.

    mfg



  • Langi schrieb:

    Wenn ich nun Bochs starte, komme ich nur bis zur Meldung "Booting from Floppy..." und dann wars das. Der Cursor blinkt außerdem sehr schnell, ich würde es eher schon als flackern bezeichnen.

    Ist das unter Bochs relevant, welchen Prozessor ich habe oder wird dieser auch auf irgendeine Art emuliert? Dass das Ganze hier auf keinen AMD Phenom II ausgelegt ist, ist mir klar. An was liegts, kann das wer sagen? Weil ich überlege mir, einen alten Laptop anzuschaffen zum Testen, nur weiß ich nicht, ob das nötig ist.

    Ja, das ist relevant. Man sollte in die Konfigurationsdatei in der "cpu: ..."-Zeile die ips (Instructions per second) anpassen. In der Beispielconfig ist auch eine Tabelle drin, für welchen Prozessor welche Werte ungefähr passen, damit man einen Anhaltspunkt hat.

    Ansonsten bleibt dir natürlich immer noch der Weg offen, einen anderen Emulator zu nehmen. Ich persönlich bevorzuge qemu.

    Seit kurzem befasse ich mich auch mit der OS Entwicklung und versuche auch, das Ganze zu verstehen. Um Fehler meinerseits erstmals auszuschließen, habe ich das allererste Beispiel von http://www.henkessoft.de/OS_Dev/OS_Dev1.htm einfach kopiert und laut
    Anleitung erstellt (echt tolle Beschreibung übrigens).

    Ja, aber Vorsicht vor dieser tollen Beschreibung. Sie stammt von einem Anfänger und verfolgt kein richtiges Design sondern hackt alles ad hoc zusammen (und bemerkt teilweise später, dass es doch nicht so toll war). Ich glaube (oder hoffe wenigstens), Erhard würde heute einiges anders schreiben. 😉

    Vielleicht legst du dir noch die Tutorialreihe OS-Dev für Einsteiger von Lowlevel daneben und vergleichst die jeweiligen Ansätze (wobei das Lowlevel-Tutorial ein paar Themen weniger behandelt).



  • Diese Anleitung ist zumindest toll geschrieben und für mich recht übersichtlich. Ich werd mir die Alternative mal zu Gemüte führen.

    Wenn ich zu Hause bin, werd ich mir die Sache mit den IPS nochmal ansehen, danke für den Tip!


  • Mod

    Ja, aber Vorsicht vor dieser tollen Beschreibung. Sie stammt von einem Anfänger und verfolgt kein richtiges Design sondern hackt alles ad hoc zusammen (und bemerkt teilweise später, dass es doch nicht so toll war). Ich glaube (oder hoffe wenigstens), Erhard würde heute einiges anders schreiben. 😉

    Danke für die Blumen! Klar würde ich mit der Erfahrung von über einem Jahr, einem funktionierenden OS und einer kleinen Community in dem bedeutendsten Entwickler-Forum im deutschsprachigen Raum einiges anders angehen, z.B. nicht den DJGPP verwenden, aber die innere Haltung eines Einsteigers in OSDev könnte ich emotional nicht mehr in dieser Art nachempfinden. Ich habe das übrigens damals begonnen, weil ich nichts Brauchbares fand, so wie ich mir das vorstellte, auch nicht bei taljeth & Co. 😉

    Zu Bochs:
    Das im Skript angegebene Konfigurationsskript passt offenbra nicht mehr zum neuen Bochs-Tool. Einfach Bochs starten, die Standard-Einstellung aktivieren und die Floppy bzw. das Floppy-Image manuell selbst einrichten.

    zu GRUB: http://www.lowlevel.eu/wiki/OS-Dev_für_Einsteiger#Der_Bootloader

    Hier gibt es die großen zwei Möglichkeiten, etwas fertiges zu nehmen oder selbst einen Bootloader zu schreiben. Ein guter Bootloader ist ein Projekt für sich, daher empfehle ich grundsätzlich, GRUB zu benutzen und sich auf das eigentliche Betriebssystem zu konzentrieren.

    Ich habe mich damals für den eigenen Bootloader entschieden, weil für mich das OS dort beginnt (taljeth sieht das anders), also beim Boot-Prozess! Unter Windows habe ich GRUB nicht gefunden, Linux wollte nicht zwingend, sondern nur optional einsetzen, was bisher nicht notwendig ist. Unser aktueller Bootloader von prettyOS wurde gerade aktuell teilweise debuggt und gefixt und wird noch einige Zeit "durchhalten".

    Will man jedoch Linux verwenden, ist der GRUB-Ansatz sicher bedenkenswert. Es ist eben eine Alternative zu einer eigenen Lösung.


  • Mod

    verfolgt kein richtiges Design

    Mein primäres Ziel war es, ein OS von innen zu verstehen und anderen dies in geeigneter Form weiter zu geben. Ein eigenes "Design" kann ich erst sinnvoll verfolgen, wenn ich ausreichend Erfahrung habe, und zwar mit mehreren Entwürfen.

    PrettyOS sollte entsprechend den Ansprüchen wachsen. Dieses "evolutionäre" udn gleichzeitig praktische Vorgehen hat Vorteile aber auch Nachteile, genau wie alle anderen Ansätze auch. Im OSDev-Bereich gibt es nicht immer ein richtig oder falsch. Im Hobby-Bereich, und da bewegen wir uns hier, geht es vor allem darum, zu experimentieren sowie Fakten und mögliche Zusammenhänge kennen zu lernen. Wer zuviel designt, kann sich zum Schluss nämlich für nichts entscheiden und ist ständig suboptimal gestimmt, und das lähmt. 😃

    Bei PrettyOS geht dagegen immer noch lustig die Post ab, und Baustellen gibt es zum Glück ohne Ende. 👍



  • Erhard Henkes schrieb:

    Klar würde ich mit der Erfahrung von über einem Jahr, einem funktionierenden OS und einer kleinen Community in dem bedeutendsten Entwickler-Forum im deutschsprachigen Raum einiges anders angehen, z.B. nicht den DJGPP verwenden, aber die innere Haltung eines Einsteigers in OSDev könnte ich emotional nicht mehr in dieser Art nachempfinden.

    Richtig, das habe ich ja auch mehrfach gesagt, dass ich dir da zustimme. Aber man muss das Ergebnis dann eben auch als das betrachten, was es ist: Ein Erfahrungsbericht eines Einsteigers, nicht unbedingt ein Tutorial, wie man es richtig macht. Das ist auf seine eigene Weise wertvoll (vor allem auch für die Erfahreneren, denen es manchmal schwerfällt, sich in Anfänger hineinzuversetzen), aber wenn man es als Tutorial benutzt, muss man sich dessen bewusst sein. Nicht mehr und nicht weniger meinte ich mit Vorsicht.

    Ich habe das übrigens damals begonnen, weil ich nichts Brauchbares fand, so wie ich mir das vorstellte, auch nicht bei taljeth & Co. 😉

    Wir haben uns seither ja auch weiterentwickelt, und ich hoffe zum Guten. 😉

    zu GRUB: http://www.lowlevel.eu/wiki/OS-Dev_für_Einsteiger#Der_Bootloader

    Hier gibt es die großen zwei Möglichkeiten, etwas fertiges zu nehmen oder selbst einen Bootloader zu schreiben. Ein guter Bootloader ist ein Projekt für sich, daher empfehle ich grundsätzlich, GRUB zu benutzen und sich auf das eigentliche Betriebssystem zu konzentrieren.

    Ich habe mich damals für den eigenen Bootloader entschieden, weil für mich das OS dort beginnt (taljeth sieht das anders), also beim Boot-Prozess! [...] Unser aktueller Bootloader von prettyOS wurde gerade aktuell teilweise debuggt und gefixt und wird noch einige Zeit "durchhalten".

    Eigentlich war das Thema hier ja gar nicht im Thread, aber wenn du es schon ansprichst... 😉

    Wie viel ihr am Bootloader herumdebuggen und fixen müsst, ist ja genau die Bestätigung für die Aussage, dass das ein aufwendiges Projekt für sich allein ist. Und ihr seid immer noch bei einem sehr einfach gestrickten Loader. Wir sagen nicht, dass es falsch ist, einen eigenen Bootloader zu entwickeln (es sind ja auch entsprechende Tutorials im Wiki), wir raten nur davon ab, weil es tendenziell großer Aufwand mit wenig Nutzen ist.

    Unter Windows habe ich GRUB nicht gefunden, Linux wollte nicht zwingend, sondern nur optional einsetzen, was bisher nicht notwendig ist.[...]
    Will man jedoch Linux verwenden, ist der GRUB-Ansatz sicher bedenkenswert. Es ist eben eine Alternative zu einer eigenen Lösung.

    Es gibt grub4dos, das unter Windows läuft, siehe http://www.lowlevel.eu/wiki/GRUB-Image_erstellen_(Windows) - und generell reicht zum Einrichten von GRUB sowieso eine GRUB-Floppy. So habe ich früher Linuxrechner mit GRUB ausgestattet, als er noch nicht so verbreitet war.


  • Mod

    Nicht mehr und nicht weniger meinte ich mit Vorsicht.

    Doch du wolltest mein Tutorial eindeutig disqualifizieren: 😃

    Anfänger ... verfolgt kein richtiges Design ... hackt alles ad hoc zusammen

    Diese Töne sind mir aber inzwischen egal. Ich werde demnächst aber einen vierten Teil des Tutorials schreiben, der die aktuelle Phase beschreibt, denn es gibt ja auch Leute, die "über den Berg" (RM->PM, kernel laden, grundmodule, ...) sind und sich fragen, wie geht es weiter.



  • So wie du das Tut von James gelegentlich disqualifizierst. 😉

    Dass dir die Kritik egal ist, habe ich mir fast schon gedacht, aber mit einem experimentellen Tutorial tust du Anfängern keinen Gefallen.



  • ach, taljeth, schön, dass du schon mal da bist, guckst du hier:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-268760-and-sid-is-c41d4b83f1da0f0abe41c6e276cff697.html

    (dann brauch ich das (auch) nicht im lowlevel-forum zu posten,... 😉


  • Mod

    So wie du das Tut von James gelegentlich disqualifizierst. 😉

    Nur den Multitasking-Part. Der ist schauerlich schlecht. 😃

    Ich habe eine Ergänzung am ersten teil des Tutorials angebracht: http://www.henkessoft.de/OS_Dev/OS_Dev1.htm#mozTocId786364
    ... und werde in nächster Zeit einige Dinge begradigen. Den "Charakter" werde ich aber nicht verändern, weil dies nicht wiederholbar ist. Dafür bitte ich um Verständnis.



  • taljeth schrieb:

    ... aber mit einem experimentellen Tutorial tust du Anfängern keinen Gefallen.

    Da befindest Du Dich im Irrtum.

    Ich verfolge die Entwicklung von PrettyOS praktisch seit Anfang
    an mit großer Aufmerksamkeit, da ich ebenfalls immer daran
    interessiert war zu wissen, wie ein Betriebssystem funktioniert.

    Ich habe besonders durch die Tutorials von E. Henkes eine
    Menge gelernt. Sie sind als praktische Starthilfe mit Abstand
    das Beste, was es im deutschsprachigem Raum zu finden gibt.

    --
    user123


  • Mod

    @user123: genau das wollte ich intuitiv erreichen, eine praktische Starthilfe in deutscher Sprache mit dem normalen Windows-PC. Freut mich, wenn das Tutorial dir da geholfen hat.

    Ich habe es geschrieben, weil ich damals nichts fand, was mir selbst wirklich zusagte. týndur war mir damals zu weit fortgeschritten, und Anfänger werden in Foren nicht gerade weich angefasst, wenn sie sich geistig verirren. RTFM ist das geringste dabei. Man muss sich das nur in osdev.org ansehen.

    Bei brainsware war mir wiederum zu wenig los. Allerdings hat man mir dort mit konkreten Multitasking-Beispielen weiter geholfen, da habe ich mir etwas schwer getan bei User-Programmen, weil ich das Intel-Manual nicht ordendlich gelesen hatte (wieder: RTFM).

    Mein Dank gilt vor allem dem Assembler-Subforum, dass mich bei meinem "Trip" getragen hat. Dieser Riesen-Thread ist ja heute hier in diesem Subforum, das uns Marcus Bäckmann ermöglichte. 👍

    Wenn ich die innere Kraft finde, werde ich auch noch einen Teil 4 schreiben, der die Erfahrungen des letzten Jahres und die aktuelle Situation mit PrettyOS beschreibt.

    Übrigens: wer sich für Design interessiert, dem seien die Bücher von Prof. Tanenbaum empfohlen. Allerdings sind diese etwas weg von konkreten Dingen, wie es sich für ein Informatikbuch gehört. 😃



  • user123 schrieb:

    Ich verfolge die Entwicklung von PrettyOS praktisch seit Anfang
    an mit großer Aufmerksamkeit, da ich ebenfalls immer daran
    interessiert war zu wissen, wie ein Betriebssystem funktioniert.

    Richtig, wie ein Betriebssystem funktioniert. Dieses Betriebssystem heißt PrettyOS, befindet sich irgendwo am Anfang seiner Entwicklung und hat nicht für alles unbedingt orthodoxe Lösungen. 😉

    Ich habe besonders durch die Tutorials von E. Henkes eine
    Menge gelernt. Sie sind als praktische Starthilfe mit Abstand
    das Beste, was es im deutschsprachigem Raum zu finden gibt.

    Vermutlich das längste zusammenhängende deutsche Tutorial, ob es das zum besten macht, wage ich nicht zu beurteilen. Wobei das "beste" immer auch bedeuten kann, dass alle Alternativen nicht zufriedenstellend sind...


  • Mod

    Zunächst einmal sollte man jedem dankbar sein, der seine Erfahrungen und Erkenntnisse in der gewünschten Sprache anderen kostenfrei anbietet. Ich kann hier in deutscher Sprache http://www.lowlevel.eu/wiki/Hauptseite empfehlen, das sich in letzter Zeit weiter entwickelt hat.

    Allerdings sollte man sich bei den konkreten Empfehlungen ein eigenes Bild machen. Das gilt für die Aussagen meines Tutorials in gleicher Weise.

    Dieses Betriebssystem heißt PrettyOS, befindet sich irgendwo am Anfang seiner Entwicklung und hat nicht für alles unbedingt orthodoxe Lösungen.

    Ja, so kann man das sagen. Zum Glück haben wir keinen orthodoxen Designer mit an Bord, sondern folgen weitgehend unserer Intuition und unserem eigenen Verstand. 😃

    Ein besonderes Dankeschön gilt hier allen, die sich unermüdlich mit mir zusammen um dieses kleine Pflänzchen bemühen. Die Zeit der Blüte werden wir auch noch erleben, da bin ich zuversichtlich. 👍


Log in to reply