Die Version 0.6.0.0 des Service-Managers s6-rc ist verfügbar, die zur Verwaltung des Starts von Initialisierungs- und Servicedateien dient. Es wird die Verfolgung von Abhängigkeitsbäumen sowie das automatische Starten oder Beenden von Diensten zur Erreichung des gewünschten Zustands unterstützt. Das s6-rc-Toolkit kann sowohl in Init-Systemen als auch zur Organisation des Starts beliebiger Dienste basierend auf Ereignissen, die den Zustand des Systems widerspiegeln, verwendet werden. Das System unterstützt Initialisierungsskripte, die mit sysv-init kompatibel sind, und kann Abhängigkeitsinformationen aus sysv-rc oder OpenRC importieren. Der Code ist in C geschrieben und wird unter der ISC-Lizenz veröffentlicht.
Der s6-rc-Service-Manager beinhaltet eine Sammlung von Tools zum Starten und Stoppen von langlaufenden Prozessen (Dämonen) oder sofort beendbaren Initialisierungsskripten. Während der Ausführung wird sichergestellt, dass nicht überlappende Services parallel gestartet werden, und die Reihenfolge der Ausführung der Skripte bei verschiedenen Starts bleibt garantiert gleich. Alle Statusänderungen werden unter Berücksichtigung der Abhängigkeiten verarbeitet; so werden beispielsweise beim Start eines Dienstes automatisch die notwendigen Abhängigkeiten für dessen Betrieb aktiviert, und beim Stoppen werden auch die abhängigen Dienste gestoppt.
Im Gegensatz zu anderen Service-Managern unterstützt s6-rc die vorausschauende (im Offline-Modus) Erstellung eines Abhängigkeitsgraphs für einen vorhandenen Satz von Services, was es ermöglicht, ressourcenintensive Abhängigkeitsanalysen separat durchzuführen, anstatt während des Ladens oder bei Zustandsänderungen. Das System ist modular gestaltet und in eine Reihe von separaten, austauschbaren Modulen unterteilt, von denen jedes gemäß der Unix-Philosophie nur eine bestimmte Aufgabe löst. Das Projekt s6-rc folgt dem Minimalismus-Prinzip (es enthält nichts Überflüssiges) und verbraucht minimale Ressourcen.
Anstelle von Runlevels bietet s6-rc das Konzept von Bundles an, das die Gruppierung von Diensten nach beliebigen Kriterien und zu lösenden Aufgaben ermöglicht. Um die Effizienz zu steigern, wird eine kompilierte Abhängigkeitsdatenbank verwendet, die von der Utility s6-rc-compile basierend auf dem Inhalt der Verzeichnisse mit Start-/Stoppdateien für Dienste erstellt wird. Für die Analyse und Manipulation der Datenbank stehen die Tools s6-rc-db und s6-rc-update zur Verfügung.
In der neuen Version wurden die Sammlungen der Dienstprogramme s6-rc-repo-* und s6-rc-set-* hinzugefügt, die für die Verwaltung von Repositories mit Dienstdefinitionen verwendet werden; Unterstützung für Shared Libraries auf der macOS-Plattform wurde hinzugefügt; eine Option «—bootdb» für die Konfiguration der Boot-Datenbank mit Informationen über Dienste und deren Abhängigkeiten wurde eingeführt; in das Dienstprogramm s6-rc-compile wurde die Option «-v2» integriert.
Das Projekt umfasst auch ergänzende Pakete, die s6-rc unterstützen:
- s6 sind Tools zur Überwachung und Verwaltung von Prozessen (ähnlich wie daemontools und runit). Es werden Funktionen wie das Neustarten von Prozessen nach einem unerwarteten Abbruch, die Aktivierung eines Handlers (Dienstaktivierung) beim Zugriff auf einen Netzwerkport, Ereignisprotokollierung (Ersatz für syslogd) und kontrollierte Gewährung zusätzlicher Berechtigungen (ähnlich wie sudo) unterstützt.
- s6-linux-init — die Implementierung des Init-Prozesses für Betriebssysteme auf Basis des Linux-Kernels, der zur Erstellung von Initialisierungssystemen verwendet wird, in denen Pakete wie s6 und s6-rc zur Verwaltung von Diensten und Skripten eingesetzt werden.
- s6-networking — eine Sammlung von Tools zur Erstellung von Netzwerkdiensten, ähnlich wie ucspi.
- s6-frontend — ein Wrapper zur Wiederherstellung der Funktionalität von daemontools und runit über s6.
- s6-portable-utils — eine Sammlung von typischen Unix-Tools wie cut, chmod, ls, sort und grep, optimiert für minimalen Ressourcenverbrauch und unter der ISC-Lizenz bereitgestellt.
- s6-linux-utils — eine Sammlung von Linux-spezifischen Tools wie chroot, freeramdisk, logwatch, mount und swapon.
- mdevd — ein Ereignismanager (analog zu udevd), der für die Verarbeitung des Hot-Plugging von Geräten vorgesehen ist. mdevd ist konfigurationskompatibel mit mdev aus der Busybox.
- bcnm — ein Netzwerk-Konfigurator mit Funktionen zur Konfiguration von Wi-Fi auf der Client-Seite.
- execline — eine Skriptsprache.
- skalibs — eine Bibliothek zur Erstellung sicherer Systemanwendungen in der Programmiersprache C.
- s6-dns — ein Satz von Client-Bibliotheken und -Tools, die die typischen DNS-Tools von BIND und djbdns ersetzen.
- dnsfunnel — leitet lokale DNS-Anfragen an externe weiter. der Server (DNS-Weiterleiter).
- shibari — ein einfacher DNS-Server.
- tipidee — ein HTTP-Server mit Unterstützung für HTTP/1.1.
Quelle: opennet.ru
