Prima lansare a sistemului minimalist de inițializare Nitro

A fost publicat primul număr public al proiectului Nitro, care dezvoltă un sistem de inițializare minimalist cu funcții de control al execuției proceselor. Proiectul este dezvoltat de Leah Neukirchen, una dintre persoanele care întrețin pachetele în distribuția Void Linux. Codul este scris în limbajul C și este distribuit sub licența 0BSD.

Nitro poate fi utilizat atât ca proces init (pid 1), cât și ca un proces neprivilegiat care controlează execuția continuă a aplicațiilor în spațiul utilizatorului și repornește sarcinile în caz de eșecuri. Suportă funcționarea în Linux și FreeBSD, fiind posibilă utilizarea în medii bazate pe biblioteca standard C Musl. Printre aplicațiile menționate se numără sistemele încorporate, imaginile ram-disk (initramfs), containere (Docker/Podman/LXC/Kubernetes), precum și stațiile de lucru și sistemele server. O utilitate de linie de comandă, nitroctl, este furnizată pentru gestionarea serviciilor și interacțiunea cu procesul init.

În locul scripturilor compuse pentru inițializare, Nitro folosește un model bazat pe separarea fiecărei funcții într-un script distinct. Pentru fiecare serviciu, în ierarhia /etc/nitro se creează un subdirector, în care pot fi plasate următoarele scripturi: setup – conține comenzile care se execută înainte de pornirea serviciului; run – definește scenariul de pornire al serviciului; finish – include comenzile care se execută după încheierea serviciului. Pentru organizarea logării se folosește un link simbolic numit log, care indică un alt serviciu căruia va fi redirecționat output-ul. Pentru a dezactiva pornirea automată a serviciului, este suficient să se creeze în directorul său un fișier numit „down”, iar pentru a ignora serviciul, trebuie adăugat simbolul „@” la numele directorului.

Autorul proiectului subliniază următoarele avantaje ale Nitro în comparație cu alte sisteme de inițializare:

  • Întreaga stare este stocată în RAM, ceea ce simplifică funcționarea în medii cu partiții de disc în modul doar pentru citire.
  • Arhitectura bazată pe procesarea evenimentelor, care nu utilizează poll-ing.
  • Lipsa operațiunilor de alocare a memoriei în timpul execuției (toate buffer-urile sunt alocate la pornire).
  • Utilizarea limitată a descriptorilor de fișiere în timpul execuției.
  • Livrarea într-un singur fișier executabil autosuficient și a unei utilități pentru gestionarea sistemului.
  • Absența etapelor de compilare a configurației — funcționarea serviciului este determinată de scripturi simple din directorul asociat serviciului.
  • Existenta funcției de repornire a serviciilor după o defecțiune.
  • Existenta unui mecanism de logare, care poate fi activat atât în mod implicit, cât și selectiv pentru servicii individuale.
  • Posibilitatea de a construi un lanț de procesare a logurilor, care să cuprindă mai multe servicii.
  • Funcționarea nu depinde de precizia sistemului de oră.
  • Suport pentru pornire în FreeBSD prin /etc/ttys.
  • Posibilitatea de a construi sub forma unui executabil miniatural, compilat static cu musl libc.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster