3 581
contributi
Nessun oggetto della modifica |
(cambiato avviso, visto che Jessie è ora la LTS e SysV è "legacy") |
||
(12 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili| | {{Versioni compatibili|Jessie|Stretch|Buster}} | ||
== Struttura == | |||
Debian storicamente aveva scelto come proprio [[init|sistema di init]] il '''SysV''', che si distingue per la propria semplicità e potenza, in maniera analoga a buona parte delle altre distribuzioni GNU/Linux. | |||
Infatti, è basata su degli script sensibili a determinate azioni, che vengono linkati a delle directory predefinite (rappresentanti determinati [[runlevel]] ovvero livelli o stati a cui si trova la macchina). | |||
Tuattavia a partire da Debian 8 ([[Jessie]]), tale sistema è stato rimpiazzato di default da [[systemd]], il nuovo default nel mondo GNU/Linux. Systemd è comunque in grado di leggere gli script in <code>/etc/init.d</code>, ma ignora il file <code>/etc/inittab</code>, per cui tutto ciò che è lì scritto non avrebbe alcun effetto. | |||
Questa guida si considera interamente compatibile con versioni più recenti di Debian solo installando il pacchetto '''sysvinit-core'''. Per farlo, sostituendo systemd o qualunque altro sistema di init installato, è sufficiente con [[privilegi di amministrazione]]: | |||
Debian | <pre> | ||
# apt install sysvinit-core | |||
</pre> | |||
Si tenga a mente però che non tutti i pacchetti potrebbero essere installabili, in particolari quelli che si appoggiano alle librerie di '''systemd'''. Si raccomanda pertanto di partire da un'installazione minima, installando solo l'occorrente, anziché ambienti desktop completi con tutte le loro dipendenze e tutti i pacchetti raccomandati. | |||
Esaminiamo ora nel dettaglio la struttura di questo interessante sistema, così da capire meglio cosa avviene esattamente al boot della macchina quando si utilizza tale sistema. | |||
== Gli script di <code>init.d</code> == | == Gli script di <code>init.d</code> == | ||
Nella directory <code>/etc/init.d</code> sono presenti degli script particolari: il loro compito è quello di gestire i demoni (o servizi, che dir si voglia) quindi di avviarli, fermarli, far rileggere i file di configurazione, controllarne lo stato, nel modo più semplice e comodo. | Nella directory <code>/etc/init.d</code> sono presenti degli script particolari: il loro compito è quello di gestire i demoni (o servizi, che dir si voglia) quindi di avviarli, fermarli, far rileggere i file di configurazione, controllarne lo stato, nel modo più semplice e comodo. | ||
Riga 14: | Riga 22: | ||
A questi si aggiungono, poi: | A questi si aggiungono, poi: | ||
; <code>reload</code> : permette la rilettura del file di configurazione; | ; <code>reload</code> : permette la rilettura del file di configurazione; | ||
; <code>force-reload</code> : come sopra, ma in maniera forzata; | ; <code>force-reload</code> : come sopra, ma in maniera forzata; | ||
; <code>status</code> : mostra a video lo stato | ; <code>status</code> : mostra a video lo stato del demone. | ||
Si noti che non sempre c'è differenza tra le azioni <code>restart</code>, <code>reload</code> e <code>force-reload</code>. | |||
Sapere come funziona uno script contenuto in <code>/etc/init.d</code> è utile, in quanto ci permette di utilizzarli anche da shell. | Sapere come funziona uno script contenuto in <code>/etc/init.d</code> è utile, in quanto ci permette di utilizzarli anche da shell. | ||
Infatti, se ad esempio volessimo far partire Apache, sarebbe necessario lanciare un semplice: | Infatti, se ad esempio volessimo far partire Apache, sarebbe necessario lanciare un semplice: | ||
<pre> | <pre> | ||
# /etc/init.d/apache start | # /etc/init.d/apache2 start | ||
</pre> | |||
ed il gioco è fatto. | |||
Si consiglia però di ricorrere sempre al comando <code>service</code>, in quanto funziona a prescindere dal sistema di init installato e si occupa di avviare lo script in un ambiente pulito. Quindi per esempio per avviare <code>apache2</code> basterà: | |||
<pre> | |||
# service apache start | |||
</pre> | </pre> | ||
== I vari <code>rcX.d</code> == | == I vari <code>rcX.d</code> == | ||
Come accennato nell'introduzione, gli script sono linkati in alcune directory 'speciali', che ora analizzeremo. | Come accennato nell'introduzione, gli script sono linkati in alcune directory 'speciali', che ora analizzeremo. | ||
I nomi di queste directory sono sempre nella forma <code>rcX.d</code>, dove X rappresenta uno stato tra quelli seguenti: | I nomi di queste directory sono sempre nella forma <code>rcX.d</code>, dove X rappresenta uno stato (''runlevel'') tra quelli seguenti: | ||
=== "0" Shutdown === | === "0" Shutdown === | ||
Riga 69: | Riga 81: | ||
:; <code>sysinit</code> : il comando viene eseguito durante il boot del sistema, prima di ogni comando con azione uguale a <code>boot</code>; | :; <code>sysinit</code> : il comando viene eseguito durante il boot del sistema, prima di ogni comando con azione uguale a <code>boot</code>; | ||
;: <code>ctrlaltdel</code> : cosa deve essere fatto quando si riceve il segnale <code>SIGINT</code>; | ;: <code>ctrlaltdel</code> : cosa deve essere fatto quando si riceve il segnale <code>SIGINT</code>; | ||
;: <code>kbrequest</code> : cosa deve essere fatto quando si riceve il segnale <code>SIGWINCH</code>; | |||
; <code>comando</code> : il comando da eseguire. | ; <code>comando</code> : il comando da eseguire. | ||
Riga 96: | Riga 109: | ||
~~:S:wait:/sbin/sulogin | ~~:S:wait:/sbin/sulogin | ||
</pre> | </pre> | ||
==== Comportamento per ogni Runlevel ==== | ==== Comportamento per ogni Runlevel ==== | ||
Riga 131: | Riga 143: | ||
È possibile disattivare questa caratteristica commentando la riga. | È possibile disattivare questa caratteristica commentando la riga. | ||
Si noti che all'interno di una sessione grafica la sequenza è in genere intercettata dal server grafico e pertanto non avrà effetto. È necessario passare prima a un terminale virtuale, premendo <code>CTRL-ALT-F1</code>. | |||
==== Pressione di <code>ALT + FrecciaSu</code> ==== | |||
<pre> | |||
# Action on special keypress (ALT + UpArrow) | |||
#kb1:12345:kbrequest:command... | |||
</pre> | |||
Decommentare la riga, rimuovendo il carattere <code>#</code> prima di <code>kb1</code>, e scrivere il percorso assoluto del comando da eseguire quando si preme <code>ALT + FrecciaSu</code>. | |||
Come per <code>CTRL-ALT-CANC</code> questa sequenza è intercettata dal server grafico all'interno di una sessione grafica. È necessario prima passare a un terminale virtuale. | |||
==== Gestione delle Console ==== | ==== Gestione delle Console ==== | ||
Riga 173: | Riga 196: | ||
==== Sintassi ==== | ==== Sintassi ==== | ||
La sintassi del comando è suddivisibile in tre varianti: | La sintassi del comando è suddivisibile in tre varianti: | ||
<pre> | <pre> | ||
update-rc.d [-n] [-f] name remove | # update-rc.d [-n] [-f] name remove | ||
</pre> | </pre> | ||
consente la rimozione di tutti i link nei runlevel relativi al demone <code>''name''</code> | consente la rimozione di tutti i link nei runlevel relativi al demone <code>''name''</code> | ||
Riga 183: | Riga 205: | ||
<pre> | <pre> | ||
update-rc.d [-n] name defaults [NN | NN-start NN-stop] | # update-rc.d [-n] name defaults [NN | NN-start NN-stop] | ||
</pre> | </pre> | ||
crea il link di avvio allo script <code>'''/etc/init.d/''name''''''</code> secondo i [[#Valori di default | valori di default]]. È possibile sovrascrivere l'ordine con cui verrà eseguito lo script specificando le due cifre (<code>''NN''</code>), inoltre è possibile fornire valori diversi sia per l'avvio (<code>''NN-start''</code>) che per l'arresto (<code>''NN-stop''</code>). | crea il link di avvio allo script <code>'''/etc/init.d/''name''''''</code> secondo i [[#Valori di default | valori di default]]. È possibile sovrascrivere l'ordine con cui verrà eseguito lo script specificando le due cifre (<code>''NN''</code>), inoltre è possibile fornire valori diversi sia per l'avvio (<code>''NN-start''</code>) che per l'arresto (<code>''NN-stop''</code>). | ||
<pre> | <pre> | ||
update-rc.d [-n] name start|stop NN runlevel runlevel ... . start|stop NN runlevel runlevel ... . ... | # update-rc.d [-n] name start|stop NN runlevel runlevel ... . start|stop NN runlevel runlevel ... . ... | ||
</pre> | </pre> | ||
crea il link di avvio|arresto allo script <code>''name''</code> specificando l'ordine (<code>''NN''</code>) e il/i runlevel. Il carattere <code>''.''</code> separa dichiarazioni multiple. | crea il link di avvio|arresto allo script <code>''name''</code> specificando l'ordine (<code>''NN''</code>) e il/i runlevel. Il carattere <code>''.''</code> separa dichiarazioni multiple. | ||
Vengono riportati alcuni esempi pratici (script <code>''xdm''</code>): | Vengono riportati alcuni esempi pratici (script <code>''xdm''</code>): | ||
Riga 199: | Riga 219: | ||
Link per l'avvio: | Link per l'avvio: | ||
<pre> | <pre> | ||
update-rc.d xdm start 99 2 3 4 5 | # update-rc.d xdm start 99 2 3 4 5 | ||
</pre> | </pre> | ||
Link per l'arresto: | Link per l'arresto: | ||
<pre> | <pre> | ||
update-rc.d xdm stop 01 0 1 6 | # update-rc.d xdm stop 01 0 1 6 | ||
</pre> | </pre> | ||
Concatenati: | Concatenati: | ||
<pre> | <pre> | ||
update-rc.d xdm start 99 2 3 4 5 . stop 01 0 1 6 | # update-rc.d xdm start 99 2 3 4 5 . stop 01 0 1 6 | ||
</pre> | </pre> | ||
==== Rimozione di un link ==== | ==== Rimozione di un link ==== | ||
<pre> | <pre> | ||
update-rc.d -f xdm remove | # update-rc.d -f xdm remove | ||
</pre> | </pre> | ||
Riga 219: | Riga 239: | ||
Valori di default: | Valori di default: | ||
<pre> | <pre> | ||
update-rc.d xdm defaults | # update-rc.d xdm defaults | ||
</pre> | </pre> | ||
Valori di Default solo relativamente ai runlevel (impostando l'ordine di avvio a 99 e di arresto a 01) | Valori di Default solo relativamente ai runlevel (impostando l'ordine di avvio a 99 e di arresto a 01) | ||
<pre> | <pre> | ||
update-rc.d xdm defaults 99-start 01-stop | # update-rc.d xdm defaults 99-start 01-stop | ||
</pre> | </pre> | ||
Riga 242: | Riga 262: | ||
Un'altra funzione degna di nota è la possibilità di avviare e terminare direttamente da questa schermata i servizi. È possibile, infatti, farlo tramite i tasti <code>'''+'''</code> (start, avvio) e <code>'''-'''</code> (stop, arresto) dopo essersi posizionati sulla riga relativa al servizio. | Un'altra funzione degna di nota è la possibilità di avviare e terminare direttamente da questa schermata i servizi. È possibile, infatti, farlo tramite i tasti <code>'''+'''</code> (start, avvio) e <code>'''-'''</code> (stop, arresto) dopo essersi posizionati sulla riga relativa al servizio. | ||
=== rcconf === | === rcconf === | ||
Riga 255: | Riga 270: | ||
[[Immagine:rcconf.png|thumb|center|Screenshot di rcconf]] | [[Immagine:rcconf.png|thumb|center|Screenshot di rcconf]] | ||
=== | === BUM === | ||
Boot-Up Manager è un'applicazione scritta in Perl-Gtk2 che permette la configurazione dei runlevel in modo grafico senza la necessità di complesse configurazioni manuali e con una descrizione di ogni singolo servizio. | |||
[[Immagine: | [[Immagine:bum2.png|thumb|center|Screenshot di BUM]] | ||
== <code>rc.local</code> e <code>rc.local_shutdown</code> == | == <code>rc.local</code> e <code>rc.local_shutdown</code> == | ||
Alcuni distribuzioni (Slackware per esempio) utilizzano i file <code>/etc/rc.local</code> e <code>/etc/rc.local_shutdown</code> per dare all'amministratore la possibilità di eseguire dei comandi specifici per un certo sistema all'avvio e allo spegnimento della macchina. | |||
Su Debian è disponibile soltanto <code>/etc/rc.local</code> come script di avvio. | |||
Lo stesso effetto può essere ottenuto con un singolo script, (lo chiameremo <code>''/etc/init.d/local''</code> in questo esempio). Lo schema generico dello script è: | |||
<pre> | <pre> | ||
Riga 296: | Riga 308: | ||
</pre> | </pre> | ||
Per fare sì che questo venga eseguito ad ogni avvio | Per fare sì che questo venga eseguito ad ogni avvio, rendetelo eseguibile: | ||
<pre> | |||
# chmod 755 /etc/init.d/local | |||
</pre> | |||
E aggiungetelo all'elenco dei servizi con il vostro tool preferito, per esempio con il comando: | |||
<pre> | <pre> | ||
update-rc.d local start 98 S 1 2 3 4 5 . | # update-rc.d local start 98 S 1 2 3 4 5 . | ||
</pre> | </pre> | ||
Per maggiori informazioni, sulla creazione di un servizio, si rimanda alla guida: [[Gestione e creazione di servizi in Debian]]. | |||
{{Autori | |||
|Autore=[[User:MaXeR|MaXeR]] | |||
|Estesa_da= | |||
|Verificata_da= | |||
:[[Utente:HAL 9000|HAL 9000]] 14:57, 21 lug 2019 (CEST) | |||
|Numero_revisori=1 | |||
}} | |||
[[Categoria:Boot]] | [[Categoria:Boot]] |
contributi