Dostępny system inicjalizacji Finit 4.0

Po około trzech latach rozwoju opublikowano wydanie systemu inicjalizacji Finit 4.0 (Fast init), opracowanego jako prosta alternatywa dla SysV init i systemd. Projekt opiera się na rozwiązaniach stworzonych w wyniku inżynierii wstecznej systemu inicjalizacji fastinit używanego w oprogramowaniu Linux netbooków EeePC i charakteryzującego się bardzo szybkim procesem uruchamiania. System jest przeznaczony przede wszystkim do uruchamiania systemów kompaktowych i wbudowanych, ale może być również używany w konwencjonalnych środowiskach stacjonarnych i serwerowych. Przygotowano przykładowe skrypty implementacyjne dla Void Linux, Alpine Linux i Debian GNU/Linux. Kod projektu napisany jest w języku C i jest rozpowszechniany na licencji MIT.

Finit obsługuje poziomy działania w stylu init SysV, monitoruje stan procesów w tle (automatyczne ponowne uruchomienie usługi w przypadku awarii), wykonuje jednorazowe procedury obsługi, uruchamia usługi z uwzględnieniem zależności i dowolnych warunków, dołącza dodatkowe procedury obsługi do uruchomienia przed lub po wykonanie usługi. Można na przykład skonfigurować usługę tak, aby była uruchamiana dopiero po udostępnieniu dostępu do sieci lub po uruchomieniu innej usługi, takiej jak syslogd. Cgroups v2 służy do ustawiania ograniczeń.

Aby rozszerzyć funkcjonalność i dostosować się do swoich potrzeb, można zastosować wtyczki, dla których udostępniono system hooków pozwalający na dołączenie handlera do różnych etapów ładowania i wykonywania usług, a także zapewnienie powiązania ze zdarzeniami zewnętrznymi. Przygotowano np. wtyczki obsługujące D-Bus, ALSA, netlink, resolvconf, hot plugling urządzeń, sprawdzanie dostępności i ładowanie modułów jądra, przetwarzanie plików PID oraz konfigurowanie środowiska dla serwera X.

Obsługiwane jest użycie standardowych skryptów do uruchamiania usług stworzonych dla SysV init (/etc/rc.d i /etc/init.d nie są używane, ale obsługę /etc/inittab można zaimplementować poprzez wtyczkę), a także skrypty rc.local, pliki ze zmiennymi ustawień środowiskowych i sieciowych /etc/network/interfaces, jak w Debianie i BusyBox. Ustawienia można zdefiniować w jednym pliku konfiguracyjnym /etc/finit.conf lub rozdzielić na kilka plików w katalogu /etc/finit.d.

Zarządzanie odbywa się poprzez standardowe narzędzia initctl i run-parts, które umożliwiają aktywację i dezaktywację usług w zależności od poziomów uruchomienia, a także selektywne uruchamianie niektórych usług. Finit zawiera także wbudowaną implementację getty (zarządzanie terminalem i logowaniem użytkownika), watchdog do monitorowania stanu systemu oraz tryb odzyskiwania po awarii z wbudowanym suloginem do uruchamiania izolowanej powłoki poleceń.

Dostępny system inicjalizacji Finit 4.0

Wśród zmian dodanych w wersji Finit 4.0 (wersja 3.2 została pominięta ze względu na zmiany naruszające kompatybilność wsteczną):

  • Oddzielne narzędzie do ponownego uruchamiania zostało zastąpione dowiązaniem symbolicznym do initctl, podobnym do narzędzi halt, Shutdown, Poweroff i Suspens.
  • Wprowadzono sygnalizację postępu operacji.
  • Działanie poleceń „inictl cond set|clear COND” zostało zmienione, aby powiązać akcje z różnymi zdarzeniami. Składnia używana do identyfikacji usług to zamiast wiązać się ze ścieżkami .
  • Usunięto wbudowaną implementację serwera inetd, na którym w razie potrzeby można zainstalować xinetd.
  • Dodano obsługę cgroups v2 do uruchamiania usług w oddzielnych grupach cgroups.
  • Dodano tryb odzyskiwania po awarii z własnym susloginem.
  • Dodano obsługę skryptów start/stop z init SysV.
  • Dodano procedury obsługi pre:script i post:script, które umożliwiają określenie działań wykonywanych przed lub po uruchomieniu usługi.
  • Dodano obsługę env:file ze zmiennymi środowiskowymi.
  • Dodano możliwość śledzenia dowolnych plików PID.
  • Dodano możliwość uruchamiania zadań i usług przy użyciu ścieżek względnych.
  • Dodano opcję „-b” do initctl, aby wykonywać akcje w trybie nieinteraktywnym (tryb wsadowy).
  • Wbudowany watchdog został zastąpiony osobną wersją watchdogd.
  • Dodano wtyczkę umożliwiającą automatyczne ładowanie modułów jądra dla urządzeń podłączonych podczas pracy.
  • Dodano wtyczkę do obsługi pliku /etc/modules-load.d/.
  • Dodano obsługę automatycznego ponownego uruchamiania usług po zmianie ustawień, co pozwala obejść się bez ręcznego wykonywania polecenia „initctl reload”. Domyślnie wyłączone i wymaga przebudowania za pomocą „./configure --enable-auto-reload”.
  • Dodano możliwość rejestrowania operacji mających wpływ na bezpieczeństwo, takich jak zmiana poziomu działania, uruchamianie i zatrzymywanie usług oraz awarie usług.
  • Ulepszona obsługa /etc/network/interfaces.

    Źródło: opennet.ru

Dodaj komentarz