Wydanie systemu init GNU Shepherd 0.9

Dwa lata po powstaniu ostatniego znaczącego wydania opublikowano menedżera usług GNU Shepherd 0.9 (dawniej dmd), który jest rozwijany przez twórców dystrybucji GNU Guix System jako alternatywa dla systemu inicjalizacji SysV-init obsługującego zależności . Demon kontroli Shepherd i narzędzia są napisane w języku Guile (jedna z implementacji języka Scheme), który służy również do definiowania ustawień i parametrów uruchamiania usług. Shepherd jest już używany w dystrybucji GuixSD GNU/Linux i ma być również używany w GNU/Hurd, ale może działać na dowolnym systemie operacyjnym zgodnym z POSIX, dla którego dostępny jest język Guile.

Shepherd wykonuje pracę polegającą na uruchamianiu i zatrzymywaniu usług, biorąc pod uwagę relacje między usługami, dynamicznie identyfikując i uruchamiając usługi, od których zależy wybrana usługa. Shepherd obsługuje także wykrywanie konfliktów pomiędzy usługami i zapobieganie ich jednoczesnemu działaniu. Projekt może służyć zarówno jako główny system inicjujący (init z PID 1), jak i w osobnej formie do zarządzania procesami w tle poszczególnych użytkowników (na przykład do uruchamiania tora, privoxy, mcron itp.) z wykonaniem z uprawnieniami tych użytkowników.

Główne innowacje:

  • Wdrożono koncepcję usług tymczasowych (przejściowych), automatycznie wyłączanych po zakończeniu w wyniku zakończenia procesu lub wywołania metody „stop”, która może być wymagana w przypadku usług syntetycznych, których nie można ponownie uruchomić po wyłączeniu.
  • Aby utworzyć usługi typu inetd, dodano procedurę „make-inetd-constructor”.
  • Aby utworzyć usługi aktywowane podczas aktywności sieciowej (w stylu aktywacji gniazda systemowego), dodano procedurę „make-systemd-constructor”.
  • Dodano procedurę uruchamiania usługi w tle - „uruchamianie w tle”.
  • Dodano parametry ":suplementary-groups", "#:create-session" i "#:resource-limits" do procedury "make-forkexec-constructor".
  • Włączono pracę bez blokowania podczas oczekiwania na pliki PID.
  • Dla usług bez parametru „#:log-file” wyprowadzany jest do syslog, natomiast dla usług z parametrem #:log-file log jest zapisywany w osobnym pliku wskazującym czas nagrań. Logi z nieuprzywilejowanego procesu pasterskiego przechowywane są w katalogu $XDG_DATA_DIR.
  • Wsparcie dla budowania z Guile 2.0 zostało przerwane. Problemy podczas korzystania z wersji Guile 3.0.5-3.0.7 zostały rozwiązane.
  • Do działania wymagana jest teraz biblioteka Fibers w wersji 1.1.0 lub nowszej.

Źródło: opennet.ru

Dodaj komentarz