Sat Dec 28 14:08:46 2019 UTC

SysVinit

Introduction

SysVinit est le processus d'initialisation (le processus qui démarre d'autres processus) de NuTyX. Les inits sont souvent appelés PID1 (ID de processus 1) car ils sont toujours le premier processus à démarrer sur un système. Ils INITialisent le système. Les origines de SysVinit remontent à Unix et ont été fréquemment utilisées dans de nombreuses distributions.

Runlevels

SysVinit fonctionne en définissant les processus à démarrer en fonction de leurs niveaux d'exécution. Les niveaux d'exécution se trouvent dans le dossier /etc/rc.d et sont définis dans le fichier /etc/initab.

Accédez à /etc/rc.d à l'aide de la commande cd:

cd /etc/rc.d

La sortie d'une commande ls devrait être:

init.d  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rcS.d

Les niveaux d'exécutions dans NuTyX

Le niveaux d'exécution par défaut configuré dans NuTyX est:

  • rc0 (runlevel 0): Halt. Arrêt.
  • rc1 (runlevel 1): Single user mode. Mode simple utilisateur.
  • rc2 (runlevel 2): Multiuser Mode. Mode multiutilisateur.
  • rc3 (runlevel 3): Full Multiuser Mode. Mode multiutilisateur complet.
  • rc4 (runlevel 4): Full Multiuser Mode.
  • rc5 (runlevel 5): Graphical Environment Mode. Mode environnement graphique.
  • rc6 (runlevel 6): Reboot. Redémarrage.
  • rcS (runlevel S): Spécifie les tâches à lancer/arrêter durant l'initialisation/l'arrêt du système.

rcS est un niveau d'exécution dont l'utilisation principale est l'initialisation du système. Le niveau d'exécution 4 est une répétition de 3 afin qu'un utilisateur puisse le modifier et l'utiliser pour ce qu'il semble convenir.

Contenu des dossiers

En naviguant vers chaque niveau d'exécution, le contenu peut être répertorié via une commande ls:

ls

Exemple de mon niveau d'exécution 2:

K46ntpd  K80network  S15dbus  S25cups  S25random  S31elogind  S70gpm

Tous les fichiers de ce répertoire ne sont pas des scripts de démarrage eux-mêmes mais des liens symboliques vers des scripts de démarrage. Ces scripts sont contenus dans le répertoire /etc/init.d. La lettre commençant chaque lien a une signification. Un lien commençant par k signifie que le service est tué à ce niveau d'exécution et a besoin de la partie appropriée du script pour s'exécuter. S signifie que le service doit démarrer à ce niveau d'exécution. Le nombre suivant la lettre indique la priorité de démarrage ou d'arrêt du service (lors du démarrage des services, dans quel ordre les démarrer). Les nombres inférieurs sont d'abord démarrés, puis les plus élevés sont démarrés.

Regardons un script de démarrage de plus près

Ouvrez un script dans /etc/init.d avec votre éditeur de texte préféré. Ce qui suit est une partie de mon fichier cups dans init.d:

case $1 in
   start)
        log_info_msg "Starting CUPS Printserver..."
        start_daemon /usr/sbin/cupsd
        evaluate_retval
        ;;

    stop)
       log_info_msg "Stopping CUPS Printserver..."
       killproc /usr/sbin/cupsd
       evaluate_retval
       ;;

Chaque script est un fichier écrit en bash qui contient une instruction "case". Les instructions "case" sont utilisées pour faire correspondre un argument à plusieurs résultats différents. Par le biais d'instructions "case", ces scripts exécutent uniquement les parties de code nécessaires à des tâches spécifiques. Par exemple, au démarrage d'un service, un script exécutera toutes les lignes relatives à "start" puis à "end".