3 581
contributi
mNessun oggetto della modifica |
m (verificata, aggiunta Jessie (in caso si utilizzi SysVinit)) |
||
Riga 1: | Riga 1: | ||
{{Versioni compatibili | {{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 | ; <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 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. | |||
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]] |
contributi