Lowlevel

Lowlevel => OS-Design => Thema gestartet von: rizor am 29. September 2009, 20:11

Titel: Booten ohne Multiboot-header
Beitrag 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
Titel: Re: Booten ohne Multiboot-header
Beitrag von: kevin am 29. September 2009, 20:23
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.
Titel: Re: Booten ohne Multiboot-header
Beitrag von: rizor am 29. September 2009, 20:33
Was genau steht denn in eax, wenn ich int 15h aufrufe?
Das geht aber nur, wenn ich im realmode bin, oder?
Titel: Re: Booten ohne Multiboot-header
Beitrag von: kevin am 29. September 2009, 20:51
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.
Titel: Re: Booten ohne Multiboot-header
Beitrag von: SHyx0rmZ am 30. September 2009, 19:54
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 ^^).
Titel: Re: Booten ohne Multiboot-header
Beitrag von: DerHartmut am 30. September 2009, 20:42
Zitat
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 ;)