Avaldatud on Nitro projekti esimene avalik väljaanne, mis arendab minimalistlikku algsüsteemi protsesside täitmise kontrolli funktsioonidega. Projekti arendab Leah Neukirchen, üks Void Linuxi pakette toetavatest arendajatest. Kood on kirjutatud C keeles ja jagatakse 0BSD litsentsi alusel.
Nitro saab kasutada nii init-protsessina (pid 1) kui ka privileegideta protsessina, mis jälgib rakenduste sujuvat täitmist kasutaja ruumis ja taaskäivitab ülesandeid tõrgete korral. Toetatakse tööd Linuxis ja FreeBSD-s, võimalik on kasutada keskkondades, mis põhinevad standardse C-raamatukogul Musl. Rakendamisvõimalusteks on mainitud sisseehitatud süsteemid, ram-diskide (initramfs), konteinerite (Docker/Podman/LXC/Kubernetes), samuti tööjaamad ja serverisüsteemid. Teenuste haldamiseks ja init-protsessiga suhtlemiseks tarnitakse käsurea utiliit nitroctl.
Nitros kasutatakse algsüsteemide koostisosade skriptide asemel mudelit, mis põhineb iga funktsiooni eraldi skripti väljatoomisel. Iga teenuse jaoks luuakse hierarhias /etc/nitro alamkaust, kuhu võib paigutada järgmised skriptid: setup — sisaldab käske, mis täidetakse enne teenuse käivitamist; run — määratleb teenuse käivitamise stsenaariumi; finish — sisaldab käske, mis täidetakse teenuse lõpetamise järel. Logide haldamiseks kasutatakse sümboolset linki nimega log, mis suunab väljundi teisele teenusele. Teenuse automaatse käivitamise keelamiseks piisab, kui luua selle kaustas fail nimega "down", ning teenuse ignoreerimiseks tuleb kausta nimele lisada sümbol "@".
Projekti autor toob välja Nitro eelised võrreldes teiste algsüsteemidega:
- Kõik olekud salvestatakse RAM-i, mis lihtsustab tööd lugemiseks ainult jõudude jagunevate osadega.
- Sündmustele reageerimise arhitektuur, mis ei kasuta pingutamisrežiimi (polling).
- Töötamise ajal ei esine mälu eraldamise operatsioone (kõik puhverid eraldatakse käivitamisel).
- Töötamise ajal on failide descriptorite piiratud kasutamine.
- Tarnitakse ühe iseseisva täitmisfailina ja süsteemi haldamiseks mõeldud utiliidina.
- Konfiguratsiooni kompileerimise etappe ei ole — teenuse tööd määravad lihtsad skriptid teenusega seotud kaustas.
- Saadaval on teenuste taaskäivitamise funktsioon tõrgete korral.
- Logide haldamiseks on mehhanism, mis võib olla vaikimisi lubatud või valikuliselt teatud teenuste jaoks.
- Võimalus ehitada logide töötlemise ahelat, mis hõlmab mitmeid teenuseid.
- Töö ei sõltu süsteemi kellade täpsusest.
- Toetamine FreeBSD käivitamiseks läbi /etc/ttys.
- Võimalus koostada miniatuurne staatiliselt kompileeritud täitmisfail, kasutades musl libc.
Allikas: opennet.ru
