Ein gewöhnlicher stabiler 3 * Kernel ist jetzt ungefähr 70 MB groß. Aber es gibt kleine Linux-Distributionen von 30-10 MB, bei denen Software und andere Dinge aus dem Kasten laufen.
Wie kann der Linux-Kernel in diesen Distributionen so klein sein? Können nur nicht benötigte Module und Treiber reduziert werden? Was wird noch getan, um die Kernelgröße zu reduzieren?
Antworten:
Ja. Wenn Sie sie entfernen (kompilieren / erstellen Sie nur die Module, die Sie benötigen), komprimieren Sie den Kernel (optimieren Sie die Größe) ... das führt zu einem so kleinen Kernel. Sie können sogar noch kleinere für das Zielsystem erstellen. Wie ich meinen PC kenne, kenne ich meine Sachen. Also erstelle ich, was ich brauche. Wie meine eigenen SATA-Treiber, Treiber für USB usw. Sonst nichts. Keine Webcam, keine alten IDE-Laufwerke, nichts.
Außerdem: Die größeren, denen Sie begegnen, sind der GANZE Kernel (den Sie nie brauchen). Sogar die Desktop-Versionen enthalten (meistens als Module) VIELE nicht benötigte Dinge. Aber Neulinge erwarten, dass jede Art von Hardware, die sie einstecken, einfach funktioniert.
(Beachten Sie, dass die Module erst geladen werden, wenn sie benötigt werden. Es gibt 3 Zustände:
[ ]
- Werden nicht kompiliert, werden nicht Teil Ihres Kernels.[M]
- Werden als Modul kompiliert.(Sie können es modprobe , oder Ihr System lädt es automatisch, wenn es benötigt wird.
Abhängig vom System, Benutzerland.)
[X]
- Es wird in den Kernel kompiliert UND ist immer vorhanden.Distros mit kleinem Kernel:
quelle
Frühe Linux-Distributionen wie Toms Root-Boot , MuLinux , Diet-Router , das inzwischen aufgelöste LOAF und viele andere haben alle ein funktionierendes Linux-System auf eine oder zwei 1,44-MB-Disketten installiert.
Der Linux-Kernel ist gewachsen, aber vergessen Sie nicht, dass er modular aufgebaut ist. Die Kernel-Module werden nach Bedarf geladen. Somit ist es weiterhin möglich, eine Linux-Distribution mit einem sehr geringen Platzbedarf zu erstellen.
Siehe: Handbuch zur Optimierung der Kernelgröße - eLinux.org
Wenn Sie Linux_tiny.pdf lesen, sehen Sie dies
quelle
Die Standardkernelkonfiguration ist so konfiguriert, dass so viele Hardware wie möglich unterstützt wird. Ein nicht entpackter Kernel mit Standardkonfiguration ergab eine Größe von 1897996 KB (einschließlich Kernel + Module). Beim Entfernen vieler unnötiger Treiber und Optionen (warum sollte ich ein HP-Modul benötigen, wenn ich ein Clevo-Notebook besitze) ergab sich eine Größe von 892892 KB, was einer Größenreduzierung von 53% gegenüber dem Standardkernel entspricht.
Fügen Sie bei der Installation der Kernel-Module die
INSTALL_MOD_STRIP=1
Option an. Dadurch werden alle Debugging-Symbole entfernt und die Größe für mich um 92% reduziert (von 892892 kB auf 69356 kB). Beachten Sie, dass dies nur zu installierende Module und nicht den Kernel (vmlinuz) selbst betrifft:Aus der Dokumentation / kbuild / kbuild.txt :
quelle
Die meisten großen Distributionen konfigurieren ihren Kernel mit maximaler Hardwareunterstützung, sodass er mit den meisten Computern und allem, was Sie später anschließen, sofort funktioniert. Sie verwenden auch ein initrd-System, das in den meisten Fällen nicht benötigt wird. Es gibt auch Optionen in der Kernelkonfiguration, die den Erstellungsprozess für die Größe optimieren, und es kann auch eine bessere (wenn auch langsamere) Komprimierungsmethode ausgewählt werden. Wenn Sie sich die Größe des Kernel-Quellcodes ansehen, bedenken Sie, dass dieser auch Unterstützung für mehrere Architekturen jenseits von x86 / amd64, Netzwerkprotokollen, Dateisystemen und anderen Funktionen bietet, die Sie wahrscheinlich nie verwenden werden und können deaktiviert werden.
quelle
Es ist ganz einfach, ein minimales System braucht nur einen Bootloader + Kernel, obwohl es fast nutzlos ist. Die meisten Befehle, die täglich verwendet werden, sind optionale Binärbefehle für das System, z. B. sh, ls usw. Wenn Sie an Interna interessiert sind, bietet Linux From Scratch! ist ein guter Ausgangspunkt.
quelle