C-Kernel mit GRUB — Änderungen 4258 → 4262

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 ==
 
== Hinweis für Windowsianer ==
  
Zeile 42: Zeile 42:
  
 
FLAGS    equ 0
 
FLAGS    equ 0
−
MAGIC    equ 0x1BADB002      ; Magicnumber - Erkennungsmerkmal für Grub
+
MAGIC    equ 0x1BADB002      ; Magicnumber - Erkennungsmerkmal für GRUB
 
CHECKSUM equ -(MAGIC + FLAGS) ; Checksum
 
CHECKSUM equ -(MAGIC + FLAGS) ; Checksum
  
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 [[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.
+
* 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 ==
Zeile 120: Zeile 120:
 
Wenn man später mehr Dateien hat, können diese natürlich auch dazugelinkt werden. Man sollte den fertigen Kernel jetzt in einer Datei namens ''kernel.bin'' haben.
 
Wenn man später mehr Dateien hat, können diese natürlich auch dazugelinkt werden. Man sollte den fertigen Kernel jetzt in einer Datei namens ''kernel.bin'' haben.
  
−
== 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
 
  $ cp /boot/grub/stage2 floppy/grub
 
  $ cp /boot/grub/stage2 floppy/grub
  
−
Wir brauchen natürlich noch eine Grub-Konfigurationsdatei. Diese sollte folgendermaßen aussehen:
+
Wir brauchen natürlich noch eine GRUB-Konfigurationsdatei. Diese sollte folgendermaßen aussehen:
 
  default 0
 
  default 0
 
  timeout 10
 
  timeout 10
Zeile 154: Zeile 154:
 
Jetzt können wir das Floppy-Image schon wieder unmounten
 
Jetzt können wir das Floppy-Image schon wieder unmounten
 
  $ umount floppy/
 
  $ umount floppy/
−
aber Grub muss noch in den Bootsektor
+
aber GRUB muss noch in den Bootsektor
 
  $ /usr/sbin/grub
 
  $ /usr/sbin/grub
 
Und dann folgendes eingeben:
 
Und dann folgendes eingeben:
Zeile 162: Zeile 162:
 
  quit
 
  quit
  
−
Fertig ist unser Grub-Image! Man kann es jetzt noch mit
+
Fertig ist unser GRUB-Image! Man kann es jetzt noch mit
 
  $ dd if=floppy.img of=/dev/fd0
 
  $ dd if=floppy.img of=/dev/fd0
 
auf eine Floppydisk kopieren und damit booten. Wenn alles klappt seht ihr "Hello World" auf dem Bildschirm.
 
auf eine Floppydisk kopieren und damit booten. Wenn alles klappt seht ihr "Hello World" auf dem Bildschirm.
Zeile 178: Zeile 178:
 
* [[GRUB-Image erstellen]]
 
* [[GRUB-Image erstellen]]
 
* [[Multiboot]]
 
* [[Multiboot]]
−
* [[Grub]]
+
* [[GRUB]]
−
* [[Grub auf CD]]
+
* [[GRUB auf CD]]
  
 
[[Kategorie:Tutorials]]
 
[[Kategorie:Tutorials]]