Wozu ist Kernelneukompilierung gut?



  • ist es eigtl. merklich schneller alles was man braucht fest einzukompilieren im vergleich zu Modulen?



  • Ist ein .a schneller als eine .so? Ein Unterschied besteht wenn ueberhaupt beim Laden des Moduls, zur Laufzeit sind beide identisch.



  • Die Auslagerung der Kernelfunktionen in Module bringt zwar ein ganz kleines bisschen Performance-Verlust, aber der ist praktisch nicht messbar, so dass man generell dazu übergeht, keine monolithischen Kernel mehr zu entwickeln. (Siehe z.B. GNU/Hurd)

    -elvis



  • elve schrieb:

    Die Auslagerung der Kernelfunktionen in Module bringt zwar ein ganz kleines bisschen Performance-Verlust, aber der ist praktisch nicht messbar, so dass man generell dazu übergeht, keine monolithischen Kernel mehr zu entwickeln. (Siehe z.B. GNU/Hurd)

    Ueber Hurd koennen wir reden, wenn es draussen ist. Die beiden "grossen" (Linux und Windows) sind beides monolithische Kernel, bzw. bewegen sich immer mehr dahin (siehe Integration des GDI-Systems in den Kernel in Windows). Ich kann da ehrlich gesagt keine Bewegung weg von einem monolithischen Kernel entdecken, ganz im Gegenteil!
    Ausserdem: Der Vergleich zwischen Linux-Modulen und Hurd-Tasks ist ja wohl an den Haaren herbeigezogen, oder?



  • sind beides monolithische Kernel, bzw. bewegen sich immer mehr dahin

    Seh ich aber nicht so. Die Tatsache, dass man Module zur Laufzeit laden kann, wurde doch erst eingeführt (2.0 oder so!?). Warum sollte sich Linux jetzt wieder in diese Richtung zurück bewegen?



  • @SG1
    der NT Kernel ist doch AFAIK so ein halb-modularer Kernel und das neueste (naja, die Basis ist deutlich älter ;)) populäre OS MacOSX ist zB. kein monolithisches OS.



  • CarstenJ schrieb:

    sind beides monolithische Kernel, bzw. bewegen sich immer mehr dahin

    Seh ich aber nicht so. Die Tatsache, dass man Module zur Laufzeit laden kann, wurde doch erst eingeführt (2.0 oder so!?).

    Ja, stimmt. Aber das aendert absolut nichts daran, dass Linux monolithisch ist, schliesslich hindert die Module nichts daran, in den Kernel selber reinzuschreiben.



  • kingruedi schrieb:

    @SG1
    der NT Kernel ist doch AFAIK so ein halb-modularer Kernel

    ack. Deshalb ja "bewegt sich dahin".

    und das neueste (naja, die Basis ist deutlich älter ;)) populäre OS MacOSX ist zB. kein monolithisches OS.

    Ich dachte, das basiert irgendwie auf BSD? Und das ist doch monolithisch, oder?



  • das ist nur die halbe Wahrheit. MacOS X basiert, ganz nach NextSTEP/OpenSTEP Tradition, auf einem BSD Kernel, der auf einem Mach Kernel basiert (Mach wird auch von Hurd benutzt).



  • gut zu wissen.



  • Bissel Lesestoff

    Mach Micro Kernel
    http://c2.com/cgi/wiki?MachMicrokernel
    "The original Mach Microkernel was used to run the BSD kernel as a server task that provided UNIX system call semantics."

    Microkernel
    http://c2.com/cgi/wiki?MicroKernel
    "The Windows NT Kernel is also not actually a microkernel, although it was _marketed_ as a microkernel when microkernels were fashionable. For example, the NT executive (aka the kernel) is implemented above a hardware abstraction layer. In a true microkernel OS, the kernel itself is the hardware abstraction layer. And now, since the graphics and GUI components have been moved into kernel space, NT is even less of a microkernel OS."

    Mac OS X
    http://developer.apple.com/macosx/architecture/index.html
    http://c2.com/cgi/wiki?MacOsx
    "Essentially, it's a Mach 3.0 Microkernel wrapped in a BSD kernel with a bunch of GNU/Linux hacks wrapped in the logical evolution of NextStep wrapped in a pure PDF display layer. (whew)"



  • CarstenJ schrieb:

    sind beides monolithische Kernel, bzw. bewegen sich immer mehr dahin

    Seh ich aber nicht so. Die Tatsache, dass man Module zur Laufzeit laden kann, wurde doch erst eingeführt (2.0 oder so!?). Warum sollte sich Linux jetzt wieder in diese Richtung zurück bewegen?

    Allein der Umstand, dass man bei einem Kernel Teile als "Module" kompilieren und zu Laufzeit hinzufügen/entfernen kann macht diesen Kernel noch lange nicht zu einem Microkernel.

    What is a µ-kernel?
    http://os.inf.tu-dresden.de/fiasco/faq.html#0020

    Das GNU Projekt verfügt über zwei Kernel:
    a) einen Microkernel (GNU/Hurd): http://hurd.gnu.org/
    b) einen Monolithischen Kernel (GNU/Linux): http://www.kernel.org/

    Das L4 bzw. L4KA Team um Jochen Liedtke († 2001) hatte es in Vergangenheit auch schon fertig geschafft, den Linux Kernel als eigenständigen Prozess auf einem L4 µ-Kernel laufen zu lassen.



  • Descartes schrieb:

    Das GNU Projekt verfügt über zwei Kernel:
    a) einen Microkernel (GNU/Hurd): http://hurd.gnu.org/
    b) einen Monolithischen Kernel (GNU/Linux): http://www.kernel.org/

    Ich glaub, die Aussage wird weder RMS noch LT gefallen 😃



  • Descartes schrieb:

    Allein der Umstand, dass man bei einem Kernel Teile als "Module" kompilieren und zu Laufzeit hinzufügen/entfernen kann macht diesen Kernel noch lange nicht zu einem Microkernel.

    Nein, das hast du recht, aber es bewegt sich doch eher in die Richtung. Das Auslagern der Module ist zwar nur ein Aspekt, aber es hebt sich dann doch von den typischen monolithistischen Merkmalen ab.



  • Der Senf den ich noch hinzufügen wollte haben bereits andere hier reingeschmiert 😃
    Danke fürs Ersparen der Tipparbeit 😉

    @Descartes: Die Rede war ja nicht unbedingt von einem Microkernel, sondern einfach die Auslagerung von Funktionen in "eigenständige" Module/Tasks.

    -elvis



  • elve schrieb:

    @Descartes: Die Rede war ja nicht unbedingt von einem Microkernel,

    Du selber hast doch von einem monolithischen Kernel gesprochen, und das ist nunmal das Gegenteil von einem Microkernel.



  • OK, meine Dummheit, sorry.

    -elvis



  • Nur um auf die ursprüngliche Frage zurückzukommen ;):

    Ein selbstkompillierter Kernel kann Vorteile im Punkto Sicherheit bringen.
    Wie bereits erwähnt, ist der Standardkernel der versch. Distributionen in der Lage, Module nachzuladen, um flexibler auf die versch. Hardware des Endusers reagieren zu können.
    Nun gibt es aber Exploits, welche das System korrumpieren, in dem sie korrumpierte Module nachladen.
    Wenn man aber einen auf seine Hardware angepassten Kernel nimmt, der keine Module nachladen kann (Die Funktion wird deaktiviert, da nicht benötigt), greifen o.g. Exploits nicht mehr.
    Ein festkompillierter Kernel wird u.a. für Internet-Rechner empfohlen.



  • nee, module kann man nur als root laden



  • Ja, eigentlich. Gab aber "letztens" 'nen lustigen Bug, dass man unter Umstaenden auch als User Module laden konnte. IIRC, jedenfalls.


Anmelden zum Antworten