Autor Thema: Module laden mit GRUB  (Gelesen 1716 mal)

OsDevNewbie

  • Beiträge: 281
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« am: 25. June 2012, 19:18 »
Hallo,
ich lasse GRUB meinen Bootloader laden und zudem noch meinen Kernel als Modul. In der Multibootstruktur kann man den Namen auslesen, aber wenn ich den über meinen Bootloader ausgeben lasse, dann kommt nichts. Mein Code an dieser Stelle lautet:
Code: (C) [Auswählen]
print("Name des Moduls: ");
print((char*)MBS->mbs_mods_addr[0].name);
print("\n\r");
In der Multibootstruktur deklariere ich noch:
Code: (C) [Auswählen]
mbs_mods_addr* mbs_mods_addr;
Dieser Eintrag MBS->mbs_mods_addr[0].name sollte doch auf einen String zeigen oder nicht?
Ich hoffe ihr könnt mir helfen und sage deshalb schon einmal danke.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

OsDevNewbie

  • Beiträge: 281
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #1 am: 26. June 2012, 17:11 »
Hallo,
ich habe noch eine andere Frage. Wenn ich GRUB anweise meinen Kernel als Modul zu laden, muss ich dann mit meinem Bootloader, der von GRUB gestartet wird, die Segmente noch an den richtigen Ort kopieren oder macht das GRUB schon und ich meinen Kernel als ganzes einfach verschieben?
Danke
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 26. June 2012, 18:49 »
GRUB interpretiert die Module nicht. Die werden einfach nur als Binärdatei in den Speicher geladen, da spielt kein ELF-Loader oder ähnliches mit. Das muss dein Loader also selbst machen.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen