Le nombre et le type de démons chargés en mémoire et exécutés par le noyau sur un système particulier sont définis par une interaction complexe de plusieurs facteurs :
1. Le système d'initialisation du système (init) : C’est le principal moteur. Le système d'initialisation (par exemple, systemd, SysVinit, runit) est responsable du démarrage, de l'arrêt et de la gestion des démons. Il lit les fichiers de configuration (comme `/etc/inittab` pour SysVinit ou les fichiers d'unité systemd) qui spécifient quels démons doivent être démarrés au démarrage et dans quelles conditions. Différents systèmes d'initialisation ont des méthodes et philosophies de configuration différentes.
2. Fichiers de configuration : Ces fichiers détaillent les démons à exécuter, leurs paramètres d'exécution (comme les arguments de ligne de commande), les dépendances entre les démons (qui doivent démarrer avant les autres) et les niveaux d'exécution (SysVinit) ou les états cibles (systemd). Ces configurations définissent l'ensemble fondamental des démons.
3. Niveaux d'exécution/États cibles : (Principalement pertinent pour SysVinit) Différents niveaux d'exécution représentent différents états du système (par exemple, mode mono-utilisateur, mode multi-utilisateur). Le système d'initialisation charge un ensemble différent de démons en fonction du niveau d'exécution actif. Systemd utilise des "cibles" plus flexibles et plus puissantes que les niveaux d'exécution.
4. Dépendances entre démons : Les démons dépendent souvent de l'activité d'autres démons. Par exemple, un démon de serveur Web peut dépendre de l'exécution d'un démon réseau. Le système d'initialisation garantit que les dépendances sont satisfaites avant de démarrer un démon.
5. Services à la demande : Certains démons peuvent ne pas être chargés au moment du démarrage mais plutôt démarrés dynamiquement en cas de besoin. Ceux-ci sont souvent déclenchés par des demandes d'utilisateurs ou d'autres événements système. Les services réseau, par exemple, ne commencent souvent à écouter sur un port que lorsqu'une connexion est tentée.
6. Scripts de démarrage automatique : Certaines applications ou packages logiciels installent leurs propres scripts de démarrage qui amènent le système d'initialisation à démarrer les démons associés au démarrage ou selon les besoins.
7. Processus lancés par l'utilisateur : Bien qu'il ne s'agisse pas strictement de démons au sens traditionnel du terme, les utilisateurs peuvent démarrer des processus qui s'exécutent en arrière-plan, agissant effectivement comme des démons (bien qu'ils n'aient pas certaines des caractéristiques des démons correctement conçus).
8. Modules du noyau : Bien qu'il ne s'agisse pas strictement de démons, les modules du noyau (qui étendent les fonctionnalités du noyau) peuvent déclencher la création ou la modification du comportement des démons. Une nouvelle interface réseau peut nécessiter le démarrage de nouveaux démons liés au réseau.
En résumé, ce n'est pas un élément unique mais un effort de collaboration entre la configuration du système d'initialisation, sa compréhension des dépendances et éventuellement un démarrage dynamique déclenché par d'autres événements qui détermine l'ensemble précis de démons exécutés sur un système donné. La complexité découle de la nécessité de gérer un ensemble diversifié de services système de manière efficace et robuste.
|