Byla publikována první veřejná verze projektu Nitro, který vyvíjí minimalistický init systém s funkcemi pro řízení provádění procesů. Projekt vyvíjí Leah Neukirchen, jedna ze správců balíčků pro distribuci Void. Linux. Код написан на языке Си и распространяется под лицензий 0BSD.
Nitro может применяться как в качестве init-процесса (pid 1), так и в форме непривилегированного процесса, контролирующего бесперебойное выполнение приложений в пространстве пользователя и перезапускающего задачи в случае сбоев. Поддерживается работа в Linux и FreeBSD, возможно применение в окружениях на базе стандартной Си-библиотеки Musl. В качестве областей применения упоминаются встраиваемые системы, образы ram-дисков (initramfs), контейнеры (Docker/Podman/LXC/Kubernetes), а также рабочие станции и серверные системы. Для управления работой сервисов и взаимодействия с init-процессом поставляется утилита командной строки nitroctl.
Místo složených inicializačních skriptů používá Nitro model založený na přesunutí každé funkce do samostatného skriptu. Pro každou službu v hierarchii /etc/nitro je vytvořen podadresář, který může obsahovat následující skripty: setup - obsahuje příkazy spuštěné před spuštěním služby; run - definuje spouštěcí skript služby; finish - obsahuje příkazy spuštěné po dokončení služby. Pro organizaci logování se používá symbolický odkaz s názvem log, který ukazuje na jinou službu, na kterou bude výstup přesměrován. Pro zakázání automatického spuštění služby stačí v jejím adresáři vytvořit soubor s názvem „down“ a pro ignorování služby přidat k názvu adresáře symbol „@“.
Autor projektu uvádí následující výhody Nitra ve srovnání s jinými inicializačními systémy:
- Veškerý stav je uložen v paměti RAM, což usnadňuje práci v prostředích s diskovými oddíly pouze pro čtení.
- Architektura založená na událostech, která nepoužívá dotazování.
- Žádné operace alokace paměti během provozu (všechny vyrovnávací paměti jsou alokovány při spuštění).
- Omezené použití deskriptorů souborů během provozu.
- Dodáváno ve formě jednoho samostatného spustitelného souboru a utility pro správu systému.
- Žádné fáze kompilace konfigurace – provoz služby je definován jednoduchými skripty v adresáři souvisejícím se službou.
- Dostupnost funkce pro restartování služeb po selhání.
- Přítomnost mechanismu protokolování, který lze povolit buď ve výchozím nastavení, nebo selektivně pro jednotlivé služby.
- Možnost vybudování řetězce zpracování kulatiny, který zahrnuje několik služeb.
- Provoz nezávisí na přesnosti systémových hodin.
- Podpora spouštění na FreeBSD přes /etc/ttys.
- Možnost sestavení jako malý staticky kompilovaný spustitelný soubor pomocí knihovny musl libc.
Zdroj: opennet.ru
