Lowlevel
Lowlevel => OS-Design => Thema gestartet von: rizor am 29. September 2009, 20:11
-
Nabend zusammen,
ich habe mir überlegt, dass ich den Kernel nicht nur auf Multiboot-Bootloader optimieren möchte.
Habe mir dafür mal überlegt, was ich da alles beachten muss.
1. Speicher für die Hardware beachten
2. Speicher durch geladenen Kernel beachten
3. Wichtige Module mit in den Kernel linken. z.B. FS-Treiber
Auf was muss ich sonst noch so achten?
Gibt es eine Liste, die angibt welche Speicherbereiche reserviert werden müssen?
Danke.
Gruß
rizor
-
Die Speicherbereiche (also das, was dir GRUB als Memory Map übergibt) bekommst du vom BIOS, int 15h, ax=e820h. Wie groß der Kernel ist, kriegst du wie gehabt durch Symbole am Anfang und am Ende des Kernels hin, die durch ein Linkerskript eingefügt werden.
-
Was genau steht denn in eax, wenn ich int 15h aufrufe?
Das geht aber nur, wenn ich im realmode bin, oder?
-
Das BIOS stellt Real-Mode-Funktionen bereit, ja. Deswegen hat man ja normal Bootloader, die das Zeug für einen machen. Wenn du es von Hand machen willst, such halt mal im Netz nach e820, da sollte das Vorgehen beschrieben sein.
-
Siehe auch: http://wiki.osdev.org/Detecting_Memory_%28x86%29#Getting_an_E820_Memory_Map
Der Code hat mir bei Nuke sehr gut weitergeholfen (zumindest, bevor ich GRUB benutzt habe ^^).
-
Der Code hat mir bei Nuke sehr gut weitergeholfen (zumindest, bevor ich GRUB benutzt habe ^^).
Und damit auf die gute Seite der Macht gewechselt bist ;)