Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Rev4n am 07. November 2006, 22:17
-
Da ich nun schon seit Tagen versuche, irgendwie irgendeinen Bootloader richtig einen C Kernel laden zu lassen, und da es mir nicht gelinkt schon fast verzweifel, wende ich mich jetzt einfach mal an die Community.
Ich möchte hier nun weniger meine kläglichen Versuche aufzählen, und irgendwie den Fehler in ihnen finden, sondern eher mal fragen:
Wie muss theoretisch ein ganz kleiner bootloader aussehen, wie lasse ich ihn am besten einen C Kernel laden, und wie bringe ich das ganze am besten auf Diskette?
Über einen gegebenenfalls vorgefertigten kleinen bootloader der schon einen (am besten leeren) C Kernel lädt, würde ich mich am meisten freuen, da ich dann selber erforschen könnte, wo mein Fehler lag.
Also ich hoffe mir kann jemand mit einem kleinen Tutorial und/oder einem guten Beispiel weiterhelfen.
M.f.G
Rev4n
-
C Kernel heißt (fast) immer, dass es 32-bit protected Mode sein soll (gcc kann keinen 16bit Code erstellen). Also sollte die Reihenfolge ungefähr so aussehen:
1. Bootloader lädt (mithilfe von Bios-Interrupts) den Kernel
2. Bootloader schaltet in den PMode (falls Speicher über 1MB benutzt werden soll, auch noch das A20 Gate aktivieren)
3. main() wird aufgerufen
Tutorials würde ich dir TeeJays empfehlen: www.jay-code.de (http://www.jay-code.de). Am wichtigsten natürlich "protected mode" und "c kernel tutorial".
ps: oder du nimmst einfach Grub als Bootloader. Der lädt deinen Kernel aus praktisch jedem Dateisystem, schaltet PMode und A20 gate an, und kann bei Bedarf sogar in Grafik-Modus schalten (was im PM sonst schwierig ist)
-
Kann mir gegebenenfalls jemand einen Link zu einem guten GRUB Tutorials geben?
-
http://www.osdever.net/tutorials/grub.php?the_id=5
Is zwar in englisch, aber alle guten sources sind in englisch... Sollte eigentlich alle Fragen beantworten, sonst kannst du dich gerne mit mir direkt in Verbindung setzen (Messengeradressen siehe links :) ).
-
Kann mir noch jemand eine beispiel-ASM (Die auf den Kernel aufgelinkt wird) Datei geben, die alle GRUB relevanten sachen enthält?
-
Ok hat sich alles erledigt :-D
-
@Rev4n: Kein Bock mehr, oder hat's geklappt? ;-)
bitmaster
-
FalShen hat mir via Messenger geholfen :-)