Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: DarkThing am 11. October 2005, 15:15
-
Ich plane meinen Kernel im ELF-Format zu speichern. Das heißt, ich brauche eine möglichst einfache Asm-Methode, mit der ich ein paar Infos über den File bekomme (vor allem 32bit/64bit) und ihn anschließend einfach ausführen kann (also Header, usw entfernen).
Wenn jemand passenden Code hat ist das natürlich okay, aber ein gutes Tutorial (also ein echtes Tut, keine Spezifikationen usw) wäre mir lieber ;)
-
Na ja, ich kann dir nur sagen das es mal nen Kernel zu einem System namens GazOS gab der in ELF war und der seinen eigenen Bootloader hatte ...
-
hi,
is eigentlich ganz einfach:
* Laden der ELF Header (an Dateioffset 0)
* Checken ob die ELF Header ok is:
* Die ID bytes prüfen (ID bytes 0-3 sollten 0x07, 'E', 'L', 'F' sein)
* Schauen obs für die richtige Architektur is (ID byte 4 = 1 für 32Bit)
* Schauen ob richtiges byte-encoding (für x86 LSB, sollte ID byte 5 = 1 sein)
* Schauen ob "Executeable" is im Feld "type" der Elf header
* Schauen ob für die richtige Maschine (Feld "machine" sollte für i386 = 3 sein)
* Schauen obs die richtige version der elf specification is (Feld version=1)
* Program Header laden
* Program Header Entries durchlaufen und die benötigte Speichermenge für die Segmente berechnen
* Speicher allozieren
* nochmal Program Header durchlaufen und diesmal die Segmente in den Speicher laden
Solltest dir trotzdem die Elf-Specification reinziehn.
Meine Erklärung gilt nur, wenn du dass Programm nicht vor dem ausführen gelinkt werden muss.
-
@Legend: Der Download auf der Website scheint nicht zu funktionieren, aber ich hab noch ne alte (?) Version auf meiner Festplatte gefunden - nur verwendet die kein ELF.
@bluecode: Thx! Hast du irgendwas, wo nochmal alle Offsets, möglichen Werte, usw. stehen?
-
@bluecode: Thx! Hast du irgendwas, wo nochmal alle Offsets, möglichen Werte, usw. stehen?
google: elf-spec. (http://google.de/search?q=ELF-Specification)
-
Ich hab jetzt dieses Doc gefunden: http://www.acm.uiuc.edu/sigops/rsrc/pfmt11.pdf
Sieht eigentlich ganz gut aus und es wird noch mal alles schön beschrieben, usw.