Primo rilascio del sistema di inizializzazione minimalista Nitro

È stata pubblicata la prima versione pubblica del progetto Nitro, che sviluppa un sistema di init minimalista con funzionalità di controllo dell'esecuzione dei processi. Il progetto è guidato da Leah Neukirchen, una delle mantenitrici dei pacchetti nella distribuzione Void Linux. Il codice è scritto in C ed è distribuito con licenza 0BSD.

Nitro può essere utilizzato sia come processo di init (pid 1), sia come un processo non privilegiato che controlla l'esecuzione continua delle applicazioni nello spazio utente e riavvia i compiti in caso di fallimenti. È supportato su Linux e FreeBSD, ed è possibile utilizzarlo in ambienti basati sulla libreria standard C Musl. Tra i settori di applicazione si citano sistemi embedded, immagini di ramdisk (initramfs), contenitori (Docker/Podman/LXC/Kubernetes), oltre a stazioni di lavoro e sistemi server. Per gestire i servizi e interagire con il processo di init è fornuto uno strumento da linea di comando, nitroctl.

Invece dei script di inizializzazione compositi, Nitro adotta un modello che prevede l'estrazione di ogni funzione in script separati. Per ogni servizio nella gerarchia /etc/nitro viene creato un sottocartella, in cui possono essere collocati i seguenti script: setup — contiene i comandi eseguiti prima dell'avvio del servizio; run — definisce lo scenario di avvio del servizio; finish — include i comandi eseguiti dopo il termine del servizio. Per organizzare la registrazione dei log, viene utilizzato un collegamento simbolico chiamato log, che punta a un altro servizio, il quale riceverà l'output. Per disabilitare l'avvio automatico del servizio, basta creare un file con il nome «down» nella sua cartella, mentre per ignorare il servizio, è sufficiente aggiungere il simbolo «@» al nome della cartella.

Il creatore del progetto sottolinea i seguenti vantaggi di Nitro rispetto ad altri sistemi di init:

  • Tutti gli stati sono memorizzati in RAM, semplificando il lavoro in ambienti con partizioni di disco in sola lettura.
  • Architettura basata su eventi, senza utilizzare polling.
  • Assenza di operazioni di allocazione della memoria durante l'esecuzione (tutti i buffer sono allocati all'avvio).
  • Utilizzo limitato dei descrittori di file durante l'esecuzione.
  • Fornito come un singolo file eseguibile autonomo e uno strumento per la gestione del sistema.
  • L'assenza delle fasi di compilazione della configurazione — il funzionamento del servizio è determinato da semplici script nella cartella associata al servizio.
  • Presenza di una funzione di riavvio dei servizi dopo un crash.
  • Meccanismo di logging disponibile, che può essere attivato sia di default sia selettivamente per singoli servizi.
  • Possibilità di costruire una catena di elaborazione dei log che comprende più servizi.
  • Il funzionamento non dipende dall'accuratezza della regolazione dell'orologio di sistema.
  • Supporto per l'avvio su FreeBSD attraverso /etc/ttys.
  • Possibilità di costruire come un file eseguibile miniaturizzato staticamente compilato usando musl libc.

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster