Autor Thema: TeeJay's FAT12 Bootlader  (Gelesen 4818 mal)

Spiderschwein13

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« am: 12. February 2008, 20:56 »
Hallo,
so langsam hab ich jetz nen kleinen Überblick über die ganzen C Kernel und Protected Mode Tuts & co.
Ich würde nun endlich gern ein Hallo Welt mit einem C Kernel machen.
Dafür ist ja das "C-Kernel starten"-Tut ganz gut geeignet, in dem ein einfacher C-Kernel beschrieben wird.
Um diesen zu starten, brauch ich jetzt aber noch, wenn ich das richtig verstanden habe, eine FAT12 Diskette mit dem TeeJay Bootsector auf die ich den kompilieren "Kernel" als KERNEL.BIN kopieren muss?

Allerdings weiß ich nicht ganz, wie ich diese Diskette (oder besser das Image, hab nämlich kein Diskettenlaufwerk) erstell.
Ich bin so weit gekommen, den TeeJay-Boot-Loader zu einer 512 Byte großen bootsec.bin zu kompilieren und mir ein FAT12 Diskettenimage auf dem die kompilierte kernel.bin schlummert zu erstellen und unter Linux zu mounten.

Wie aber bring ich jetz den Bootloader auf das Diskettenimage? Ich kann ja schlecht die ersten 512 Byte meines Images mit der bootsec.bin überschreiben, denn dann ist ja das ganze FAT System futsch ...
« Letzte Änderung: 12. February 2008, 21:01 von Spiderschwein13 »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 12. February 2008, 20:59 »
Ja, das hast du ganz richtig erkannt. Wenn ich mich recht erinnere, kommt TeeJays Bootloader nicht mit einem Dateisystem zurecht, sondern du mußt einfach den Bootsektor und direkt dahinter den Kernel auf die Diskette kopieren.

Wenn du ein Dateisystem auf der Floppy benutzen willst - was ja durchaus sinnvoll - ist, kann ich dich nur nochmal auf GRUB verweisen.


Edit: Ok, wenn das Ding FAT12-Bootloader heißt, wird es wohl auch irgendwie damit umgehen können und ich habe das verwechselt. ;) Dann bräuchte ich wohl zumindest mal den Link zu dem Ding, wenn du unbedingt darauf bestehst, nicht GRUB verwenden zu wollen.
« Letzte Änderung: 12. February 2008, 21:04 von taljeth »
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #2 am: 12. February 2008, 21:03 »
Nein, das Tutorial ist dafür garnicht gut geeignet. ;-)

Ich und auch andere hier im Forum sind der Meinung, dass der Einstieg mit Hilfe von Grub wesentlich leichter geht. Wenn du unter Linux arbeitest gibts hier.

Ich habe vor einiger Zeit mal einen gut Dokumentierten Beispielkernel dafür geschrieben: Hier

Edit:
Jo der Bootloader kommt mit FAT12 zurecht. Da musst du einfach die Diskette Formatieren und danach den Bootloader in den ersten Sektor schreiben. Der ist so formatiert, dass dem Dateisystem nichts passiert.
« Letzte Änderung: 12. February 2008, 21:08 von FreakyPenguin »

jgraef

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 12. February 2008, 21:17 »
Hi,

Auch nicht zu vergessen ist mein Tutorial über einen C-Kernel mit Grub:
http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_mit_Grub

Wenn etwas nicht funktioniert, musst du mich direkt anschreiben. Das Tutorial ist halt recht neu und könnte Fehler enthalten.

Spiderschwein13

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 12. February 2008, 21:46 »
Hmmm, ja, das müsst ich auch schonmal gesehen haben.
Irgendwie hab ich da aber nicht ganz durchgeblickt, jetzt check ichs..

Aber, hey FreakyPenguin, dein Kernel Bootloader + compiler.sh Packet is ja mal total geil!
Des hat sogar schon nen eingebauten VGA-Modus!
Genau das richtige für mich zum rumbasteln ;-)

Welche Auflösung und Farben hat denn der *g* 320*klein und 8bit oder?
Aber das is mir eigentlich egal ...
Also, ich nehm dein Ding vllt als "Basis". Steckt ja unter der "Macht damit, was ihr wollt"-Lizens.
Ich muss mich aber wohl trotzdem erstmal in dieses ganze Segment Zeugs einarbeiten ..
Dann versuch ich wahrscheinlich nen Maustreiber und ein paar Standard C Libs zu integrieren oda so ..

FreakyPenguin

  • Administrator
  • Beiträge: 301
    • Profil anzeigen
    • toni.famkaufmann.info
Gespeichert
« Antwort #5 am: 12. February 2008, 21:56 »
Hehe, so bringt ja meine Arbeit wenigstens was. ;-)

Wie gross die Auflösung ist, weiss ich auch nicht mehr, das musst du im Code schauen.
Aber der VGA-Code ist mehr als spielerei gedacht, um zu zeigen, dass es nicht immer Realmode sein muss. ;-)

Edit:
Ich habe gestern die schon mal angefangene Newlib-Version einigermassen fertiggestellt. Damit hat man schon von Anfang an die wichtigsten libc Funktionen zur Verfügung, die nicht viel mit dem OS zu tun haben, zum Beispiel printf.
http://tyndur.org/~toni/grubkernel_c_newlib.tar.bz2
Fall du ihn anschaust, beachte unbedingt die README oder du wirst früher oder später (eher früher als später ;-)) schwere Probleme kriegen.
« Letzte Änderung: 13. February 2008, 10:07 von FreakyPenguin »

 

Einloggen