Connexion

Le processus de démarrage d'un système Linux

Vous vous êtes toujours demandé ce qu'il se passait sur un système Linux une fois que vous avez appuyé sur le bouton « Power » de votre ordinateur ?

Cet article a pour but de vulgariser simplement le processus de démarrage d'un système Linux. Le démarrage d'un système Linux se fait en 6 étapes. Donc, avant que la fenêtre d'identification apparaisse, 6 processus s'exécute à tour de rôle.

Schématiquement :


1ère étape : le BIOS

  • BIOS = Basic Input/Output system : système élémentaire d'entrée/sortie. C'est un ensemble de fonctions contenu dans la mémoire morte (ROM) de la carte mère d'un ordinateur lui permettant d'effectuer des opérations élémentaires lors de sa mise sous tension.
  • Exécute des opérations de vérification de l'intégrité du système.
  • Cherche, charge et exécute le programme d'amorçage.
  • Il cherche le programme d'amorçage sur un disque dur, une disquette, un CD-Rom ou une clé USB.
  • Une fois le programme d'amorçage trouvé et chargé en mémoire, le BIOS lui donne le contrôle.
  • Simplement, le BIOS exécute la MBR.


2e étape : la MBR

  • MBR = Master Boot Record : la zone amorce.
  • C'est le premier secteur adressable d'un disque dur. Le plus souvent appelé /dev/hda ou /dev/sda.
  • La taille de cette zone est de 512 bits au maximum. Elle contient :
    1. le programme d'amorçage se trouve dans les 446 premier bits.
    2. la table des partitions (les 4 partitions primaires) du disque dur sur les 64 bits suivants.
    3. vérification de la validité du MBR dans les 2 derniers bits.
  • Il contient une routine d'amorçage dont le but est de charger le système d'exploitation (ou le « boot loader »/chargeur d'amorçage s'il existe - GRUB ou LiLo) présent sur la partition active.
  • Simplement, le MBR exécute le programme d'amorçage GRUB.


3e étape : le GRUB

  • GRUB = Grand Unified Bootloader : un programme d'amorçage de micro-ordinateur.
  • Lorsque le micro-ordinateur héberge plusieurs systèmes (on parle alors de multi-amorçage), il permet à l'utilisateur de choisir quel système démarrer.
  • Il présente une interface qui permet à l'utilisateur de choisir quel système d'exploitation démarrer.
  • Si vous avez plus d'un noyau installé sur votre système, il est possible de sélectionner celui que vous voulez exécuter.
  • Il connaît le système de fichiers (ext3, ext4, Btrfs, etc.) utilisé sur le système.
  • Simplement, GRUB charge et exécute le noyau sélectionné et l'image initrd (image d'un système minimal initialisé au démarrage du système = Initial Ram Disk).


4e étape : le noyau

  • Monte le système de fichiers racine (« root »). Donc, relie une partition ou un périphérique à un répertoire, répertoire par lequel les données présentes sur la partition ou le périphérique sont accessibles.
  • Le noyau charge et exécute le programme /sbin/init.
  • Comme le programme init est le premier programme a être exécuté par le noyau Linux, il porte le PID (ID du processus) numéro 1.
  • Le initrd permet ainsi d'avoir un système minimal pouvant ensuite charger le système de fichier principal ou bien des systèmes sans disques. Il peut être instable d'avoir "en dur" dans le kernel tous les drivers de disques. Pour éviter cela, les distributions compilent un kernel minimal avec les options de bases puis chargent les modules obligatoires nécessaires contenus dans l'archive de l'initrd.


5e étape : init

  • Il consulte le fichier /etc/inittab pour décider quel niveau d'exécution démarrer.
  • Les niveaux d'exécution sont :
    • 0 - Arrêt
    • 1- Mode mono-utilisateur
    • 2 - Mode multi-utilisateur sans serveur applicatif
    • 3 - Mode multi-utilisateur avec serveur applicatif
    • 4 - Inutilisé ou X11 -> interface graphique selon la distribution
    • 5 - X11 -> interface graphique selon la distribution
    • 6 - Redémarrage
  • Init identifie le niveau d'exécution dans le fichier /etc/inittab et l'utilise pour charger les programmes associés au niveau.
  • En général, une distribution Linux fonctionne sur le niveau 5 ou 3.


6e étape : Runlevel

  • Lorsque votre système Linux démarre, vous apercevez (en appuyant sur la touche <ESC> afin de voir la version « verbeuse » du démarrage) divers services qui sont chargés. Ce sont les programmes du niveau d'exécution sur lequel votre système fonctionne qui sont chargés à partir du répertoire représentant le niveau d'exécution du système.
  • Les répertoires des niveaux d’exécution sont :
    • Run level 0 – /etc/rc.d/rc0.d/
    • Run level 1 – /etc/rc.d/rc1.d/
    • Run level 2 – /etc/rc.d/rc2.d/
    • Run level 3 – /etc/rc.d/rc3.d/
    • Run level 4 – /etc/rc.d/rc4.d/
    • Run level 5 – /etc/rc.d/rc5.d/
    • Run level 6 – /etc/rc.d/rc6.d/
  • Dans ces répertoires, on retrouve des noms de programme qui commencent par la lettre S et K.
  • Ceux qui commencent par la lettre S sont exécutés au démarrage du système (la lettre S pour « startup » = démarrage).
  • Ceux qui commencent par la lettre K sont exécutés à l'arrêt du système (la lettre K pour « kill » = arrêt).
  • De plus, dans le nom de ces programmes, il y a un chiffre après la lettre S ou K. Ce chiffre indique l'ordre d'exécution de chaque programme lors du démarrage ou de l'arrêt du système. Par exemple, S12syslog est le 12e programme qui s'exécutera au démarrage du système.


Voilà tout se qui se passe lorsqu'un système Linux démarre. ;)

Écrit par: DaaX, le : 13/09/2012


Retour :Utiliser Mageia

Cette page a été vue 25152 fois