SysV: differenze tra le versioni

1 913 byte aggiunti ,  30 mag 2015
m
verificata, aggiunta Jessie (in caso si utilizzi SysVinit)
mNessun oggetto della modifica
m (verificata, aggiunta Jessie (in caso si utilizzi SysVinit))
Riga 1: Riga 1:
{{Versioni compatibili|Etch|Lenny|Squeeze|Wheezy}}
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}
== Struttura ==
== Struttura ==
Debian ha scelto, come proprio sistema di boot, il SysV, che si distingue per la propria semplicità e potenza.
Debian storicamente ha scelto, come proprio sistema di boot, il SysV, che si distingue per la propria semplicità e potenza.
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).
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).
A partire da Debian 8 ([[Jessie]]), tale sistema è stato tuttavia rimpiazzato di default da [[systemd]]. Systemd è 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. Per cui questa guida si considera interamente compatibile con Jessie solo installando il pacchetto '''sysvinit-core'''.


Esaminiamo nel dettaglio la struttura di questo interessante sistema, così da capire meglio cosa avviene esattamente al boot della macchina.
Esaminiamo nel dettaglio la struttura di questo interessante sistema, così da capire meglio cosa avviene esattamente al boot della macchina.
== 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 13: Riga 16:


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 del demone;
; <code>status</code> : mostra a video lo stato del demone.
; <code>stats</code> : visualizza delle statistiche sul lavoro 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>
ed il gioco è fatto!!!
== 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 68: Riga 75:
:; <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 95: Riga 103:
~~:S:wait:/sbin/sulogin
~~:S:wait:/sbin/sulogin
</pre>
</pre>


==== Comportamento per ogni Runlevel ====
==== Comportamento per ogni Runlevel ====
Riga 130: Riga 137:


È 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 una console 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 una console virtuale.


==== Gestione delle Console ====
==== Gestione delle Console ====
Riga 191: Riga 209:
</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 270: Riga 287:
== <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.  
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.


In Debian 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 è:  
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 303: Riga 322:


<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
{{Autori
|Autore=[[User:MaXeR|MaXeR]]
|Autore=[[User:MaXeR|MaXeR]]
|Estesa_da=
|Verificata_da=
:[[Utente:HAL 9000|HAL 9000]] 22:10, 30 mag 2015 (CEST)
|Numero_revisori=1
}}
}}


[[Categoria:Boot]]
[[Categoria:Boot]]
3 581

contributi