Autor Thema: [solved] C Kernel laden, in pmode springen  (Gelesen 4104 mal)

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« am: 04. October 2009, 14:31 »
hallo,

ich bin schon seit längerem auf der suche nach einem asm code der:
1. bootloader: der einen kernel lädt und in pmode wechselt
2. kernel: der von diesem bootloader geladen wird
dies beides enthält und auch funktioniert.

Daher meine Fragen:

1. funktioniert das hier bei jemanden:
http://lowlevel.brainsware.org/forum/index.php?topic=2050.0
(bei mir nicht, weder mit bochs, noch mit einer diskette von der gebootet wird)
[edit]genauer: es gibt einfach immer wieder einen reeboot[edit]

2.funktioniert das wiki-tut c kern laden bei jemanden (nach gewissen veränderungen evtl.)?


3. hat vielleicht jemand ein funktionierendes beispiel?
(ich wäre sehr sehr dankbar :)

Was mir bisher gelungen ist:
1. hallo welt "bootloader"
2. "bootloader" der eine 16bit kern lädt

mfg ika
« Letzte Änderung: 04. October 2009, 18:38 von ika »

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #1 am: 04. October 2009, 16:01 »
1. Nimm GRUB
2. Willst du einen kompletten Kernel haben? ^^
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 04. October 2009, 16:55 »
es wäre nett auf eine meiner fragen zu entworten.
was ich will ist ein funktionierender loader, der ... siehe überschrift >.<

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 04. October 2009, 17:11 »
GRUB ist ein funktionierender Bootloader, der in den PM wechselt. tyndur ist ein Kernel, der von GRUB geladen wird. Ist halt beides nicht komplett Assembler.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 04. October 2009, 17:21 »
ich danke dir für die antwort, ich weiss doch was grub ist :/

funktioniert das hier bei dir?

Zitat:
"1. funktioniert das hier bei jemanden:
http://lowlevel.brainsware.org/forum/index.php?topic=2050.0
"
in der pdf ist der komplette source (loader+kern).

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #5 am: 04. October 2009, 17:38 »
Schreib' dir nen Bootloader selbst oder nimm GRUB. </troll> </flamewar>
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 04. October 2009, 17:41 »
1. funktioniert das hier bei jemanden:
http://lowlevel.brainsware.org/forum/index.php?topic=2050.0
(bei mir nicht, weder mit bochs, noch mit einer diskette von der gebootet wird)
[edit]genauer: es gibt einfach immer wieder einen reeboot[edit]
Funktioniert bei mir.
Ich habs es mit einem Crosscompiler (target: i586-elf) kompiliert, und musste nur die Warnung beseitigen, dass _main dann main heißt.
Dieser Text wird unter jedem Beitrag angezeigt.

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 04. October 2009, 17:57 »
Funktioniert bei mir.
Ich habs es mit einem Crosscompiler (target: i586-elf) kompiliert, und musste nur die Warnung beseitigen, dass _main dann main heißt.
ok, vielen dank, jetzt weiss ich zumindestens, dass es nicht am code liegt
ich verwende Bochs-2.4.1
# GrцЯe des Hauptspeichers.
megs:32

# Wo stecken BIOS und VGA-ROM?
romimage: file=BIOS-bochs-legacy
vgaromimage: file=VGABIOS-elpin-2.40

# Ein Diskettenlaufwerk, in dem eine Diskette steckt.
floppya: image=disc.iso, status=inserted

# Bootlaufwerk festlegen.
boot: floppy

# Datei fьr Protokoll und Fehlermeldungen.
log: protokoll.log

# Die Maus sollte man solange nicht verwenden, wie es auch
# das emulierte Betriebssystem nicht tut.
mouse: enabled=0

# Ausgabe des Debuggers.
debugger_log: debug.log
#debugger_log: -

# Was tun bei welchem Fehler?
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
an dem kanns dann wohl auch nicht liegen,

zum kompilieren benutze ich: DJGPP
set DJGPP=c:\djgpp\djgpp.env
gcc -ffreestanding -c -o kernel.o kernel32.c

nun ja, ich werde mal weiter rumprobieren
[edit] bin dabei den von dir verlinkten crosscompiler auszuprobieren
« Letzte Änderung: 04. October 2009, 17:59 von ika »

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 04. October 2009, 18:26 »
Schreib' dir nen Bootloader selbst oder nimm GRUB. </troll> </flamewar>
es ist nicht nötig den thead ohne grund zu verlängern, wenn man nicht vorhat auf die frage zu antworten. Doch danke für den versuch der Hilfe.

Funktioniert bei mir.
Ich habs es mit einem Crosscompiler (target: i586-elf) kompiliert, und musste nur die Warnung beseitigen, dass _main dann main heißt.

das problem war der DJGPP (ja mir ist klar, dass es dich nicht wundert^^), mit dem crosscompiler hat alles wunderbar geklappt.
Danke nochmal für die Zeit, die du dir genommen hast.

PS: http://lowlevel.brainsware.org/wiki/index.php/C-Kernel_starten
kann es sein das der loader "kernel16.asm" der sich in der zip befindet, fehlerhaft ist?
...
PMODE2:
jmp END   ;Zum Ende Springen

times 512-($-$$) db 0;Da der Linker sich nicht mit ungeraden
;DateigrцЯen vertrдgt, wird diese Datei auf 512
;gepaddet.

END:
so fehlt meiner meinug nach die Bootsignatur, oder kann man auf diese verzichten?
(Das nur als eine Bemerkung am Rande)
[edit] wo ist der problem-gelöst button bitte?^^
« Letzte Änderung: 04. October 2009, 18:29 von ika »

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 04. October 2009, 18:38 »
das problem war der DJGPP (ja mir ist klar, dass es dich nicht wundert^^)
Das wundert mich in der Tat nicht. Wer hat dich denn auf diesen Compiler gebracht?

so fehlt meiner meinug nach die Bootsignatur, oder kann man auf diese verzichten?
kernel16.asm wird nicht in den Bootsektor geschrieben, also muss da auch keine Signatur rein. Diese Datei wird nur auf 512 Bytes erweitert, damit sie genau einen Sektor belegt. Das sieht nur ähnlich aus wie beim Bootsektor, aber hat damit nichts zu tun.
Dieser Text wird unter jedem Beitrag angezeigt.

ika

  • Beiträge: 27
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 04. October 2009, 18:43 »
omg, ja war ne %&*$ frage. "bootsec.asm" <- das ist doch der loader -.-
ich sollte mal ne pause machen, bringe schon alles durcheinander, bin dann mal frische luft schnappen. Und nochmal danke, freue mich schon weiterzumachen...

 

Einloggen