möglichst minimaler Gentookernel

NemesisFS

Lt. Commander
Registriert
Sep. 2008
Beiträge
1.294
Hi,
ich habe es inzwischen soweit gebracht, gentoo mit meinem selbstgebackenen kernel zum laufen zu bekommen =). Allerdings habe ich dabei vermtl. eine Reihe von Optionen aktiviert, die ich garnicht brauche. Da ich nun ein wenig besser Bescheid weiß, würde ich gerne nochmal "von vorne" anfangen, dh. menuconfig auf den standard zu reseten, weiß aber nicht wie.

Außerdem soll mein Kernel möglichst minimal sein, dh nur die Hardware meines Laptops unterstützen sowie Netzwerktechnisch, das, was am üblichsten ist. In der Standard menuconfig Konfiguration waren jedoch schon sehr viele Optionen aktiviert, von denen ich mir teils nicht sicher bin, ob die wirklich sein müssen... Wie komme ich an einen möglichst minimalen Kernel? Gibt es evtl irgendwo eine Dokumentation, wo bei jeder Option ein kurzer Text steht, was diese Option bewirkt? Habe zwar schon gesucht, bin aber nicht fündig geworden... Als Kernel verwende ich atm. 2.6.39-r3

gruß nemesis
 
Im Menü selber gibts Hilfen zu JEDER Option (Englisch).
Was genau du brauchst, musst du aber schon selber wissen :) Schau dir einfach mal die ganzen Dokus an und google nach einzelnen Einstellungen.
So hab ich auch angefangen...
 
Kernel kleiner machen macht sinn wenn dus auf nem smartphone, ganz altem httpc oder sonstwas schwachem laufen lassen willst, auf nem rechner unseres jahrtausends machts kaum nen spürbaren Unterschied.
die paar optionen die du vll zuviel drin hast tun nich weh, das meiste wird heute eh als modul geladen und zwar kompilliert, aber eben nich aufgerufen.

Silent hat recht, du musst wissen was minimal ist für dich, die arbeit nimmt dir niemand ab, da es nur ums tüfteln gehen kann/sollte ist der WEg das Ziel:D
 
NemesisFS schrieb:
Da ich nun ein wenig besser Bescheid weiß, würde ich gerne nochmal "von vorne" anfangen, dh. menuconfig auf den standard zu reseten, weiß aber nicht wie.
Doku lesen? im README steht:

CONFIGURING the kernel:
...
"make defconfig" Create a ./.config file by using the default
symbol values from either arch/$ARCH/defconfig
or arch/$ARCH/configs/${PLATFORM}_defconfig,
depending on the architecture.


NemesisFS schrieb:
Außerdem soll mein Kernel möglichst minimal sein, dh nur die Hardware meines Laptops unterstützen sowie Netzwerktechnisch, das, was am üblichsten ist. In der Standard menuconfig Konfiguration waren jedoch schon sehr viele Optionen aktiviert, von denen ich mir teils nicht sicher bin, ob die wirklich sein müssen...

An gleicher Stelle wie oben genannt steht auch:

"make allnoconfig" Create a ./.config file by setting symbol
values to 'n' as much as possible.

Das nimmst du als Startpunkt. Danach "make menuconfig" und aktivieren was du haben möchtest.
 
Zuletzt bearbeitet:
Nimm halt genkernel. Das baut dir einen Minimalkernel mit allen Modulen und es werden beim Booten nur die Module geladen, die du auch brauchst. Problem gelöst.
 
Nimm den Standardkernel. Es gibt dir keine Geschwindigkeitsvorteile wenn du einen Minimalkernel erstellst.
 
Gibt es bei Gentoo überhaupt "Standardkernels"? So weit ich weiß nicht.
Es gibt genkernel und der macht im Grunde das, was OP will.
 
Also man kann ein bisschen Performance gewinnen mit einem nicht modularen Kernel. Ist aber eigentlich für aktuellere CPUs kein Ding mehr ab Pentium II. Bei modularen Kerneln wird eh nur das geladen was benötigt wird. Soweit ich weiß brauch man da zwangsweise nur das ramfs.
 
