Comme nous l'avons appris, le processus init est le premier processus à s'exécuter lors du démarrage de Linux. Il est le parent de tous les autres processus et est responsable du démarrage des services essentiels qui rendent votre système utilisable. Mais comment y parvient-il ?
Il existe trois implémentations majeures du système d'init Linux, chacune avec une approche différente de la gestion des services.
System V Init
System V init, souvent appelé sysvinit, est le système d'init traditionnel pour Linux. Il suit une procédure de démarrage séquentielle définie par des scripts. L'état du système est géré par des niveaux d'exécution (runlevels), où chaque niveau (par exemple, mode utilisateur unique, mode multi-utilisateur avec réseau) possède un ensemble spécifique de services à démarrer ou à arrêter. C'était la norme pendant longtemps dans le processus de démarrage Linux classique.
Upstart
Trouvé sur les anciennes versions d'Ubuntu, Upstart est un système d'init basé sur les événements. Il s'est éloigné du modèle strictement séquentiel de System V. Au lieu de cela, Upstart démarre et arrête les services (appelés jobs) en réponse à des événements système, comme la disponibilité d'un périphérique réseau. Cela permet des temps de démarrage plus flexibles et plus rapides.
systemd
La norme moderne pour le système d'init Linux est systemd. C'est un système orienté objectif qui gère agressivement les dépendances. Au lieu de simplement démarrer une liste de services, vous définissez un état cible (comme une interface graphique), et systemd travaille à satisfaire toutes les dépendances pour cet objectif, démarrant souvent les services en parallèle pour accélérer considérablement le processus de démarrage.
Nous avons un cours complet sur les systèmes d'init où nous plongerons plus en détail dans chacun de ces systèmes.