Autor Thema: GRUB VESA wie aktivieren?  (Gelesen 4223 mal)

gcalctool

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« am: 15. February 2010, 12:26 »
Hi Lowlevel-Community!

Ich wollte mal mit VESA bisschen herumexperimentieren ich habe den Grub gepatcht und installiert aber wie aktiviere ich VESA nun in meinem Kernel? Ich habe kein vernünftiges Tutorial dazu gefunden vl. könnt ihr mir da ein bisschen weiterhelfen!

Danke!

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #1 am: 15. February 2010, 12:58 »
Da kann die Multibootspezifikation helfen:

http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Header-layout gibt an, wie der Multibootheader aufgebaut sein soll. Du musst also Bit 2 in den Flags setzen, dann 20 Nullbytes (bzw. irgendwelche Bytes, werden ignoriert, wenn du Bit 16 nicht setzt) einfügen und danach kommt das Feld mit den Informationen über den gewünschten Modus, siehe hier: http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Header-graphics-fields

Welcher Modus dann gesetzt wurde, kannst du mit der Multiboot-Structure rausfinden: http://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #2 am: 15. February 2010, 14:34 »
Wenn dein gepatchter GRUB funktioniert, kannst du diesen ja mal irgendwo hochladen. Bei mir hat das Patchen und kompilieren zwar funktioniert, nur bei der Verwendung des neu erstellten GRUBs kam immer wieder irgendeine blöde Fehlermeldung...  :cry:

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #3 am: 15. February 2010, 15:01 »

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #4 am: 15. February 2010, 15:14 »
Naja war nicht ganz der Fehler, den ich hatte...
Bei mir kam immer und überall (sogar im Emulator (qemu & bochs)) der Fehler, dass VBE 2.0 nicht unterstützt werde... Vielleicht habe ich da auch irgendwas anderes falsch gemacht...  :roll:
Ich schaue mir das mal an und probiere auch nochmal selbst GRUB zu patchen und zu kompilieren. Vielleicht funktioniert es ja dieses mal. .. :roll:

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #5 am: 15. February 2010, 15:29 »
Es geht darum, dass der zweite Beitrag einen Link zu einem gepatchten GRUB enthält. :wink:

EDIT: Hm, jetzt erst selbst auf den Link geklickt... Der enthält ja nur eine eltorito-stage2... :-P

gcalctool

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 15. February 2010, 19:15 »
Hi!

Ich weiß nicht irgendwie bring ich das nicht hin der gepatchte Grub bootet zwar, aber irgendwie schaltet er nicht in den VESA mode. Ich baue den Multibootheader wie folgt zusammen:
.align 4
.int 0x1badb002
.int 0x6
.int -0x1BADB008
.int 0x0
.int 0x0
.int 0x0
.int 0x0
.int 0x0
.int 0x1
.int 640
.int 480
.int 8

aber in meiner MultibootInfo ist alles was mit dem VESA zu tun hat null:
    printf("%x\n", mbInfo->vbe_control_info);
    printf("%x\n", mbInfo->vbe_mode_info);
    printf("%x\n", mbInfo->vbe_mode);
    printf("%x\n", mbInfo->vbe_interface_seg);
    printf("%x\n", mbInfo->vbe_interface_off);
    printf("%x\n", mbInfo->vbe_interface_len);
Danke

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #7 am: 15. February 2010, 20:43 »
Ist Bit 11 im flags-Feld der Multibootstruktur gesetzt (also das erste DWord)? Nur dann sind diese Werte auch gültig, das Problem ist nur, dass die immer gültig sein sollten, wenn man angezeigt hat, dass man einen Grafikmodus will...

gcalctool

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 15. February 2010, 22:10 »
Uiui ich glaube da hat was mit dem Patchen doch nicht so hingehaun wenn ich Bit 11 setze sagt mir Grub folgendes:
  Booting 'os1'

kernel /kernel

Error 10: Unsupported Multiboot features requested

Press any key to continue...
Aber ich verstehe das nicht das Patch-Script ist ohne Probleme durchgelaufen. Auch der Kompiliervorgang von Grub wurde erfolgreich beendet. Woran kann das liegen?

Danke!

ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #9 am: 16. February 2010, 09:21 »
Laut Spezifikation muss das Bit 2 gesetzt werden:
If bit 2 in the ‘flags’ word is set, information about the video mode table (see Boot information format) must be available to the kernel. Anhand von Bit 11 kann man im Kernel später testen, ob die vbe_* variablen in der multiboot struktur gültig sind. ;)
 
Also sollte der Part mit den Flags 0x7 (Page align, memory info und video mode) sein. Dem entsprechend musst du dann auch deine Checksum ändern...
 
 
Hier kann man eine gepatchte und anscheinend funktionierende Version von GRUB herunterladen. Versuch mal damit ein Image zu erstellen und deinen Kernel zu laden, falls deine Version nicht funktioniert:
http://www.ninj4.net/kinetic/
« Letzte Änderung: 16. February 2010, 10:01 von ChristianF »

gcalctool

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 16. February 2010, 16:04 »
Ich hab jetzt die Stage 2 ausprobiert von http://www.ninj4.net/kinetic/ jetzt passiert was ganz komisches was ich überhaupt noch nie erlebt habe: Jetzt schreibt er mir nach booting from floppy... lauter GRUB auf den Bildschirm also lauter GRUB GRUB GRUB GRUB GRUB GRUB GRUB hintereinander :-(


ChristianF

  • Beiträge: 296
    • Profil anzeigen
    • DeutschOS - Betriebssystem Projekt
Gespeichert
« Antwort #11 am: 19. February 2010, 08:23 »
mmmhhh...
Welchen Patch hast du denn bei dem von dir kompilierten GRUB genutzt?

 

Einloggen