Autor Thema: FAT12 formatieren  (Gelesen 11344 mal)

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« am: 26. June 2005, 15:10 »
Hi, Leute (bitte nicht schlagen bin neu)
Ich hab jetzt die Tuts in den 7 Ausgaben gelesen und durchgearbeitet. Mein kleines OS arbeitet so eigentlich ganz gut. Da gibt's nur ein Problem: Wie bekomme ich meine Diskette ins FAT12-Format? (möglichst mit dem Boot-Loader und Kernel).
Meine Diskette ist jetzt in einem unlesbaren Format, sowohl für Linux als auch für mein OS. Ohne Tabelle macht es doch keinen Sinn, eine solche auslesen zu wollen, oder?
Ich hab hier nur Infos zum Auslesen gefunden. Wenn ich was übersehen hab oder so, dann weist mich bitte darauf hin.
TFYA
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. June 2005, 15:23 »
Unter Linux formatierst du eine Diskette mit FAT 12 mit den mtools.

mformat /dev/fd0
Mit der -B Option kannst du ausserdem den Bootsector angeben, der verwendet werden soll. Alternativ kannst du ihn auch mit dd if=bootsector.file of=/dev/fd0 bs=512 auf die Floppy schreiben. Dein Bootsector muss natürlich einen FAT12 Header enthalten, das aussehen von denen ist ja in den FAT 12 Tutorials beschrieben und auf TeeJays Page gibts einen fertigen Bootloader für FAT 12 zum Download.
Ich empfehle dir jedoch GRUB zu benutzen, da GRUB viele nützliche Features wie Module oder Auslesen der Speichergröße unterstützt.[/code]

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #2 am: 26. June 2005, 17:07 »
Ich denke du willst dein OS und eine FAT12-Diskette haben. Schau dir mal das Tut von TeeJay an (auf lowlevel falsch verlinkt!).
http://www.jay-code.de

JEB

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 10. July 2005, 20:43 »
Danke jeb.
Nur...
Jetzt wollte ich natürlich mit einem C-Kernel weitermachen, nachdem der Bootloader einwandfrei funktioniert hatte und die Diskette formatiert war. Doch wenn ich jetzt boote, stürzt der PC ab und rebootet. Von dem Text oder anderen Dingen im C-Code seh ich nichts.
Ich hab das Problem isoliert, es liegt an dem Teil des Kernels, der in den PM umschalten soll. Ich hab das so übernommen, wie TeeJay es geschreiben hat, aber irgendwo scheint es nicht zu funktionieren.
Hat jemand ähnliche Probleme? Hat er sie gelöst?
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #4 am: 11. July 2005, 19:00 »
genau dieses Problem hab ich auch. Doch ich hab das Problem auch beim Bootloader von Ausgabe 1. Vielleicht hilft dir ja mein Thread "Linken nicht möglich" in Lowlevel-Coding.

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 11. July 2005, 19:58 »
Na ja, nicht wirklich.
Aber ich habs noch nicht so weit verfolgt, also bis zu einem einzigen ret-Befehl. Aber bei TeeJay muss es doch irgendwie funktioniert haben, sonst hätte er ja nicht das Tut geschrieben.
Ich weiß nicht, ob mein Code unter Bochs läuft, denn ich krieg Bochs nicht zum laufen. Der schreit immer nur >>PANIC<< could not read boot disc und ich hab keine Ahnung woran das liegt. Aber das wär ja ein anderer Thread...
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 11. July 2005, 20:18 »
So, hab jetzt noch weiter probiert, aber das Problem liegt eindeutig am Code zum Umschalten in den PM. Wo genau kann ich leider nicht herausfinden, da ich ja dort keine Debug-Messages ausgeben kann oder so. Ich hab aber den C-Kernel durch einen ASM-Kernel ersetzt, von dem ich weiß, dass er ohne vorheriges Umschalten funktioniert. Doch nun bin ich total ratlos...
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 13. July 2005, 22:54 »
So, hab den PM-Code jetzt eine halbe Stunde ohne Zwinkern betrachtet, und ich hab den Fehler gefunden. *tadaa*
TeeJay, du bist ein besserer Asm-Coder als ich es je sein werde, aber du hast ne STI vergessen. Am Anfang schreibst du CLI, aber ein STI fehlt. Und mein Kernel will natürlich einen Interrupt ausführen und schmiert prompt ab. Wär ein Vorschlag zur Änderung.
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 14. July 2005, 13:22 »
Die meisten PMode Bootloader haben kein sti stattdessen sind die Interrupts nach dem Ausführen deaktiviert. Oft wird im Kernel noch die IDT usw. erstellt bevor dann sti aufgerufen wird.

Strukain

  • Beiträge: 14
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 14. July 2005, 20:04 »
Na ja, bei mir gibt's (noch) keine IDT. Das hab ich aber auch nicht gewusst. Ist aber auch logisch.
Der Computer ist die Lösung auf Probleme, die wir vor ihm noch nicht hatten.

 

Einloggen