BootProcess > init


Init è il primo programma eseguito dopo che il sistema è avviato e continua a funzionare come processo numero 1 fino a quando il sistema verrà fermato. Il compito di init è di avviare altri programmi che sono essenziali per il funzionamento del sistema, tutti gli altri processi discendono da init.

Panoramica

Il processo di inizializzazione del sistema è gestito dal demone di init. In squeeze e rilasci precedenti tale demone è fornito dal pacchetto sysvinit e non sono supportate alternative. In wheezy il demone init predefinito è ancora sysvinit, ma è disponibile un'"anteprima tecnologica" di systemd. In jessie e stretch il sistema init predefinito è systemd, ma è supportato il passaggio a sysvinit.

A partire da jessie solo systemd è pienamente supportato; sysvinit è supportato per la maggior parte ma ai pacchetti Debian non viene richiesto di fornire script di avvio per sysvinit. Il supporto per sistemi init diversi da systemd è fortemente migliorato in Bullseye. Anche runit è pacchettizzato, ma non ha ricevuto lo stesso livello di test e supporto degli altri e attualmente non è supportato come PID 1. A partire da Bullseye, una raccolta di script di avvio di sysvinit che sono stati rimossi dai rispettivi pacchetti originali è fornita nel pacchetto orphan-sysvinit-scripts.

Determinare il sistema init

In generale si può determinare quale sistema init è installato controllando se il file /sbin/init è un collegamento simbolico. Se non è un collegamento simbolico, allora probabilmente è in uso sysvinit. Se è un collegamento simbolico che punta a /lib/systemd/systemd, allora è in uso systemd. Se è un collegamento simbolico che punta a /lib/sysvinit/init, allora è in unso sysvinit.

Se si sospetta che il sistema init possa essere cambiato senza un riavvio, si può anche usare cat /proc/1/comm per vedere quale nome di comando è stato usato per il demone init durante l'avvio più recente.

Cambiare il sistema init - al momento dell'installazione

Il momento in cui è più facile scegliere un init diverso da systemd è quando si sta installando (dato che i pacchetti di systemd si rifiutano di essere rimossi se systemd è in esecuzione).

Il momento migliore per effettuare il passaggio è dopo la fase ""Selezionare e installare software". Notare che in Bullseye è più difficile fa funzionare senza systemd il desktop GNOME predefinito (perché il suo display manager consueto gdm3 dichiara una dipendenza da libpam-systemd - vedere il bug 991880), perciò se si desidera un ambiente desktop sarà più facile deselezionare GNOME e selezionarne un altro (Xfce, KDE Plasma, LXDE, Cinnamon, MATE e LXQt sono tutti stati testati senza systemd).

Debian Bookworm e successive possono installare gdm3 senza problemi, perciò se si desidera eseguire GNOME basta installare gnome-core dopo aver cambiato l'init. Notare che attualmente ciò è affetto dal bug 1033897.

Una volta completata quella fase, avviare una shell e fare una chroot nel sistema installato digitando chroot /target. Poi si deve dire ad apt di installare il proprio sistema init preferito e, a meno di non usare per nulla un ambiente dekstop, libpam-elogind per fornire le necessarie funzionalità di gestione della sessione con elogind (che sono fornite in un'installazione predefinita da libpam-systemd e systemd). Per esempio, per un init in stile System-V, digitare apt install sysvinit-core libpam-elogind. Ciò installa il nuovo sistema init ed elogind e rimuove systemd, libpam-systemd e gli altri componenti che possono funzionare solamente con systemd. Se apt propone di rimuovere un numero molto grande di pacchetti, allora probabilmente è stato selezionato un ambiente desktop che dipende da systemd; sarà meglio fermarsi a quel punto e ritornare alla selezione dei task per sceglierne un altro.

Una volta fatto, uscire dalla chroot digitando exit, poi ritornare all'installatore (se si stava if you were using a different virtual console by switching back; if you had selected the "Execute a shell" menu option, then by typing exit once more), and resume the installation by moving to the boot loader installation stage, which is typically installing GRUB. You can now complete the installation process as normal.

== Cambiare il sistema init in un sistema già in esecuzione==

In Bullseye, sono supportati diversi sistemi init alternativi (come init in stile System-V e OpenRC). Generalmente per passare da un sistema init ad un altro si installa il nuovo sistema init e si fa il riavvio. L'eccezione è il passaggio via da systemd: i pacchetti di systemd si rifiutano di essere rimossi se systemd è in esecuzione; perciò il processo è un po' più complicato.

In breve, è necessario scariacare i nuovi pacchetti di cui si ha bisogno, passare in modalità single-user, installare questi nuovi pacchetti e poi fare il riavvio. L'approccio raccomandato è il seguentei: prima pulire /var/cache/apt/archives eseguendo apt clean (ciò rende più facile identificare successivamente i pacchetti da installare). Successivamente, far sì che apt scarichi i nuovi pacchetti di cui si ha bisogno, es.: apt --download-only install sysvinit-core libpam-elogind; libpam-elogind (e elogind da cui dipende) forniscono funzionalità di gestione della sessione di cui probabilmente si avrà bisogno in qualsiasi sistema che esegue un ambiente desktop. A questo punto, controllare le azionni proposte da apt e, se vanno bene, lasciare che proceda.

Ora passare in modalità single-user (systemctl rescue) e installare i pacchetti che sono stati scaricati usando apt install /var/cache/apt/archives/*.deb Una volta che ciò è stato fatto, riavviare il sistema.

Configurazione di sysvinit

Il file di configurazione inittab dice ad init cosa fare, in particolare contiene le righe:

id:2:initdefault:

si::sysinit:/etc/init.d/rcS

l2:2:wait:/etc/init.d/rc 2

Che indica al file /etc/init.d/rcS di eseguire l'inizializzazione degli script (in /etc/rcS.d/*), poi gli script per il runlevel richiesto (in /etc/rcS.[0-9]/*).

Ottenere aiuto

Se si incontrano problemi specificatamente associati con l'uso di un sistema init alternativo, esiste una "Debian init system diversity list" che potrebbe essere in grado di aiutare.

Vedere anche