Autor Thema: Textausgabe funktioniert nicht im Emulator! (ob es am echten PC funktioniert?)  (Gelesen 5809 mal)

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
Ich habe mir OSDev für einsteiger durchgelesen.
Doch leider funktioniert die Textausgabe bei mir nicht.
Ich hab mein ISO-file mit VirtualBox gestartet und dann kommen nur irgendwelche komische Zeichen, die gerade im Videospeicher drinstehen. :evil:

Also wird warscheinlich die Adresse 0xb8000 nicht richtig angesteuert.
Ich bilde mir ein, dass ich mit den Pointern alles richig gemacht habe.

Was mach ich falsch??? :?

LG: Micha
« Letzte Änderung: 21. December 2011, 15:09 von micha.linuxfreak »

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
Tut mir leid, so schusselig wie ich bin habe ich meine Kristallkugel mal wieder verlegt.

Du müsstest mir also für dieses eine Mal ausnahmsweise sagen, was du überhaupt machst, wie du das Image erstellst und vielleicht den Code posten.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
Also,
ich erstelle mein ISO-image mit:
mkisofs -R -b boot/grub/stage2 -no-emul-boot -boot-load-size 4 -boot-info-table -o cdrom.iso ./img/

ich habe schon probiert -no-emul-boot raus zu nehmen, funktionier trotzdem nicht.

den Code hab ich von OSDev-4 Hello World übernommen, bis auf die dekleration von video:
   char *video;
   video = 0x8b000;

und dann alles genauso wie im Beispiel.
« Letzte Änderung: 22. December 2011, 15:05 von micha.linuxfreak »

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
Also aus dem Gedächtnis vermute ich, dass 0x8B000 mitten im RAM liegt, der Textmodus-VRAM jedoch ab 0xB8000...

Übrigens sollte nach dem Start vom ISO ein GRUB erscheinen, aus dem du dann deinen Kernel startest. Im Internet finde ich dann noch die Information, dass du nicht "stage2" für die ISO verwenden solltest, sondern "stage2_eltorito". Hab ich aber nicht nachgeprüft.

Wenn dein Kernel nicht ausgeführt wird, ist dessen Code auch egal.

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
Naja,
auf der seite von Grub in lowlevel stand ja, dass man dieses stage2_eltorito aus dem eigen System kopieren soll.
Nur gibts das bei mir nicht. Also habe ich stage2 genommen.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
auf der seite von Grub in lowlevel stand ja, dass man dieses stage2_eltorito aus dem eigen System kopieren soll.
Nur gibts das bei mir nicht. Also habe ich stage2 genommen.
Bist du dir sicher, dass es damit geht oder hast du einfach nur rumprobiert?

Die stage2_eltorito ist dafür ausgelegt, von einer bootfähigen CD-ROM gestartet zu werden, die normale stage2 nicht. Suche also nach dieser Datei; wenn sie auf deinem System nicht vorhanden ist, musst du eventuell ein Paket nachinstallieren oder die Datei aus den Sourcen erzeugen. Mit Grub2 hat das übrigens nichts zu tun. Wenn dein Hostsystem Grub2 benutzt und Grub1 nicht installiert ist, kannst du diese Datei nicht finden.

Einfach grub-legacy nachinstallieren ist eher kontraproduktiv, weil dir unter Umständen die Bootumgebung zerschossen wird. Also aufpassen!

Gruß,
Svenska

micha

  • Beiträge: 141
    • Profil anzeigen
Gespeichert
Hallo,
ich hab noch einmal nach stage2_eltorito gesucht.
....und habe es gefunden. Es lag in /usr/lib/grub/i386-pc/stage2_eltorito  :-D

Jetzt funktioniert es!!!!!

Danke für den Hinweis.

Micha

 

Einloggen