Wozu ist Kernelneukompilierung gut?



  • 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.



  • Es gibt recht viele Exploits, die es dem Angreifer ermöglichen, seinem Code als Root-Prozess zum laufen zu bringen. Dementsprechend gibt es aus jede Menge ML, die sich gerade mit solchen Themen auseinandersetzen.
    Ein selbstkompilierter Kernel kann etwas bringen weil:
    - die Standardkernel in den Distris meistens Komponenten/Module enthalten, die man bei eigener Hardware-Komponenten-Auswahl nicht braucht -> kleinerer Kernel
    - Neuere GCCs den Code besser optimmieren können -> schnellerer Kernel
    - Der GCC den Code besser auf die lokalen Gegebenheiten optimieren kann -> schnellerer Kernel
    - Man neuere Optionen im Kernel haben möchte (z.B. Kernelthreads in der 2.6er Fassung etc.) -> Fuchsschwanzkernel
    - Bugs in den neuen Sourcen gefixt wurden -> sicherer Kernel
    - Neue Hardware manchmal neuere Optionen im Kernel benötigt und man diese nicht immer per Modul nachladen möchte -> Fuchsschwanzkernel

    Dann gibt es sicherlich noch etliche weitere Gründe, die mir gerade nicht einfallen.

    MfG Kimmi


Anmelden zum Antworten