web-dev-qa-db-fra.com

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

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 d'autre pour réduire la taille du noyau?

54
puzzled tux

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 aussi petit. 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 IDE lecteurs, rien.

Aussi: Les plus gros que vous rencontrez sont le noyau WHOLE (que l'on n'a jamais besoin 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 chargés que s’ils sont nécessaires. Il existe 3 états:
[ ] - Ne sera pas compilé, ne fera pas partie de votre noyau.
[M] - Sera compilé en tant que module.
(Vous pouvez le tester, ou votre système le chargera automatiquement au besoin.
Dépend du système, utilisateur.)
[X] - Il sera compilé dans le noyau ET sera présent - toujours.

Distros avec petit noyau:

36
Shiki

Les premières distributions Linux telles que Tom's Root-Boot , MuLinux , Diet-router , (le maintenant disparu) PAIN et beaucoup d'autres maintenant sont partis, ils ont tous installé 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 en fonction des 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

  • historique du noyau 0.99pl15: Slackware 1.1.2, 1994 301K
  • Fedora Core 2 1,2 M
  • SuSE 9.1 1,5 M
  • Configuration de test 2.6.5-tiny1: IDE, ext2, TCP, NIC 363K
20
RedGrittyBrick

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'option INSTALL_MOD_STRIP=1. Cela supprimera tous les symboles de débogage et réduira la taille de 92% pour moi (de 892892 kB à 69356 kB). Notez que ceci n'affectera 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.
9
Lekensteyn

La plupart des distributions majeures configurent leurs noyaux avec une prise en charge matérielle maximale, de sorte que cela fonctionne immédiatement 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 permettent d'optimiser 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é.

3
Jonathan Amend

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 binaires optionnels pour le système, tels que sh, ls, etc. Si vous êtes intéressé par les internes, Linux From Scratch! est un bon point de départ.

1
pinxue