Le noyau entier est chargé en mémoire au démarrage, généralement avec un initramfs
de nos jours. (Il est toujours possible de configurer un système pour qu'il démarre sans initramfs
mais c'est inhabituel sur les ordinateurs de bureau et les serveurs.)
Le initramfs
Le rôle de est de fournir les fonctionnalités nécessaires pour monter les "vrais" systèmes de fichiers et continuer à démarrer le système. Cela implique des modules du noyau, ainsi que divers binaires :vous avez besoin d'au moins udev
, peut-être du réseautage et kmod
qui charge les modules.
Les modules peuvent être chargés dans le noyau après le démarrage, il n'y a donc pas de préparation spéciale du noyau par le initramfs
. Ils peuvent être stockés n'importe où :le initramfs
, /lib/modules
sur le système de fichiers réel, dans un arbre de développement si vous développez un module... Le initramfs
ne doit contenir que les modules nécessaires pour monter le système de fichiers racine (qui contient le reste).
Le noyau entier (mais pas ses modules) sera chargé en mémoire. S'il y a des modules dont le noyau aura besoin avant que des systèmes de fichiers soient disponibles (cela signifie généralement les pilotes pour les systèmes de fichiers et leurs périphériques), alors ces modules seront dans l'initramfs (en mémoire), et le noyau les chargera à partir de là. D'autres modules peuvent être chargés ultérieurement à partir du système de fichiers.
Le noyau dans les configurations Linux modernes est fortement basé sur les modules, c'est-à-dire que le noyau proprement dit (chargé au démarrage dans la RAM) n'inclut que le strict minimum de fonctionnalités, tout le reste est compilé sous forme de modules (chargeables au moment de l'exécution). Pour que cela fonctionne même lorsque, par ex. les périphériques ou systèmes de fichiers requis pour le démarrage sont des modules, un initramfs
est chargé avec le noyau (comme son nom l'indique, il s'agit d'une zone RAM avec un système de fichiers simple, monté au démarrage). Ce système de fichiers temporaire est monté sur /
, et contient les programmes de démarrage et les modules requis. Une fois le démarrage sur initramfs
est fait, Linux exécute un pivot_root(8)
, monter le vrai /
et lancer le initramfs
contenu.
Le point de cette complexité est que, par ex. une distribution peut en compiler une noyau (noyau minimal et ensemble complet de modules), et lors de l'installation du noyau, créez un initramfs
adaptés au matériel et à la configuration de la machine cible. Tout cela est nécessaire en raison de la grande variété d'appareils et de configurations des "ordinateurs personnels".