Devuan und verschiedene systemd-freie Linux-Distributionen bieten alternative Init-Systeme. Runeinheit gehört zu den Barebones und leichtesten. Eine kleine Codebasis erleichtert die Wartung und Prüfung auf Fehler und Sicherheitsprobleme. Es ist auch auf anderen Unices wie *BSD, MacOSX usw. lauffähig. In diesem Artikel werde ich die Grundlagen der Runeinheit behandeln init-Schema mit Devuan als Basis. Die meisten Konzepte und Befehle sollten jedoch für andere Distributionen gleich sein. Sie können auf die Referenzen am Ende verweisen, um mehr Details zu erfahren.
Arbeitsmechanismus
Laut offizieller Dokumentation, runit ist ein Init-Schema mit Dienstüberwachung. Das bedeutet, dass es das automatische Starten von Diensten während des Bootens übernimmt sowie sie überwacht und neu startet. In Übereinstimmung mit der UNIX-Philosophie besteht Runit aus verschiedenen kleinen Tools und Binärdateien (wenn auch nicht in dem Ausmaß, dass es aufgebläht wird *ähm* systemd *ähm* ) für die Interaktion mit ihm und anderen Daemons.
Wie bei den meisten Init-Systemen lädt der Kernel den ersten Prozess – /sbin/init
die vom Programm runit-init(8) bereitgestellt wird. Es ersetzt sich dann selbst durch runit(8). runit führt das Booten, Ausführen und Herunterfahren des Systems durch, und zwar in drei Phasen:
- Stufe 1 :
Das System führt die einmaligen Initialisierungsaufgaben über/etc/runit/1
durch . Wir erhalten eine Notfallhülle, wenn diese Phase fehlschlägt. - Stufe 2 :
runit startet/etc/runit/2
das die Runlevels durch runningsvdir(8) handhabt. In dieser Phase bleibt unser System, wenn es läuft. Wir können in dieser Phase auch die Neustartanforderung mit Strg+Alt+Entf erteilen. - Stufe 3:
Wenn/etc/runit/2
kehrt ohne Fehler zurück, was während des Systemstopps oder Neustarts passiert, runit startet/etc/runit/3
. Die Shutdown-Aufgaben werden in Stufe 3 durchgeführt.
Runlevel
Eine Standardinstallation von Runit hat 2 Runlevels , default
und single
. Ein Runlevel-Verzeichnis enthält symbolische Links zu anderen Dienstverzeichnissen. Die meisten Aufgaben werden ausgeführt und die meisten Dienste werden im default
gestartet Runlevel. Aber wir können unsere eigenen Runlevel erstellen, indem wir einen neuen Ordner in /etc/runit/runsvdir/
erstellen und symbolische Verknüpfung unserer gewünschten Dienste mit diesem Runlevel. Meine Devuan-Installation hat zwei andere Runlevel erstellt.
Runit ändert die Runlevel, indem es das Verzeichnis runsvdir
wechselt Programm ausgeführt wird. Dies wird von runsvchdir
gehandhabt Befehl.
Zum Beispiel, um auf single
umzuschalten Benutzer-Runlevel:
# runsvchdir single
Wir können Runit auch bitten, während des Bootens in einem bestimmten Runlevel zu starten, anstatt in default
. Wir können dies tun, indem wir runitdir=name
anhängen Kernel-Parameter. Offensichtlich der Runlevel name
sollte existieren, d.h. es muss ein Verzeichnis unter /etc/runit/runsvdir
verfügbar sein mit diesem Namen.
Um beispielsweise direkt in den Single-User-Modus zu booten (d.h. die single
Runlevel), können wir runitdir=single
anhängen zum Kernelparameter.
In GRUB können wir dies tun, indem wir das e
drücken -Taste, während Sie einen Eintrag im Bootloader-Menü markieren.
Drücken Sie Ctrl+X
lässt das System mit den angegebenen Parametern booten und bringt uns effektiv in den Einzelbenutzermodus.
Dienste verwalten
Ein Dienstverzeichnis enthält Dateien und notwendige Skripte zur Verwaltung des Daemons. Dienstverzeichnisse befinden sich im Verzeichnis /etc/sv
Verzeichnis.
Diese Dienstverzeichnisse müssen mit /etc/service
symbolisch verknüpft werden andernfalls runit
nicht darauf zugreifen können.
Erstellen des Symlinks in /etc/service
wird im Wesentlichen enable
es so, dass es beim Booten gestartet wird. Wir können disable
einen Dienst, indem Sie eine Datei mit dem Namen down
erstellen innerhalb des Dienstverzeichnisses.
Obwohl Runit mehrere Programme hat, müssen wir normalerweise nur mit dem sv
interagieren Befehl. Die Syntax entspricht systemd ’s systemctl
Befehl.
Dienst starten:
# sv start <service_name>
Anhalten:
# sv stop <service_name>
Dienst neu starten oder neu laden:
# sv restart <service_name>
Überprüfen Sie den Status eines Dienstes:
# sv status <service_name>
Es gibt auch eine Neufassung des sv
Befehl in Rust namens rsv
. Darauf gehe ich in diesem Artikel jedoch nicht ein. Bitte überprüfen Sie den Link unter den Referenzen unten.
Referenzen:
- Rununit-Homepage
- rsv
- Artix-Wiki | Runit
- Ungültiges Linux | Dienste und Daemons – runit