| 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: | ||
| − | {| | + | {| {{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: | ||
| − | {| | + | {| {{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 | ||
| − | {| | + | {| {{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. | ||
| − | {| | + | {| {{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: | ||
| − | {| | + | {| {{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. | ||
| − | {| | + | {| {{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. | ||
| − | {| | + | {| {{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: | ||
| − | {| | + | {| {{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: | ||
| − | {| | + | {| {{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: | ||
| − | {| | + | {| {{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] | ||