Na ongeveer drie jaar ontwikkeling is de release van het Finit 4.0 (Fast init) initialisatiesysteem gepubliceerd, dat is ontwikkeld als een eenvoudige alternatief voor SysV init en systemd. Het project is gebaseerd op het reverse engineering van het fastinit-initialisatiesysteem dat wordt gebruikt in de Linux-firmware van netbooks zoals de EeePC en dat bekend staat om zijn zeer snelle opstartproces. Het systeem richt zich in de eerste plaats op het opstarten van compacte en ingebedde systemen, maar kan ook worden gebruikt in gewone desktop- en serveromgevingen. Voorbeelden van implementaties zijn voorbereid voor Void Linux, Alpine Linux en Debian GNU/Linux. De projectcode is geschreven in de programmeertaal C en wordt verspreid onder de MIT-licentie.
Finit ondersteunt uitvoeringsniveaus (runlevels) in de stijl van SysV init, bewaakt de betrouwbaarheid van achtergrondprocessen (automatisch opnieuw starten van een service bij een storing), voert eenmalige handlers uit, start services met inachtneming van afhankelijkheden en willekeurige voorwaarden, en voegt extra handlers toe die moeten draaien vóór of na de uitvoering van een service. Bijvoorbeeld, je kunt het starten van een service configureren zodat dit pas gebeurt na netwerktoegang of nadat een andere service, zoals syslogd, is gestart. Voor het instellen van beperkingen worden Cgroups v2 toegepast.
Om de functionaliteit uit te breiden en aan te passen aan je behoeften, kunnen plugins worden gebruikt, waarvoor een systeem van hooks wordt aangeboden om een handler aan verschillende fasen van het opstarten en uitvoeren van services te koppelen, en om binding met externe gebeurtenissen te verzekeren. Bijvoorbeeld, plugins zijn voorbereid ter ondersteuning van D-Bus, ALSA, netlink, resolvconf, hotplug van apparaten, controle van beschikbaarheid en het laden van kernelmodules, het verwerken van PID-bestanden en het instellen van de omgeving voor de X-server.
Er wordt ondersteuning geboden voor het gebruik van standaard scripts voor het starten van services, gemaakt voor SysV init (/etc/rc.d en /etc/init.d worden niet gebruikt, maar ondersteuning voor /etc/inittab kan via een plugin worden gerealiseerd), evenals rc.local-scripts, omgevingsvariabelenbestanden en netwerkconfiguraties in /etc/network/interfaces, zoals in Debian en BusyBox. Instellingen kunnen zowel gedefinieerd worden in één configuratiebestand (/etc/finit.conf) als verspreid over meerdere bestanden in de directory /etc/finit.d.
Het beheer geschiedt via de gebruikelijke tools initctl en run-parts, waarmee services kunnen worden geactiveerd en gedeactiveerd in relatie tot de runlevels, en selectief een deel van de services kan worden gestart. Finit bevat ook een ingebouwde implementatie van getty (terminalbeheer en gebruikersinvoer), een watchdog voor het bewaken van de werking en een herstelmodus na een storing met een ingebouwde sulogin voor het opstarten van een geïsoleerde commandoregel.

Onder de wijzigingen die zijn toegevoegd in de release van Finit 4.0 (versie 3.2 werd overgeslagen vanwege wijzigingen die de achterwaartse compatibiliteit verstoren):
- De aparte reboot-hulpprogramma is vervangen door een symbolische link naar initctl, vergelijkbaar met de hulpprogramma’s halt, shutdown, poweroff en suspend.
- Er is een voortgangsindicatie van de uitvoering van bewerkingen geïmplementeerd.
- De werking van de commando's «inictl cond set|clear COND» is gewijzigd voor het koppelen van acties aan verschillende gebeurtenissen. Voor de identificatie van services is de syntaxis gebruikt in plaats van de koppeling aan paden .
- De ingebouwde implementatie is verwijderd. de server inetd, waarvoor xinetd kan worden geïnstalleerd indien nodig.
- Ondersteuning voor cgroups v2 is toegevoegd voor het starten van services in afzonderlijke cgroups.
- Er is een herstelmodus na een storing toegevoegd met een eigen suslogin.
- Ondersteuning voor start/stop scripts van SysV init is toegevoegd.
- Pre:script en post:script handlers zijn toegevoegd, waarmee je eigen acties kunt opgeven die vóór of tijdens het starten van de service worden uitgevoerd.
- Ondersteuning voor env:file met omgevingsvariabelen is toegevoegd.
- De mogelijkheid om willekeurige PID-bestanden te volgen is toegevoegd.
- De mogelijkheid om taken en services te starten met relatieve paden is toegevoegd.
- In initctl is de optie «-b» toegevoegd voor het uitvoeren van acties in niet-interactieve modus (batch mode).
- De ingebouwde watchdog is vervangen door een aparte variant watchdogd.
- Een plugin voor automatische belasting van kernelmodules voor apparaten die tijdens de werking worden aangesloten is toegevoegd.
- Een plugin voor de verwerking van /etc/modules-load.d/ is toegevoegd.
- Ondersteuning voor het automatisch herstarten van services na wijzigingen in de configuratie is toegevoegd, zodat handmatige uitvoering van het commando «initctl reload» overbodig is. Standaard uitgeschakeld en vereist herbouw met «./configure --enable-auto-reload».
- De mogelijkheid om een logboek bij te houden van operaties die invloed hebben op de veiligheid, zoals het wijzigen van het runlevel, het starten en stoppen van services en storingen van services, is toegevoegd.
- Verbeterde ondersteuning voor /etc/network/interfaces.
Bron: opennet.ru
