| Zeile 5: | Zeile 5: | ||
== Kernel == | == Kernel == | ||
| − | Der eigentliche Kernel soll ja in | + | Der eigentliche Kernel soll ja in C programmiert sein. Ein Teil des Kernels muss aber immernoch in [[Assembler]] sein. |
=== Kernel - C === | === Kernel - C === | ||
| − | Als erstes kannst du dir einen kleinen Test- | + | Als erstes kannst du dir einen kleinen Test-Kernel ausdenken, oder einfach den hier benutzen: |
<c> | <c> | ||
int main() { | int main() { | ||
| Zeile 64: | Zeile 64: | ||
* Die Flags können geändert werden, am besten schaut man sich die [[Multiboot]]-Spezifikation an. | * Die Flags können geändert werden, am besten schaut man sich die [[Multiboot]]-Spezifikation an. | ||
* Den Stack kann man natürlich an eine beliebige Stelle setzen, aber an der 2MB-Grenze wird er uns nicht stören. | * Den Stack kann man natürlich an eine beliebige Stelle setzen, aber an der 2MB-Grenze wird er uns nicht stören. | ||
| − | * Es wird die Adresse der | + | * Es wird die Adresse der Multiboot-Structure nicht umsonst an den C-Kernel übergeben. Am besten liest man so ziemlich am Anfang des Kernels die Informationen aus ihr. In der Multiboot-Structure steht z.B wie viel Speicher der Rechner hat, oder welche Module von GRUB mitgeladen wurden. |
== Zusammenbauen == | == Zusammenbauen == | ||
| − | Nun müssen wir den | + | Nun müssen wir den Kernel "zusammenbauen". Dafür müssen wir den Assembler-Code assemblieren, den C-Code kompilieren und am Ende beides linken. |
=== Assemblieren === | === Assemblieren === | ||
| Zeile 121: | Zeile 121: | ||
== GRUB-Image erstellen == | == GRUB-Image erstellen == | ||
| − | Wir müssen jetzt natürlich noch ein Disketten-Image erstellen und dann | + | Wir müssen jetzt natürlich noch ein Disketten-Image erstellen und dann GRUB und unseren Kernel draufladen. |
=== Floppy-Image erstellen === | === Floppy-Image erstellen === | ||
| − | Wir erstellen uns erstmal ein Floppy-Image und formatieren es mit [[ext2]]. Es können auch andere [[ | + | Wir erstellen uns erstmal ein Floppy-Image und formatieren es mit [[ext2]]. Es können auch andere [[Dateisystem]] benutzt werden, z.B [[FAT]], man muss nur drauf achten, dass GRUB dieses Dateisystem unterstützt. |
Mit ''dd'' erzeugen wir ein 1,44MB großes Floppy-Image: | Mit ''dd'' erzeugen wir ein 1,44MB großes Floppy-Image: | ||