Devuan et diverses distributions Linux sans systemd fournissent des systèmes d'initialisation alternatifs. exécuter est parmi les plus barebones et les plus légers. Le fait d'avoir une petite base de code facilite la maintenance et l'audit des bogues et des problèmes de sécurité. Il est également capable de fonctionner sur d'autres Unices comme *BSD, MacOSX, etc. Dans cet article, je vais couvrir les bases du runit schéma d'initialisation avec Devuan comme base. Cependant, la plupart des concepts et des commandes devraient être les mêmes pour les autres distributions. Vous pouvez vous référer aux références à la fin pour apprendre plus en détail.
Mécanisme de travail
Selon la documentation officielle, runit est un schéma d'initialisation avec supervision de service. Cela signifie qu'il gère le démarrage automatique des services lors du démarrage, ainsi que leur surveillance et leur redémarrage. Conformément à la philosophie UNIX, runit se compose de divers petits outils et binaires (mais pas au point d'être gonflés *ahem* systemd *hum* ) pour interagir avec lui et d'autres démons.
Comme avec la plupart des systèmes init, le noyau charge le premier processus - /sbin/init qui est fourni par le programme runit-init(8). Il se remplace ensuite par runit(8). runit est ce qui effectue le démarrage, l'exécution et l'arrêt du système et il le fait en trois étapes :
- Étape 1 :
Le système exécute les tâches d'initialisation uniques via/etc/runit/1. Nous obtenons un shell d'urgence si cette étape échoue. - Étape 2 :
runit démarre/etc/runit/2qui gère les niveaux d'exécution via runsvdir(8). C'est l'étape dans laquelle notre système reste lorsqu'il est en cours d'exécution. Nous pouvons également donner la demande de redémarrage Ctrl + Alt + Suppr à ce stade. - Étape 3 :
Si/etc/runit/2renvoie sans erreur, ce qui se produit lors de l'arrêt ou du redémarrage du système, runit démarre/etc/runit/3. Les tâches d'arrêt sont effectuées à l'étape 3.
Niveaux d'exécution
Une installation standard de runit a 2 niveaux d'exécution , default et single . Un répertoire de niveau d'exécution contient des liens symboliques vers d'autres répertoires de service. La plupart des tâches sont effectuées et la plupart des services sont démarrés dans le default niveau d'exécution. Mais nous pouvons créer nos propres niveaux d'exécution en créant un nouveau dossier dans /etc/runit/runsvdir/ et créer un lien symbolique entre nos services souhaités et ce niveau d'exécution. Mon installation Devuan a créé deux autres niveaux d'exécution.
Runit change les niveaux d'exécution en changeant de répertoire le runsvdir programme est en cours d'exécution. Ceci est géré par le runsvchdir commande.
Par exemple, pour passer au single niveau d'exécution utilisateur :
# runsvchdir single
Nous pouvons également demander à runit de démarrer dans un niveau d'exécution spécifique lors du démarrage au lieu du default . Nous pouvons le faire en ajoutant le runitdir=name paramètre du noyau. Évidemment, le niveau d'exécution name doit exister, c'est-à-dire qu'un répertoire doit être disponible dans /etc/runit/runsvdir avec ce nom.
Par exemple, pour démarrer directement en mode mono-utilisateur (c'est-à-dire le mode single runlevel), nous pouvons ajouter runitdir=single au paramètre du noyau.
Dans GRUB, nous pouvons le faire en appuyant sur le e clé tout en mettant en surbrillance une entrée dans le menu du chargeur de démarrage.
Appuyez sur Ctrl+X fera démarrer le système avec les paramètres donnés, nous mettant ainsi en mode mono-utilisateur.
Gestion des services
Un répertoire de service contient les fichiers et les scripts nécessaires pour gérer le démon. Les répertoires de service sont situés dans le /etc/sv annuaire.
Ces répertoires de service doivent être liés symboliquement à /etc/service sinon runit ne pourra pas y accéder.
Création du lien symbolique dans /etc/service va essentiellement enable pour qu'il démarre au démarrage. Nous pouvons disable un service en créant un fichier nommé down dans le répertoire de service.
Bien que runit ait plusieurs programmes, nous n'avons généralement besoin d'interagir qu'avec le sv commande. La syntaxe est équivalente à systemd systemctl commande.
Démarrage d'un service :
# sv start <service_name>
L'arrêter :
# sv stop <service_name>
Redémarrer ou recharger un service :
# sv restart <service_name>
Vérifier l'état d'un service :
# sv status <service_name>
Il y a aussi la réécriture du sv commande dans Rust appelée rsv . Cependant, je ne vais pas le couvrir dans cet article. Veuillez vérifier le lien parmi les références ci-dessous.
Références :
- Page d'accueil Runit
- rsv
- ArtixWiki | Exécuter
- Vide Linux | Services et démons – runit