Hallo,
ich bin gerade dabei mir ein eigenes Dateiformat zu überlegen, dass dann mein Kernel unterstützen soll.
Ich interpretiere das mal so das Du einen Loader hast (außerhalb vom Kernel) der die Programme die als ELF vorliegen mit den benötigten Librarys (auch ELF) zusammenlinkt und daraus ein möglichst simples Format generiert um das dem Kernel zu geben (der daraus einen neuen Prozess erstellt). Ich vermute mal Dein Ziel ist es im Kernel nur einen möglichst simplen Loader zu haben der z.B. keine externen Abhängigkeiten mehr auflösen können soll.
Das ist eine gute Idee aber ich würde trotzdem zu ELF raten. Dein Kernel muss ja nicht den vollen Funktionsumfang von ELF unterstützen, z.B. keine Relokations, und könnte zu komplexe ELF-Dateien einfach ablehnen. Der Vorteil ist das Du ein gebräuchliches Format hast das mit üblichen (bekannt funktionsfähigen) Tools analysierbar ist. Wenn Du Dich bei ELF auf das absolut notwendigste beschränkst sollte der Loader im Kernel auch ziemlich simpel ausfallen.
Wenn meine Vermutung daneben liegt dann ignoriere einfach mein geschreibsel.
Darauf sollte es später mal hinaus laufen, wenn es an sich gut funktioniert.
Dadurch ist mein Kernel dann halt in der Lage jedes erdnkliche Dateiformat zu unterstützen, solange ein entsprechended Übersetzer vorhanden ist.
Wieso sollte ich da ein einfaches ELF nehmen? Reicht es nicht, das ganze Ding einfach durch den Übersetzer zu jagen?
Es sollte mal so werden, dass es an sich alles schon im RAM liegt, der Kernel sich die entsprechenden physischen Seiten raus sucht und in den neuen Kontext mappt und der Übersetzer bekommt dann ein Ergebnis, ob alles geklappt hat.
Der Übersetzer muss sich dann selbst um die Entsorgung der unbenötigten Dinge kümmern.
Da reicht doch an sich einfach etwas, dass die ganzen benötigten Sektionen unterstützt, oder?
Ist ELF da nicht ein Overkill?