Comment un noyau Linux peut-il être si petit?


56

Un noyau 3 * stable et ordinaire fait environ 70 mb maintenant. Mais il y a peu de distributions linux de 30-10 Mo avec des logiciels et autres choses qui ne fonctionnent pas.

Comment le noyau Linux peut-il être si petit dans ces distributions? Le fait de supprimer uniquement les modules et les pilotes inutiles peut-il réduire considérablement la taille? Que fait-on pour réduire la taille du noyau?


3
Une autre option consiste à utiliser des optimisations de taille lors de la compilation, mais je ne suis pas certain de l'impact que cela peut avoir.
AndrejaKo

5
« Linus appelle Linux 'pléthorique et énorme » theregister.co.uk/2009/09/22/linus_torvalds_linux_bloated_huge
Aki

1
@ AndrejaKo - Beaucoup. (Si vous optez pour une petite taille.)
Apache

19
70 MB correspond à la taille de la source. Un noyau standard compilé et compressé fait environ 2 Mo, des modules comme 10 Mo.
ott--

1
oui, en effet, son 3,6 Mo alors que initramfs est 21 Mo dans ma distribution.
smoking perplexe

Réponses:


37

Oui. Si vous les supprimez (compilez / créez uniquement les modules dont vous avez besoin), compressez le noyau (optimisez en fonction de la taille) ... vous obtiendrez un noyau de cette taille. Vous pouvez en créer des encore plus petites, pour un système ciblé. Comme je connais mon PC, je connais mes affaires. Donc, je vais juste compiler ce dont j'ai besoin. Comme mes propres pilotes SATA, pilotes pour USB, etc. Rien d’autre. Pas de webcam, pas de vieux lecteurs IDE, rien.

Aussi: Les plus gros que vous rencontrez sont le noyau WHOLE (qu'il n'est jamais nécessaire d'utiliser). Même les ordinateurs de bureau contiennent (la plupart du temps, sous forme de modules) BEAUCOUP de choses inutiles. Mais les débutants s'attendent à ce que tous les types de matériel auxquels ils se connectent fonctionnent.

(Notez que les modules ne seront pas chargés tant qu'ils ne seront pas utilisés. Il y a 3 états:
[ ]- Ne sera pas compilé, ne fera pas partie de votre noyau.
[M]- Sera compilé en tant que module.
(Vous pouvez le modifier , ou votre système le chargera automatiquement quand il le faudra. Cela
dépend du système, de l’utilisateur.)
[X]- Il sera compilé dans le noyau ET sera présent - toujours.

Distros avec petit noyau:


Juste un petit ajout - [X] signifie qu'il sera compilé dans le noyau, d'où la raison pour laquelle il est toujours chargé.
Lawrence

Les "débutants s'attendent" à parler en tant que professionnel de l'informatique et vétéran de Linux depuis 20 ans ... Je m'attends à ce que les choses marchent aussi.
Cliff Armstrong

20

Les premières distributions Linux telles que Tom's Root-Boot , MuLinux , Diet-router , (le défunt LOAF ) et bien d’autres partaient à présent, toutes installaient un système Linux opérationnel sur une ou deux disquettes de 1,44 Mo.

Le noyau Linux a grandi mais n'oubliez pas qu'il est modulaire, les modules du noyau sont chargés selon vos besoins. Ainsi, il est toujours possible de produire une distribution Linux avec un très faible encombrement.

Voir: Guide de réglage de la taille du noyau - eLinux.org

Si vous lisez Linux_tiny.pdf, vous verrez ceci

  • Noyau historique 0.99pl15: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • Configuration de test 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K

11

La configuration du noyau par défaut est configurée pour prendre en charge autant de matériel que possible. Un noyau non dépouillé avec une configuration par défaut donnait une taille de 1897996 Ko (noyau + modules). En supprimant de nombreux pilotes et options inutiles (pourquoi aurais-je besoin d'un module HP si je possède un ordinateur portable Clevo), nous avons obtenu une taille de 892892 Ko, ce qui représente une réduction de taille de 53% par rapport au noyau standard.

Lors de l’installation des modules du noyau, ajoutez l’ INSTALL_MOD_STRIP=1option. Cela supprimera tous les symboles de débogage et réduira la taille de 92% pour moi (de 892892 kB à 69356 kB). Notez que cela ne concerne que les modules à installer et pas le noyau (vmlinuz) lui-même:

make INSTALL_MOD_STRIP=1 modules_install

De Documentation / kbuild / kbuild.txt :

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.

3
wow, 1897996 kB est presque 2 Go!
Netvope

3

La plupart des distributions majeures configurent leurs noyaux avec une prise en charge matérielle maximale afin que tout fonctionne normalement avec la plupart des ordinateurs et tout ce que vous branchez plus tard. Ils utilisent également un système initrd qui n'est pas nécessaire dans la plupart des cas. Il existe également des options dans la configuration du noyau qui optimisent le processus de construction en fonction de la taille, et une meilleure méthode de compression (bien que plus lente) peut également être sélectionnée. Enfin, si vous examinez la taille du code source du noyau, n'oubliez pas qu'il inclut également la prise en charge de plusieurs architectures autres que x86 / amd64, les protocoles réseau, les systèmes de fichiers et d'autres fonctionnalités que vous n'utiliserez probablement jamais et qui peuvent vous aider. être désactivé.


1

C'est assez simple, un système minimal a juste besoin de bootloader + kernel bien qu'il soit presque inutile. La plupart des commandes utilisées quotidiennement sont des fichiers binaires optionnels pour le système, tels que sh, ls, etc. Si vous êtes intéressé par les composants internes, Linux From Scratch! est un bon point de départ.


Notez que Busybox s’occupe de la plupart des choses "quotidiennes".
new123456

Non, busybox vient de les combiner. Il est populaire dans les systèmes de petite taille et intégrés, mais pas dans les systèmes de bureau.
Pinxue
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.