OpenRC
OpenRC è un sistema di inizializzazione (init system) basato su dipendenze e sviluppato per sistemi operativi Unix-like. Fu creato da Roy Marples, uno sviluppatore NetBSD attivo anche nel progetto Gentoo. [1] [2]
Autore(i) originale(i) | Roy Marples |
---|---|
Sviluppatore(i) | Sviluppatori OpenRC |
Versione iniziale | 5 Aprile 2007 |
Nato proprio come sistema di init nativo per Gentoo è stato poi adottato da molte altre distribuzioni a seguito della loro decisione di abbandonarre systemd . [3] [4] [5]
OpenRC avvia i servizi di sistema necessari nell'ordine corretto all'avvio, li gestisce mentre il sistema è in uso, e li termina allo spegnimento. Può supervisionare i processi che avvia, ed ha la possibilità di avviare processi in parallelo - quando possibile - per ridurre i tempi d'avvio.

Diffusione
OpenRC è il sistema di inizializzazione adottato da questo distribuzioni GNU/Linux:
OpenRC è disponibile opzionalmente per:
- Artix Linux (alcuni lo considerano la scelta predefinita [6] )
- Devuan [7]
- Parabola GNU/Linux-libre
Progetto
OpenRC è costituito da diversi componenti modulari, i principali dei quali sono un init (facoltativo), il sistema di gestione delle dipendenze di base e un supervisore del demone (facoltativo). È scritto in C e in una shell compatibile con POSIX, il che lo rende utilizzabile sui sistemi BSD e Linux.
La parte principale di OpenRC gestisce la gestione delle dipendenze e l'analisi degli script di inizializzazione. OpenRC funziona eseguendo la scansione dei livelli di esecuzione, creando un grafico delle dipendenze e quindi avviando gli script di servizio necessari. Termina una volta avviati gli script. Per impostazione predefinita, OpenRC utilizza una versione modificata di start-stop-daemon per la gestione dei daemon. [8]
Gli script init presentano somiglianze con gli script utilizzati in sysvinit, ma offrono diverse funzionalità per semplificarne la creazione. Si presume che gli script abbiano start()
, stop()
e status()
; e il sistema utilizza variabili già dichiarate per creare le funzioni predefinite. [9] La funzione depend viene utilizzata per dichiarare dipendenze da altri servizi che verrebbero eseguite con le intestazioni LSB in sysvinit. La configurazione e il meccanismo sono separati tramite file di configurazione nella directory conf.d e file init nella directory init.d.
Openrc-init è apparso per la prima volta nella versione 0.25 come sostituto opzionale di <code about="#mwt81" class="mw-highlight mw-highlight-lang-text mw-content-ltr" data-cx="[{"adapted":true,"partial":true,"targetExists":true,"mandatoryTargetParams":["codice"],"optionalTargetParams":["linguaggio"]}]" data-mw="{"name":"syntaxhighlight","attrs":{"lang":"text","class":"","id":"","style":"","inline":"1"},"body":{"extsrc":"/sbin/init"},"parts":[{"template":{"target":{"wt":"Codice","href":"./Template:Codice"},"params":{"1":{"wt":"/sbin/init"}},"i":0}}]}" data-ve-no-generated-contents="true" dir="ltr" id="mwYA" style="" typeof="mw:Extension/syntaxhighlight mw:Transclusion">/sbin/init</code> . Questo può sostituire il sistema init predefinito di Gentoo Linux, sysvinit. [10]
Supervise-daemon è apparso per la prima volta nella versione 0.21, offrendo funzionalità di supervisione a OpenRC. Può essere abilitato nello script init per supervise-daemon per avviare e monitorare un demone. Sono supportati diversi altri supervisori di daemon, tra cui runit [11] e s6 . [12]
Caratteristiche
- Portabilità tra Linux, FreeBSD e NetBSD
- Supporto per cgroups.
- Supervizione dei processi.
- Avvio basato su dipendenze, con avvio dei servizi in parallelo.
- Risoluzione e riordine automatico delle dipendenze.
- Initscripts inizializzati dall'hardware.
- Impostazione dei valori ulimit e nice per servizio attraverso la variabile rc_ulimit.
- Permette script d'init complessi che avviano più componenti (Samba [smbd and nmbd], NFS [nfsd, portmap, etc.])
- Architettura modulare, adatta all'infrastruttura preesistente.
- OpenRC ha il suo sistema d'init chiamato openrc-init opzionale
- OpenRC ha il suo supervisore dei processi opzionale
- a
Note
- ^ GitHub, https://github.com/OpenRC/openrc/blob/master/HISTORY.md . URL consultato il 6 April 2020.
- ^ netbsd.org, https://www.netbsd.org/people/developers.html . URL consultato il 6 April 2020.
- ^ distrowatch.com, https://distrowatch.com/weekly.php?issue=20150601 . URL consultato il 4 aprile 2020.
- ^ kompulsa.com, https://www.kompulsa.com/2018/02/23/5-differences-trueos-linux/ . URL consultato il 6 April 2020.
- ^ trueos.org, https://www.trueos.org/blog/improving-trueos-openrc/ . URL consultato il 6 April 2020.
- ^ (EN) forum.artixlinux.org, https://forum.artixlinux.org/index.php/topic,1769.0.html . URL consultato il 30 ottobre 2023.
- ^ (EN) devuan.org, https://www.devuan.org/os/announce/ascii-stable-announce-060818 . URL consultato il 18 gennaio 2021.
- ^ GitHub, https://github.com/OpenRC/openrc/blob/master/user-guide.md#start-stop-daemon . URL consultato il 6 April 2020.
- ^ GitHub, https://github.com/OpenRC/openrc/blob/master/service-script-guide.md#the-default-functions . URL consultato il 6 April 2020.
- ^ wiki.gentoo.org, https://wiki.gentoo.org/wiki/OpenRC/openrc-init .
- ^ GitHub, https://github.com/OpenRC/openrc/blob/master/runit-guide.md . URL consultato il 6 April 2020.
- ^ GitHub, https://github.com/OpenRC/openrc/blob/master/s6-guide.md . URL consultato il 6 April 2020.