Autor Thema: Mit GRUB Module laden lassen  (Gelesen 4526 mal)

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« am: 11. January 2006, 18:59 »
Hi Leute,

Kann man mit GRUB sich Dateien an eine bestimmte Adresse laden lassen?
Also die Situation sieht folgendermaßen aus...
Ich lade mit GRUB meinen OS-Loader an eine bestimmte
Adresse und möchte zusätzlich noch ein Treiberfile an einer
anderen Adresse geladen haben.

Dann möchte ich, dass zu dem OS-Loader gesprungen wird
und dass das Treiberfile im Speicher ist, sodass ich es als
Prozess laden kann.

Ist dies mit GRUB realisierbar??

Danke schonmal für Hilfe

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 11. January 2006, 19:01 »
Nein, Module werden in GRUB immer direkt über dem Kernel geladen, soweit ich weiß.

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 11. January 2006, 19:26 »
soweit ich weiß gibt es doch, wenn mein die menu.lst editiert
so'ne anweisung die heißt module <dateiname>... was bewirkt
die denn?? Außerdem hab ich irgendwo hier im Forum gelesen,
dass das möglich ist, es wurde nur nich beschrieben wie...

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 11. January 2006, 20:13 »
hi,

mit "module <dateiname>" kannste imho eine Datei nur hinter den Kernel (Wenn nötig mit 4kb align) kopieren lassen. Ich wüsste nicht das man da ne Adresse angeben könnte. Aber über die Multiboot Information Structure wird dem Kernel/Loader ja eine Liste aller Module (Name, Größe, Speicheradresse) geliefert. Was will man mehr :?:
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 11. January 2006, 20:16 »
Ja, mit der Modul Anweisung kann man ein Modul laden lassen, die Position des Modules steht dann in der MB Info Struktur. Allerdings kann man die Addresse nicht selber angeben, Module werden immer hinter den Kernel geladen. Module können auch gegzippt sein, dann werden sie automatisch entpackt.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #5 am: 11. January 2006, 20:29 »
Zitat von: SSJ7Gohan
Module können auch gegzippt sein, dann werden sie automatisch entpackt.

Weisst du zufällig welche Algos unterstützt werden bzw. woran Grub erkennt das es eine gepackte Datei ist (Dateiextension, FourCC) :?:
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 11. January 2006, 20:30 »
aah... interressant... gut, gut danke...
Aber das passt mir nich, dass die hinter den
Kernel geladen werden *hrmpf*, weil das
meine ganze Speicherplanung durcheinander
bringt... Muss ich wohl doch n FDC Treiber in
den Loader integrieren *mist*

Andererseits, wenn ich n 4KB align damit hinkrieg...
Könnte ich das doch n bissl umbauen...

Wie mach ich das denn mit dem 4KB align??
Mit dem NASM geht das doch soweit ich weiß
nich, oder?

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #7 am: 11. January 2006, 20:34 »
in der Multiboot header kann man als Flag ein 4kb align angeben. Einfach mal in den Multiboot specs unter Multiboot header (also dieses ding das statisch am Anfang des Kernels is) gucken.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 11. January 2006, 20:55 »
Ja ich weiß schon, was ein multibootheader ist, ... :twisted:  :wink:
und wo in der multiboot_info struct steht dann wo
sich das modul bzw. die module befinden?


/* The Multiboot information.  */
typedef struct multiboot_info
{
   unsigned long flags;
   unsigned long mem_lower;
   unsigned long mem_upper;
   unsigned long boot_device;
   unsigned long cmdline;
   unsigned long mods_count;
   unsigned long mods_addr;
   union
   {
      aout_symbol_table_t aout_sym;
      elf_section_header_table_t elf_sec;
    } u;
    unsigned long mmap_length;
    unsigned long mmap_addr;
} multiboot_info_t;


Das isse doch, oder? Und wo steht das nun drin??[/code]

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 11. January 2006, 21:26 »
mods_count ist die Anzahl der Module und mods_addr ist ein Pointer auf ein Array von Strukturen, die Infos über das Modul enthalten. (Steht in der Multiboot Spezifikation, der Beispielkernel in der Spezifikation ist evt. auch ganz nützlich.)

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 11. January 2006, 21:30 »
ähm, du musst keinen treiber innen loader integrieren ^^ und speicherplanung musst net umwerfen. die dateien werden ja nur geladen, gibt ja keinen prozess kein garnix. von daher kannst die daten doch vorher einfach im ram herumschieben??
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

__OS_coder

  • Beiträge: 69
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 11. January 2006, 21:55 »
achja... stimmt... ich kopiere den ganzen kram einfach
an die geplante stelle... stimmt... danke... boar bin ich fertig  :D
okay... so mach ich es dann.. super danke... ;)

 

Einloggen