Danke für die vielen Antworten, hatte das help bei makeconfig mal in nem Menü verwendet, da kam nur allgemeines zu makeconfig raus, daher dachte ich, es würde das immer tun. Der Kernel läuft, alles super =)
 
@Kartoffel200: Ob ein Modul statisch oder dynamisch in den Kernel integriert ist macht bei der Performance keinen Unterschied, da die Aufrufe die gleichen sind. Einen Unterschied gibt es nur wenn du beim Kompilieren bestimmte Kernel Features entfernst. Aber auch das hält sich sehr in Grenzen, da der Kernel sowieso nur einen sehr geringen Teil der CPU-last produziert.
Wirklich Sinn macht das eigentlich nur für Spezialfälle oder embedded-Systeme etc.
 
Geht bei minimalen Kerneln nicht nur ums kleiner sein. Hauptgrund für die Minimierung abseits des embedded Bereichs ist, dass nicht eingebaute Funktionalität auch keine Fehler und Lücken bieten kann.
 
Es geht im prinzip schon ums kleiner machen.
Der Kernel wird in den Ram geladen, je kleiner dieser, desto weniger RAM Auslastung.
Und das ist wirklich ein unterschied (genkernel und customkernel)!
Klar machts nur auf Systemen unter 1 Gig ram Sinn.
 
Der Unterschied zwischen 2 und 3MB Kernels.. das macht höchstens nen Unterschied bei 32MB RAM oder ähnlichem. Die Größe wird ganz gerne stark überschätzt. Der Windowskernel ist weit mehr als 10x so groß.
 
Der Windowskernel ist weit mehr als 10x so groß.
Code:
23.06.2011  07:43         5.561.216 ntoskrnl.exe
(Windows 7 x64; Der 32bit Kernel ist sicher etwas kleiner.)
Bisschen verschätzt, oder?
 
Windows ist auch sehr modular gebaut. Eigentlich ist es auch mit das portabelste System welches es gibt. Der Kernel ist aufgrund der hohen Modularität auch recht klein und hat sich nicht allzu groß verändert in den letzten Jahrzehnten. Das drum rum ist aber arg gewachsen.
____________________________________________________

Genrell kann man ohne ramdisk bei boot usw ein bisschen Zeit und Platz sparen, dafür bekommt man ein gefriggel was keinen Spaß macht.
 
Mal ne Frage, warum lassen die Progammierer eigentlich so gerne Buchstaben weg? NTOSKernel wäre doch auch gegangen statt ntoskrnl :D
 
Hat vermutlich historische Gründe. In grauer Vorzeit konnte man NT noch auf FAT16 Partitionen installieren. Und das Dateisystem unterstützt nur Dateinamen mit 8 Zeichen und 3 Zeichen Endung.
http://en.wikipedia.org/wiki/8.3

€: Wollte noch nachwerfen, dass die ntoskrnl.exe nicht nur den Kernel enthält, sondern auch die "Executive" und das GDI. Der eigentliche Kernel ist also wahrscheinlich nochmal deutlich kleiner als die Datei.
 
Zuletzt bearbeitet:
asdfman schrieb:
Code:
23.06.2011  07:43         5.561.216 ntoskrnl.exe
(Windows 7 x64; Der 32bit Kernel ist sicher etwas kleiner.)
Bisschen verschätzt, oder?

Hahahahahaha, der Witz war gut! ntoskrnl.exe ist nur ein Teil des Kernels. Der Linuxkernel umfasst auch Gerätetreiber und diverse andere Dinge. Die komme hier bei Windows noch dazu. Genauso wie HAL! Lass dir halt mal ausgeben welche Kernelmodule aktiv sind. Dann wird es dich nämlich gleich vom Hocker haun!

Das entscheidende Kriterium auch gar nicht die Größe der Binaries, sondern der reale Speicherverbrauch wenn die mal geladen sind.

GDI ist außerdem keineswegs in ntoskrnl.exe enthalten, sondern in win32k.sys!
Ergänzung ()

Kartoffel200 schrieb:
Eigentlich ist es auch mit das portabelste System welches es gibt. .

Du träumst.. Windows wird für Intel IA-32, X64 und Itanium angeboten. Linux ist auf _dutzenden_ Architekturen bereits lauffähig!
 
Zuletzt bearbeitet:
Zurück
Oben