65 votes

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

Un noyau 3* stable ordinaire pèse environ 70 mb maintenant. Mais il existe de petites distributions linux de 30 à 10 mb avec des logiciels et d'autres choses qui fonctionnent dès la sortie de la boîte.

Comment le noyau linux peut-il être si petit dans ces distros ? La suppression des modules et pilotes inutiles peut-elle réduire considérablement la taille du noyau ? Que fait-on d'autre pour réduire la taille du noyau ?

42voto

Apache Points 15675

Oui.

  • Si vous les dépouillez (compilez uniquement les modules pour les choses dont vous avez réellement besoin).
  • Optimiser le noyau pour la taille (ie. : -Os)
  • Compresser le noyau (tel que XZ.)

Ces "options" sont toutes disponibles dans le noyau standard et vous pouvez le faire à l'étape de la configuration. Vous n'avez pas besoin d'un outil spécial.

En utilisant ces trois éléments, on obtient un noyau aussi petit. Vous pouvez en faire des encore plus petits, 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, un pilote pour USB, etc. Rien d'autre. Pas de webcam, pas de vieux disques IDE, rien.

Les plus gros que vous rencontrez sont le noyau ENTIER. Ils sont compilés avec les options les plus génériques pour pouvoir fonctionner sur la plupart des matériels sans problème et ils contiennent presque tous les pilotes disponibles sous forme de modules. Ces modules ne ralentissent pas la vitesse du noyau car ils sont chargés à la demande.

(Il existe 3 états pour les modules au stade de la configuration :
[ ] - Il ne sera pas compilé, il ne fera pas partie de votre noyau.
[M] - Sera compilé comme un module.
(Vous pouvez le modprober, ou votre système le chargera automatiquement lorsqu'il sera nécessaire.
Dépend du système, userland).
[X] - Il sera compilé dans le noyau et sera présent - toujours.

Distros avec un noyau petit mais toujours générique :

21voto

RedGrittyBrick Points 78148

Les premières distributions Linux telles que Le Root-Boot de Tom , MuLinux , Diet-router (le défunt) LOAF et bien d'autres aujourd'hui disparus, ont tous installé un système Linux fonctionnel sur une ou deux disquettes de 1,44 Mo.

Le noyau Linux a grandi mais il est modulaire : les modules du noyau sont chargés en fonction des besoins. Il est donc toujours possible de produire une distribution Linux avec une très faible empreinte.

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
  • 2.6.5-tiny1 configuration de test : IDE, ext2, TCP, NIC : 363K

11voto

GP10 Points 39

La configuration par défaut du noyau est configurée pour prendre en charge le plus de matériel possible. Un noyau non dépouillé avec la configuration par défaut a donné une taille de 1897996 kB (incluant le noyau + les 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), la taille du noyau est de 892892 kB, ce qui représente une réduction de 53% par rapport au noyau standard.

Lors de l'installation des modules du noyau, ajoutez le fichier INSTALL_MOD_STRIP=1 option. 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 n'affecte que les modules à installer et non 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.

3voto

Lawrence Points 11

La plupart des principales distributions configurent leurs noyaux avec une prise en charge matérielle maximale, de sorte qu'ils fonctionneront dès le départ avec la plupart des ordinateurs et tout ce que vous brancherez par la suite. Elles 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 au processus de construction d'optimiser la taille, et une meilleure méthode de compression (bien que plus lente) peut également être sélectionnée. Enfin, si vous regardez la taille du code source du noyau, gardez à l'esprit qu'il inclut également la prise en charge de plusieurs architectures au-delà de x86/amd64, des protocoles réseau, des systèmes de fichiers et d'autres fonctionnalités que vous n'utiliserez probablement jamais et qui peuvent être désactivées.

1voto

Kaycee213 Points 51

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X