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/2
qui 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/2
renvoie 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