On peut lancer Linux soit à partir d'une disquette soit à partir du disque dur. La section consacrée à l'installation du << Installation and Getting Started guide >> ([Wel]) indique comment installer Linux pour le lancer selon notre choix.
Une fois le PC lancé, le BIOS fait différents tests pour vérifier que tout va bien5.4 et lance ensuite le véritable démarrage. Il choisit un lecteur de disque (normalement le premier lecteur de disquette, s'il y a une disquette dedans, sinon le premier disque dur ; cependant, cet ordre est configurable) et lit son tout premier secteur. Celui-ci s'appelle le secteur de boot, dans le cas d'un disque dur, il est aussi appelé master boot record car un disque dur peut contenir plusieurs partitions, chacune ayant son propre secteur de boot.
Le secteur de boot contient un petit programme (assez petit pour tenir dans un seul secteur) dont le rôle est de lire le véritable système d'exploitation sur le disque et de le lancer. Lorsqu'on lance Linux à partir d'une disquette, le secteur de boot contient du code qui ne fait que lire les quelques premières centaines de blocs (selon la taille réelle du noyau, bien sûr) et les transfère à un endroit précis de la mémoire. Sur une disquette de boot Linux, il n'y a pas de système de fichiers, le noyau est simplement stocké dans des secteurs consécutifs car cela simplifie le processus de boot. Il est cependant possible de démarrer à partir d'une disquette ayant un système de fichiers en utilisant LILO, le LInux LOader5.5
Lorsqu'on démarre à partir du disque dur, le code contenu dans le master boot record examine la table des partitions (qui se trouve aussi à cet endroit), identifie la partition active (marquée << bootable >> ), lit le secteur de boot de celle-ci, puis exécute le code qui s'y trouve. Le code dans le secteur de boot de la partition fait la même chose que le code du secteur de boot d'une disquette : il lit le noyau dans la partition et le lance. Cependant, les détails changent, car il n'est généralement pas utile d'avoir une partition séparée juste pour contenir l'image du noyau. Le code dans le secteur de boot de la partition ne peut donc simplement lire le disque séquentiellement, il doit trouver les secteurs où le système de fichiers les a mis. Il y a plusieurs façons de régler ce problème, mais la plus commune est d'utiliser LILO. (Les détails sur la façon de procéder ne sont pas pertinents dans cet exposé, voir la documentation de LILO pour plus d'informations.)
Lorsqu'on démarre avec LILO, celui-ci lance normalement le noyau par défaut. Il est aussi possible de le configurer pour pouvoir lancer un parmi plusieurs noyaux, ou même d'autres systèmes d'exploitation que Linux, et l'utilisateur peut alors choisir quel noyau ou système d'exploitation doit être lancé au démarrage. LILO peut être configuré pour que, si l'on presse les touches alt, shift ou ctrl, au moment du lancement (lorsque LILO est chargé), LILO demande ce qu'il faut démarrer au lieu de partir sur le démarrage par défaut. On peut aussi configurer LILO pour qu'il demande toujours quel noyau lancer, avec un temps d'expiration optionnel menant au démarrage du noyau par défaut.
Avec LILO, il est aussi possible de fournir un paramètre au noyau, après le nom de celui-ci ou du système d'exploitation.
META: Il existe d'autres chargeurs de boot que LILO. Des informations sur ceux-ci seront ajoutés dans une future version. loadlin.
Booter à partir d'une disquette ou du disque dur ont tous deux leurs avantages, mais il est généralement plus pratique de le faire à partir du disque dur car cela évite les tracas de la manipulation des disquettes. C'est aussi plus rapide. Cependant, il peut être plus risqué d'installer le système pour qu'il boote à partir du disque, et donc beaucoup commencent d'abord par booter à partir d'une disquette, puis, lorsque le système est complètement installé et fonctionne bien, ils installent LILO et bootent à partir du disque dur.
Lorsque le noyau Linux est en mémoire, peu importe comment, et qu'il est lancé, grosso modo les choses suivantes vont se passer :
Le noyau Linux est installé compressé, il se décompresse donc de lui-même. Le début de l'image du noyau contient un petit programme pour cela.
Si l'on a une carte super-VGA reconnue par Linux et qu'elle possède certains modes textes particuliers (comme 100 colonnes par 40 lignes), Linux demande en quel mode on veut l'utiliser. Lors de la compilation du noyau, il est possible de présélectionner un mode vidéo de façon à ce qu'il ne soit plus demandé. Ceci peut aussi être fait avec LILO ou rdev.
Après cela, le noyau vérifie la présence des autres matériels
(disques durs, disquettes, cartes réseaux...), et configure de
manière appropriée certains de ses pilotes de périphérique ; pendant
ces opérations, il affiche des messages sur ce qu'il trouve. Par
exemple, quand je boote, cela ressemble à ça :
Les messages exacts varient selon les systèmes en fonction du matériel, de la
version de Linux utilisée et de la façon dont il a été configuré.
Puis, le noyau essaie de monter le système de fichiers racine. L'emplacement est configurable au moment de la compilation, ou à tout moment grâce à rdev ou LILO. Le type du système de fichiers est détecté automatiquement. Si le montage du système de fichiers racine échoue, par exemple parce qu'on a oublié d'inclure le pilote adéquat dans le noyau, le noyau panique et arrête le système (il ne peut faire grand chose de plus, en tous cas).
Le système de fichiers racine est normalement monté en lecture seule (cela peut être configuré de la même façon que son emplacement). Ceci permet de vérifier le système de fichiers pendant qu'il est monté ; il n'est pas souhaitable de vérifier un système de fichiers qui est monté en lecture et écriture.
Puis, le noyau lance le programme init (situé dans /sbin/init) en tâche de fond (ce sera toujours le processus ayant le numéro 1). init réalise différents travaux de ménage pour le démarrage. Ce qu'il fait exactement dépend de la façon dont il est configuré ; voir le chapitre 6 (non encore écrit) pour plus d'informations. Il lance au moins plusieurs démons essentiels en tâches de fond.
init bascule alors en mode multi-utilisateurs, et lance un getty pour les consoles virtuelles et les lignes série. getty est le programme qui permet aux personnes de se logger via des consoles virtuelles et des terminaux série. Selon sa configuration, init peut aussi lancer d'autres programmes.
Après cela, la phase de boot est terminée, le système est prêt et tourne normalement.