Multiboot — Änderungen 4650 → 5030

Zeile 3: Zeile 3:
 
== Ausgangsstatus ==
 
== Ausgangsstatus ==
 
Unmittelbar nachdem die Kontrolle von GRUB an den Kernel übergeben wurde, sind folgende Zustände festgesetzt:
 
Unmittelbar nachdem die Kontrolle von GRUB an den Kernel übergeben wurde, sind folgende Zustände festgesetzt:
−
{| border="1"
+
{| {{prettytable}}
 
| EAX      || Beinhaltet magicnumber 0x2BADB002
 
| EAX      || Beinhaltet magicnumber 0x2BADB002
 
|-
 
|-
Zeile 29: Zeile 29:
 
== Multiboot-Header ==
 
== Multiboot-Header ==
 
Der Multiboot-Header sollte in den ersten 8192 Bytes des OS-Images liegen. Der Multiboot-Header sieht folgendermaßen aus:
 
Der Multiboot-Header sollte in den ersten 8192 Bytes des OS-Images liegen. Der Multiboot-Header sieht folgendermaßen aus:
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Inhalt                          || Anwesend wenn mbh_flags[X] gesetzt
 
! Offset || Größe || Inhalt                          || Anwesend wenn mbh_flags[X] gesetzt
 
|-
 
|-
Zeile 62: Zeile 62:
 
=== mbh_flags ===
 
=== mbh_flags ===
 
Bits 0-15 sind Flags die umbedingt benötigt werden. Wenn der Bootloader eines dieser Flags nicht kennt, bricht er den Bootvorgang ab. Bits 16-31 sind optionale Flags. Es gibt die folgenden Flags
 
Bits 0-15 sind Flags die umbedingt benötigt werden. Wenn der Bootloader eines dieser Flags nicht kennt, bricht er den Bootvorgang ab. Bits 16-31 sind optionale Flags. Es gibt die folgenden Flags
−
{| border="1"
+
{| {{prettytable}}
 
! Bit || Auswirkung
 
! Bit || Auswirkung
 
|-
 
|-
Zeile 78: Zeile 78:
 
== Multiboot-Structure ==
 
== Multiboot-Structure ==
 
Die Multiboot-Structure beinhaltet Informationen, die vom Bootloader verher ausgelesen wurden. Die Adresse der Multiboot-Structure ist unmittelbar nach dem Starten des Kernels in ''EBX'' gespeichert.
 
Die Multiboot-Structure beinhaltet Informationen, die vom Bootloader verher ausgelesen wurden. Die Adresse der Multiboot-Structure ist unmittelbar nach dem Starten des Kernels in ''EBX'' gespeichert.
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Inhalt                                              || Anwesend wenn mbs_flags[X] gesetzt
 
! Offset || Größe || Inhalt                                              || Anwesend wenn mbs_flags[X] gesetzt
 
|-
 
|-
Zeile 144: Zeile 144:
 
=== mbs_mods_addr ===
 
=== mbs_mods_addr ===
 
Pointer auf die erste Modulstruktur. Eine Modulstruktur sieht folgendermaßen aus:
 
Pointer auf die erste Modulstruktur. Eine Modulstruktur sieht folgendermaßen aus:
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Name      || Beschreibung
 
! Offset || Größe || Name      || Beschreibung
 
|-
 
|-
Zeile 158: Zeile 158:
 
=== mbs_syms ===
 
=== mbs_syms ===
 
Wenn Bit 4 in [[#mbs_flags | mbs_flags]] gesetzt ist, liegt diese Struktur am Offset 0x1C und enthält Informationen zur Sektionstabelle einer a.out-Datei.
 
Wenn Bit 4 in [[#mbs_flags | mbs_flags]] gesetzt ist, liegt diese Struktur am Offset 0x1C und enthält Informationen zur Sektionstabelle einer a.out-Datei.
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Name    || Beschreibung
 
! Offset || Größe || Name    || Beschreibung
 
|-
 
|-
Zeile 171: Zeile 171:
  
 
Wenn Bit 5 in [[#mbs_flags | mbs_flags]] gesetzt ist, liegt diese Struktur am Offset 0x1C und enthält Informationen zur Sektionstabelle einer [[ELF]]-Datei.
 
Wenn Bit 5 in [[#mbs_flags | mbs_flags]] gesetzt ist, liegt diese Struktur am Offset 0x1C und enthält Informationen zur Sektionstabelle einer [[ELF]]-Datei.
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Name  || Beschreibung
 
! Offset || Größe || Name  || Beschreibung
 
|-
 
|-
Zeile 188: Zeile 188:
 
=== mbs_mmap_addr ===
 
=== mbs_mmap_addr ===
 
Pointer zur Memorymap. Ein Eintrag in der Memorymap sieht folgendermaßen aus:
 
Pointer zur Memorymap. Ein Eintrag in der Memorymap sieht folgendermaßen aus:
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe || Name    || Beschreibung
 
! Offset || Größe || Name    || Beschreibung
 
|-
 
|-
Zeile 205: Zeile 205:
 
=== mbs_drives_addr ===
 
=== mbs_drives_addr ===
 
Pointer zur ersten Drive-Struktur. Eine Drive-Struktur sieht folgendermaßen aus:
 
Pointer zur ersten Drive-Struktur. Eine Drive-Struktur sieht folgendermaßen aus:
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe    || Name            || Beschreibung
 
! Offset || Größe    || Name            || Beschreibung
 
|-
 
|-
Zeile 231: Zeile 231:
 
=== mbs_apm_table ===
 
=== mbs_apm_table ===
 
Pointer zur APM-Tabelle. Die APM-Tabelle sieht so aus:
 
Pointer zur APM-Tabelle. Die APM-Tabelle sieht so aus:
−
{| border="1"
+
{| {{prettytable}}
 
! Offset || Größe    || Name        || Beschreibung
 
! Offset || Größe    || Name        || Beschreibung
 
|-
 
|-
Zeile 256: Zeile 256:
 
* http://www.gnu.org/software/grub/manual/multiboot/multiboot.pdf
 
* http://www.gnu.org/software/grub/manual/multiboot/multiboot.pdf
 
* http://www.uruk.org/orig-grub/boot-proposal.html
 
* http://www.uruk.org/orig-grub/boot-proposal.html
 +
 +
[[Kategorie:Glossar]