Po téměř třech letech vývoje byla zveřejněna verze systému inicializace Finit 4.0 (Fast init), vyvíjeného jako jednoduchá alternativa k SysV init a systemd. Projekt je založen na pracích vytvořených při reverzním inženýrství systému inicializace fastinit, používaného v linuxovém firmwaru netbooků EeePC a vyznačujícího se velmi rychlým procesem bootování. Systém je primárně zaměřen na zajištění spouštění kompaktních a vestavěných systémů, ale může být také použit pro běžné desktopové a serverové prostředí. Příklady scénářů pro implementaci byly připraveny pro Void Linux, Alpine Linux a Debian GNU/Linux. Kód projektu je napsán v jazyce C a je šířen pod licencí MIT.
Finit podporuje úrovně běhu (runlevel) ve stylu SysV init, sledování funkčnosti na pozadí (automatické restartování služby v případě selhání), provádění jednorázových zpracovatelů, spuštění služeb s ohledem na závislosti a libovolné podmínky, připojení dalších zpracovatelů pro spuštění před nebo po provedení služby. Například lze nastavit spuštění služby pouze po získání přístupu k síti nebo po spuštění jiné služby, jako je syslogd. Pro nastavení omezení se používají Cgroups v2.
Pro rozšíření funkcionality a přizpůsobení svým potřebám mohou být použity pluginy, pro které je k dispozici systém hooků, umožňující připojit zpracovatele na různé fáze spouštění a provádění služeb, a také zajistit vazbu na externí události. Například byly připraveny pluginy pro podporu D-Bus, ALSA, netlink, resolvconf, horké připojení zařízení, kontrolu dostupnosti a načítání modulů jádra, zpracování PID souborů a nastavení prostředí pro X-server.
Podporuje se použití standardních skriptů pro spouštění služeb, vytvořených pro SysV init (/etc/rc.d a /etc/init.d se nepoužívají, ale podpora /etc/inittab může být realizována prostřednictvím pluginu), jakož i skriptů rc.local, souborů s proměnnými prostředí a síťových nastavení /etc/network/interfaces, jak v Debianu a BusyBox. Nastavení mohou být určena v jednom konfiguračním souboru /etc/finit.conf nebo rozdělena do několika souborů v adresáři /etc/finit.d.
Správa se provádí prostřednictvím typového nástroje initctl a run-parts, který umožňuje aktivovat a deaktualizovat služby v závislosti na úrovních spuštění, a také selektivně spouštět část služeb. Součástí Finit je také vestavěná implementace getty (správa terminálu a přihlášení uživatelů), watchdog pro sledování funkčnosti a režim obnovení po havárii se zabudovaným sulogin pro spuštění izolovaného příkazového prostředí.

Mezi změnami přidanými v vydání Finit 4.0 (verze 3.2 byla vynechána z důvodu změn narušujících zpětnou kompatibilitu):
- Samostatný nástroj reboot byl nahrazen symbolickým odkazem na initctl podobně jako nástroje halt, shutdown, poweroff a suspend.
- Byla implementována indikace pokroku při provádění operací.
- Byla změněna funkce příkazů „inictl cond set|clear COND“ pro vázání akcí na různé události. Pro identifikaci služeb je použit syntax <pid/foo:id> namísto vazby na cesty <svc/path/to/foo>.
- Byla odstraněna vestavěná implementace serveru inetd, kterou lze v případě potřeby nahradit xinetd.
- Byla přidána podpora cgroups v2 pro spuštění služeb v samostatných cgroup.
- Byl přidán režim obnovení po havárii se svým suslogin.
- Byla přidána podpora start/stop skriptů od SysV init.
- Byly přidány zpracovatele pre:script a post:script, které umožňují specifikovat vlastní akce prováděné před nebo při spuštění služby.
- Byla přidána podpora env:file s proměnnými prostředí.
- Byla přidána možnost sledování libovolných PID souborů.
- Byla přidána možnost spouštění úloh a služeb s použitím relativních cest.
- Do initctl byla přidána možnost „-b“ pro provádění akcí v neinteraktivním režimu (batch mode).
- Vestavěný watchdog byl nahrazen samostatnou verzí watchdogd.
- Byl přidán plugin pro automatické načítání modulů jádra pro zařízení připojená během práce.
- Byl přidán plugin pro zpracování /etc/modules-load.d/.
- Byla přidána podpora automatického restartu služeb po změně nastavení, což umožňuje obejít ruční provádění příkazu „initctl reload“. Ve výchozím nastavení je vypnuto a vyžaduje přepracování s „./configure —enable-auto-reload“.
- Byla přidána možnost vedení logu operací, které ovlivňují bezpečnost, jako je změna runlevelu, spouštění a zastavení služeb, havárie služeb.
- Byla zlepšena podpora /etc/network/interfaces.
Zdroj: opennet.ru
