9.1. Introduction

Le démarrage d'un système Linux englobe plusieurs tâches. Le processus implique de monter les systèmes de fichiers virtuels et réels, d'initialiser les périphériques, activer l'échange (swap), vérifier l'intégrité des systèmes de fichiers, monter les partitions ou les fichiers d'échange, régler l'horloge du système, activer le réseau, démarrer les démons nécessaires au système et accomplir d'autres tâches personnalisées dont a besoin l'utilisateur. Il faut organiser le processus pour s'assurer que les tâches s'effectuent dans l'ordre, mais en même temps, le plus vite possible.

9.1.1. System V

System V est le système de démarrage classique qu'on utilise dans les systèmes Unix et Unix-like comme Linux depuis environ 1983. Il consiste en un petit programme, init, qui initialise les programmes de base tels que login (via getty) et lance un script. Ce script, appelé en général rc, contrôle l'exécution d'un ensemble d'autres scripts effectuant les tâches nécessaires pour initialiser le système.

Le programme init est contrôlé par le fichier /etc/inittab et s'organise en niveaux d'exécution lançables par l'utilisateur :

0 — arrêt
1 — Mode mono-utilisateur
2 — Multi-utilisateur, sans réseau
3 — Mode multi-utilisateur complet
4 — Définissable par l'utilisateur
5 — Mode multi-utilisateur complet avec gestionnaire d'affichage
6 — redémarrage

Le niveau d'exécution par défaut est en général 3 ou 5.

Avantages

  • Système stabilisé et maîtrisé.

  • Facile à personnaliser.

Inconvénients

  • Peut être plus lent au démarrage. La vitesse moyenne d'un système LFS de base est de 8-12 secondes, le temps de démarrage étant mesuré à partir du premier message du noyau jusqu'à l'invite de connexion. La connectivité réseau arrive en général 2 secondes après l'invite de connexion.

  • Gestion en série des tâches de démarrage. Ceci est lié au point précédent. La durée d'un processus comme la vérification d'un système de fichiers retardera tout le processus de démarrage.

  • Ne prend pas directement en charge les fonctionnalités avancées comme les groupes de contrôle (cgroups) et l’ordonnancement à part équitable entre utilisateurs.

  • L'ajout de scripts nécessite de prendre des décisions sur la séquence statique d'exécution à la main.