Autor Thema: Kernel von Festplatte booten  (Gelesen 8487 mal)

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« am: 08. December 2005, 14:11 »
Hallo,

ich bin auf eure Tutorials gestossen und würde die jetzt gern ausprobieren.
Leider hab ich kein Diskettenlaufwerk an meinem PC.

Nun zu meiner Frage: Wie kann ich denn den Kernel auch von einer meiner Partitionen starten. Momentan benutze ich den GRUB-Bootloader. Kann ich das mit dem machen?

Wäre für schnelle Antwort dankbar.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 08. December 2005, 14:36 »
Erstell dir einfach eine Partition, formatier sie mit FAT oder EXT2, dann kannst du mit GRUB ganz leicht den Kernel booten. Allerdings kann GRUB nur Protected Mode Kernels laden.
In deine menu.lst von GRUB trägst du dann etwas wie:
root (hd0)
kernel /dein_os/kernel.elf

Ausserdem muss dein Kernel einen Multiboot Header besitzen, ich glaub aber in einem der Maganzine wird beschrieben, wie man den einbaut.

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 10. December 2005, 15:05 »
Dankeschön für die Antwort.
Jetzt stellt sich für mich noch eine Frage:
Kann ich dazu den Kernel, der im "Kernel in C" Tutorial vorgestellt wurde verwenden?
Ich habe mir unter Windows meine Windows-Partition F mit Fat formatiert.
Muss ich darauf dann einfach den Kernel speichern?
Was muss ich denn jetzt bei mir genau meine menu.lst von GRUB eintragen?

Danke schonmal im Voraus

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 10. December 2005, 18:48 »
Kann mir keiner schnell helfen?

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 10. December 2005, 19:04 »
In deine menu.lst muss folgendes rein:

title <os name>
root (hd<plattennumber>,<partitionsnummer>)
kernel <datei_des_kernels>


Zum C Kernel musst du einen Multibootheader hinzufügen, wie das steht, steht im GRUB Manual, oder such mal bei Google nach Tutorials.

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 10. December 2005, 20:22 »
Habe meinen Kernel erstellt und auf einer Partition unter dem Namen kernel.bin gespeichert.

Möchte ich nun über Grub den Kernel booten erhalte ich folgende Meldung:
Zitat
Error 1 : Filename must be either an absolute pathname or blocklist

Warum??

Was hab ich falsch gemacht?

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 10. December 2005, 20:27 »
Was steht in der menu.lst?

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 11. December 2005, 00:06 »
menu.lst:
Zitat
title MyOS
root (hd0,6)
kernel kernel.bin

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 11. December 2005, 11:32 »
versuch mal
kernel /kernel.bin

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 11. December 2005, 13:50 »
Nun erhalt ich:
Zitat
Error 13: Invalid or unsuported executable format


Geht also immer noch nicht

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 11. December 2005, 13:52 »
Hast du einen Multibootheader in deinem Kernel? Kompilier den Kernel mal zu einer ELF File, ELF kann von GRUB am besten verarbeitet werden.

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 11. December 2005, 13:54 »
Kann mir vll jemand ein Tutorial zu einem Kernel mit Multiboot-Header oder gleich einen Kernel mit dem ich das schnell ausprobieren kann.

P.S.: Wie kann ich den einen Kernel zu einer ELF FIle machen?

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 11. December 2005, 14:03 »
Welchen Compiler verwendest du? Unter Windows musst du dir warscheinlich einen Patch für LD laden, damit LD ELF Files erzeugen kann. Unter Linux musst du einfach nur LD ein Argument mitgeben, das das Ausgabeformat ändert.

Hier ist ein Tutorial über GRUB:
http://www.openbg.net/sto/os/xml/grub.html

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 11. December 2005, 14:19 »
Ich steh glaube ich gerade irgendwie auf dem Schlauch. Ich benutze den Kernel aus dem Tutorial "Kernel in C". Könnte mir vll bitte jemand sagen, was ich an diesem Kernel ändern muss, damit er so läuft wie ich das will.

Ich komm gerade anderst einfach nicht weiter.

Creeky

  • Beiträge: 19
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 12. December 2005, 17:52 »
Kann mir keiner noch letzt endlich schnell helfen?

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 12. December 2005, 18:26 »
In Lowlevel #5 ist ein Tutorial in dem beschrieben wird, wie man einen GRUB-kompatiblen Kernel schreibt. Das sollte für den Anfang reichen.
Du musst einfach nur einen bestimmten Header zu deinem Kernel hinzufügen. Dabei musst du darauf achten, dass er in den ersten 8kB liegt und 4byte aligned ist. Die genauen Zahlen und den Aufbau findest du in einem der Tutorials.

 

Einloggen