| Zeile 1: | Zeile 1: | ||
| − | + | In diesem Tutorial werde ich beschreiben wie man einen in [[C]] programmierten [[Kernel]] mithilfe von [[Grub]] bootet. | |
| − | In diesem Tutorial werde ich beschreiben wie man einen in C programmierten Kernel mithilfe von Grub bootet. | + | == Hinweis für Windowsianer == |
| − | Ich werde hier beschreiben, wie ich es unter Linux mache. Unter Windows geht es auch, aber du musst sicherstellen, dass du ELF als Binärformat benutzt - das heißt, du solltest dir erst den Artikel [[Crosscompiler für Windows]] durchlesen und eine entsprechende Entwicklungsumgebung aufsetzen. | + | Ich werde hier beschreiben, wie ich es unter [[Linux]] mache. Unter [[Windows]] geht es auch, aber du musst sicherstellen, dass du ELF als Binärformat benutzt - das heißt, du solltest dir erst den Artikel [[Crosscompiler für Windows]] durchlesen und eine entsprechende Entwicklungsumgebung aufsetzen. |
== Kernel == | == Kernel == | ||
| − | Der eigentliche Kernel soll ja in C programmiert sein. Ein Teil des | + | Der eigentliche Kernel soll ja in [[C]] programmiert sein. Ein Teil des [[Kernel]]s muss aber immernoch in [[Assembler]] sein. |
=== Kernel - C === | === Kernel - C === | ||
| − | Als erstes kannst du dir einen kleinen Test-Kernel ausdenken, oder einfach den hier benutzen: | + | Als erstes kannst du dir einen kleinen Test-[[Kernel]] ausdenken, oder einfach den hier benutzen: |
<c> | <c> | ||
int main() { | int main() { | ||
| Zeile 67: | Zeile 67: | ||
== Zusammenbauen == | == Zusammenbauen == | ||
| − | 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. | + | 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 Grub und unseren Kernel draufladen. | + | 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 Dateisysteme benutzt werden, z.B FAT, man muss nur drauf achten, dass Grub dieses Dateisystem unterstützt. | + | Wir erstellen uns erstmal ein Floppy-Image und formatieren es mit [[ext2]]. Es können auch andere [[Dateisysteme]] 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: | ||
| Zeile 138: | Zeile 138: | ||
$ cp kernel.bin floppy/ | $ cp kernel.bin floppy/ | ||
| − | Grub muss auch noch drauf. Hierzu legen wir einen Ordner namens ''grub'' auf der Diskette an und kopieren ''stage1'' und ''stage2'' aus ''/boot/grub'' auf die Diskette. | + | [[Grub]] muss auch noch drauf. Hierzu legen wir einen Ordner namens ''grub'' auf der Diskette an und kopieren ''stage1'' und ''stage2'' aus ''/boot/grub'' auf die Diskette. |
$ mkdir floppy/grub | $ mkdir floppy/grub | ||
$ cp /boot/grub/stage1 floppy/grub | $ cp /boot/grub/stage1 floppy/grub | ||
| Zeile 181: | Zeile 181: | ||
* [[Grub auf CD]] | * [[Grub auf CD]] | ||
| − | [[ | + | [[Kategorie:Tutorials]] |