Finit 4.0-Initialisierungssystem verfügbar

Nach etwa dreijähriger Entwicklungszeit wurde die Veröffentlichung des Initialisierungssystems Finit 4.0 (Fast init) veröffentlicht, das als einfache Alternative zu SysV init und systemd entwickelt wurde. Das Projekt basiert auf Entwicklungen, die durch Reverse Engineering des in der Linux-Firmware von EeePC-Netbooks verwendeten Fastinit-Initialisierungssystems entstanden sind und sich durch einen sehr schnellen Bootvorgang auszeichnen. Das System ist in erster Linie auf das Booten kompakter und eingebetteter Systeme ausgerichtet, kann aber auch für herkömmliche Desktop- und Serverumgebungen eingesetzt werden. Beispielimplementierungsskripte wurden für Void Linux, Alpine Linux und Debian GNU/Linux vorbereitet. Der Projektcode ist in C geschrieben und wird unter der MIT-Lizenz vertrieben.

Finit unterstützt Runlevel im SysV-Init-Stil, überwacht den Zustand von Hintergrundprozessen (automatischer Neustart des Dienstes im Fehlerfall), führt einmalige Handler aus, startet Dienste unter Berücksichtigung von Abhängigkeiten und willkürlichen Bedingungen und fügt zusätzliche Handler hinzu, die vorher oder nachher ausgeführt werden Serviceausführung. Beispielsweise können Sie einen Dienst so konfigurieren, dass er erst gestartet wird, wenn Netzwerkzugriff verfügbar ist oder nachdem ein anderer Dienst, z. B. syslogd, gestartet wurde. Cgroups v2 wird zum Festlegen von Einschränkungen verwendet.

Um die Funktionalität zu erweitern und an Ihre Bedürfnisse anzupassen, können Plugins verwendet werden, für die ein Hook-System bereitgestellt wird, mit dem Sie einen Handler an verschiedene Phasen des Ladens und Ausführens von Diensten anhängen und eine Bindung an externe Ereignisse bereitstellen können. Beispielsweise wurden Plugins zur Unterstützung von D-Bus, ALSA, Netlink, Resolvconf, Hot-Plugging von Geräten, Überprüfen der Verfügbarkeit und Laden von Kernel-Modulen, Verarbeiten von PID-Dateien und Einrichten der Umgebung für den X-Server vorbereitet.

Die Verwendung von Standardskripten zum Starten von Diensten, die für SysV-Init erstellt wurden, wird unterstützt (/etc/rc.d und /etc/init.d werden nicht verwendet, aber die Unterstützung für /etc/inittab kann über das Plugin implementiert werden) sowie rc.local-Skripte, Dateien mit Umgebungs- und Netzwerkeinstellungsvariablen /etc/network/interfaces, wie in Debian und BusyBox. Einstellungen können entweder in einer Konfigurationsdatei /etc/finit.conf definiert oder über mehrere Dateien im Verzeichnis /etc/finit.d verteilt werden.

Die Verwaltung erfolgt über die Standardtools initctl und run-parts, mit denen Sie Dienste in Bezug auf Ausführungsebenen aktivieren und deaktivieren sowie einige Dienste selektiv starten können. Finit umfasst außerdem eine integrierte getty-Implementierung (Terminal- und Benutzer-Login-Verwaltung), einen Watchdog zur Gesundheitsüberwachung und einen Crash-Recovery-Modus mit integriertem sulogin zum Ausführen einer isolierten Befehls-Shell.

Finit 4.0-Initialisierungssystem verfügbar

Zu den Änderungen, die in der Version Finit 4.0 hinzugefügt wurden (Version 3.2 wurde aufgrund von Änderungen, die die Abwärtskompatibilität beeinträchtigten, übersprungen):

  • Das separate Neustart-Dienstprogramm wurde durch einen symbolischen Link zu initctl ersetzt, ähnlich den Dienstprogrammen halt, Shutdown, Poweroff und Suspend.
  • Die Anzeige des Betriebsfortschritts wurde implementiert.
  • Die Funktionsweise der „inictl cond set|clear COND“-Befehle wurde geändert, um Aktionen an verschiedene Ereignisse zu binden. Die zum Identifizieren von Diensten verwendete Syntax lautet anstatt an Pfade zu binden .
  • Die integrierte Implementierung des inetd-Servers wurde entfernt, wo xinetd bei Bedarf installiert werden kann.
  • Unterstützung für cgroups v2 zum Ausführen von Diensten in separaten cgroups hinzugefügt.
  • Absturzwiederherstellungsmodus mit eigenem Suslogin hinzugefügt.
  • Unterstützung für Start-/Stopp-Skripte von SysV init hinzugefügt.
  • Pre:script- und post:script-Handler hinzugefügt, mit denen Sie Ihre Aktionen angeben können, die vor oder beim Start des Dienstes ausgeführt werden.
  • Unterstützung für env:file mit Umgebungsvariablen hinzugefügt.
  • Es wurde die Möglichkeit hinzugefügt, beliebige PID-Dateien zu verfolgen.
  • Es wurde die Möglichkeit hinzugefügt, Aufgaben und Dienste über relative Pfade zu starten.
  • Option „-b“ zu initctl hinzugefügt, um Aktionen im nicht interaktiven Modus (Batch-Modus) auszuführen.
  • Der integrierte Watchdog wurde durch eine separate Version von watchdogd ersetzt.
  • Ein Plugin hinzugefügt, um Kernel-Module für angeschlossene Geräte während des Betriebs automatisch zu laden.
  • Plugin zur Verarbeitung von /etc/modules-load.d/ hinzugefügt.
  • Unterstützung für den automatischen Neustart von Diensten nach Änderung der Einstellungen hinzugefügt, sodass Sie auf die manuelle Ausführung des Befehls „initctl reload“ verzichten können. Standardmäßig deaktiviert und muss mit „./configure --enable-auto-reload“ neu erstellt werden.
  • Es wurde die Möglichkeit hinzugefügt, Vorgänge zu protokollieren, die sich auf die Sicherheit auswirken, z. B. das Ändern des Runlevels, das Starten und Stoppen von Diensten sowie Dienstfehler.
  • Verbesserte Unterstützung für /etc/network/interfaces.

    Source: opennet.ru

Kommentar hinzufügen