1 487
contributi
Riga 2: | Riga 2: | ||
=SystemV: il boot di Debian= | =SystemV: il boot di Debian= | ||
==Struttura== | ==Struttura== | ||
Debian ha scelto, come proprio sistema di boot, il SysV, che si distingue per la propria | Debian ha scelto, come proprio sistema di boot, il SysV, che si distingue per la propria semplicità e potenza... | ||
Infatti, | Infatti, è basata su degli script sensibili a determinate azioni, che vengono linkati in delle directory predefinite (rappresentanti determinati init (ovvero livelli o stati a cui si trova la macchina). | ||
Esaminiamo nel dettaglio la struttura di questo interessante sistema, | Esaminiamo nel dettaglio la struttura di questo interessante sistema, così da capire meglio cosa avviene esattamente al boot della macchina. | ||
==Gli script di init.d== | ==Gli script di init.d== | ||
Nella directory /etc/init.d sono presenti degli script particolari: il loro compito | Nella directory /etc/init.d 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, controllare lo stato, ... nel modo più semplice e comodo. | ||
Di default, infatti, sono sempre presenti 3 opzioni: | Di default, infatti, sono sempre presenti 3 opzioni: | ||
; start : che lancia in esecuzione il demone | ; start : che lancia in esecuzione il demone | ||
Riga 21: | Riga 21: | ||
Sapere come funziona uno script contenuto in /etc/init.d | Sapere come funziona uno script contenuto in /etc/init.d è 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/apache start | ||
</pre> | </pre> | ||
ed il gioco | ed il gioco è fatto!!! | ||
==I vari rcX.d== | ==I vari rcX.d== | ||
Riga 36: | Riga 36: | ||
==="1" Single User=== | ==="1" Single User=== | ||
In questo stato, | In questo stato, è consentito l'accesso ad un utente solo, e gran parte dei servizi non vengono avviati; è usato prevalentemente per la manutenzione straordinaria della macchina | ||
==="2-5" | ==="2-5" Modalità Normali=== | ||
In Debian non esistono distinzioni tra gli stati 2, 3, 4 e 5 e viene lasciata all'utente la | In Debian non esistono distinzioni tra gli stati 2, 3, 4 e 5 e viene lasciata all'utente la possibilità di modificarli... Di default viene utilizzato il 2. | ||
==="6" Reboot=== | ==="6" Reboot=== | ||
Riga 45: | Riga 45: | ||
==="S" Boot=== | ==="S" Boot=== | ||
Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default (in Debian | Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default (in Debian è il 2). | ||
==Configurazione manuale dei runlevel== | ==Configurazione manuale dei runlevel== | ||
===Configurazione del sistema=== | ===Configurazione del sistema=== | ||
Il sistema di gestione dei runlevel | Il sistema di gestione dei runlevel è configurabile tramite il file '''/etc/inittab''' (è presente una guida a questo file, accessibile tramite il comando ''man inittab''). | ||
In questo file vengono definiti i comportamenti principali del sistema. | In questo file vengono definiti i comportamenti principali del sistema. | ||
La struttura delle istruzioni | La struttura delle istruzioni è la seguente: | ||
<pre> | <pre> | ||
id:runlevel:azione:comando | id:runlevel:azione:comando | ||
Riga 59: | Riga 59: | ||
con le seguenti informazioni: | con le seguenti informazioni: | ||
; id : rappresenta una voce specifica dell'inittab. Per quanto riguarda la configurazione delle console, viene solitamente usato il numero della console; | ; id : rappresenta una voce specifica dell'inittab. Per quanto riguarda la configurazione delle console, viene solitamente usato il numero della console; | ||
; runlevel : viene usato per indicare in quali runlevel deve essere analizzata l'istruzione. Possono essere specificati uno o | ; runlevel : viene usato per indicare in quali runlevel deve essere analizzata l'istruzione. Possono essere specificati uno o più runlevel: | ||
::*''123'' indica che l'istruzione | ::*''123'' indica che l'istruzione verrà considerata nei runlevel 1, 2 e 3; | ||
::*''1'' indica che | ::*''1'' indica che verrà presa in considerazione solo nel runlevel 1. | ||
; azione : indica l'azione da compiere. Le | ; azione : indica l'azione da compiere. Le più usate sono: | ||
:; wait : il sistema attende il termine dell'esecuzione del comando; | :; wait : il sistema attende il termine dell'esecuzione del comando; | ||
:; respawn : il comando indicato viene eseguito ciclicamente ogni volta che esso termina; | :; respawn : il comando indicato viene eseguito ciclicamente ogni volta che esso termina; | ||
Riga 77: | Riga 77: | ||
id:2:initdefault: | id:2:initdefault: | ||
</pre> | </pre> | ||
In questo esempio (preso da una Debian Box) il runlevel di default | In questo esempio (preso da una Debian Box) il runlevel di default è il '''2'''. <br/> | ||
Per modificarlo | Per modificarlo è sufficiente modificare il numero racchiuso tra i caratteri '':''. | ||
====Script di inizializzazione del sistema==== | ====Script di inizializzazione del sistema==== | ||
Riga 86: | Riga 86: | ||
si::sysinit:/etc/init.d/rcS | si::sysinit:/etc/init.d/rcS | ||
</pre> | </pre> | ||
Specifica cosa fare durante l'avvio del sistema (a meno che non venga avviato in | Specifica cosa fare durante l'avvio del sistema (a meno che non venga avviato in modalità di emergenza). | ||
; si : sta per ''sistem initialization''. | ; si : sta per ''sistem initialization''. | ||
Lo script '''/etc/init.d/rcS''' ha la funzione di invocare tutti gli script '''S*''' contenuti in '''/etc/rcS.d/''' in ordine numerico/alfabetico. | Lo script '''/etc/init.d/rcS''' ha la funzione di invocare tutti gli script '''S*''' contenuti in '''/etc/rcS.d/''' in ordine numerico/alfabetico. | ||
====Comportamento in | ====Comportamento in Modalità Singolo Utente==== | ||
<pre> | <pre> | ||
# What to do in single-user mode. | # What to do in single-user mode. | ||
Riga 128: | Riga 128: | ||
</pre> | </pre> | ||
Il comando da eseguire alla pressione della combinazione di tasti '''CTRL + ALT + CANC''' | Il comando da eseguire alla pressione della combinazione di tasti '''CTRL + ALT + CANC''' è facilmente personalizzabile tramite l'istruzione sopra riportata. In questo caso viene chiamato il comando ''/sbin/shutdown'' che con quelle opzioni controlla il contenuto di '''/etc/shutdown.allow''' per gli utenti abilitati all'esecuzione del comando (''-a''), esegue un reboot (''-r''), aspetta un secondo prima di iniziare tutta la procedura di spegnimento (''-t1''), esegue il comando subito (''now''). Per maggiori informazioni riguardo la personalizzazione del comando si rimanda alla pagina di manuale di shutdown (''man shutdown''). | ||
È possibile disattivare questa caratteristica commentando la riga. | |||
====Gestione delle Console==== | ====Gestione delle Console==== | ||
Riga 162: | Riga 162: | ||
Ricordando quanto imparato in precedenza capiamo che abbiamo 6 console virtuali nei runlevel 2, 3, 4 e 5 e una sola nei 4 e 5. Se la nostra macchina non ha molta ram e vogliamo risparmiarne un po', possiamo commentare le console 2-6. | Ricordando quanto imparato in precedenza capiamo che abbiamo 6 console virtuali nei runlevel 2, 3, 4 e 5 e una sola nei 4 e 5. Se la nostra macchina non ha molta ram e vogliamo risparmiarne un po', possiamo commentare le console 2-6. | ||
Se, invece, volessimo abilitare una console virtuale sulla porta seriale, | Se, invece, volessimo abilitare una console virtuale sulla porta seriale, è sufficiente decommentare la riga che inizia con ''T0'' (per averne una in ascolto sulla prima porta seriale). | ||
Per maggiori informazioni sulla personalizzazione delle console virtuali, ''man getty''. | Per maggiori informazioni sulla personalizzazione delle console virtuali, ''man getty''. | ||
===Gestione dei runlevel (update-rc.d)=== | ===Gestione dei runlevel (update-rc.d)=== | ||
La gestione ''manuale'' dei runlevel (per gestione intendo, ovviamente, la modifica degli script assegnati ad ogni runlevel) | La gestione ''manuale'' dei runlevel (per gestione intendo, ovviamente, la modifica degli script assegnati ad ogni runlevel) è estremamente semplice, soprattutto con l'ausilio di '''update-rc.d'''. | ||
Il suo utilizzo | Il suo utilizzo è estremamente semplice. | ||
====Sintassi==== | ====Sintassi==== | ||
La sintassi del comando | La sintassi del comando è suddivisibile in tre varianti: | ||
<pre> | <pre> | ||
Riga 180: | Riga 180: | ||
; -n : non esegue il comando, ma mostra cosa verrebbe svolto; | ; -n : non esegue il comando, ma mostra cosa verrebbe svolto; | ||
; -f : forza l'eliminazione dei link anche se | ; -f : forza l'eliminazione dei link anche se è ancora presente lo script in '''/etc/init.d/'''. | ||
<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 '''/etc/init.d/''name''''' secondo i [[#Valori di default | valori di default]]. | crea il link di avvio allo script '''/etc/init.d/''name''''' secondo i [[#Valori di default | valori di default]]. È possibile sovrascrivere l'ordine con cui verrà eseguito lo script specificando le due cifre (''NN''), inoltre è possibile fornire valori deversi sia per l'avvio (''NN-start'') che per l'arresto (''NN-stop''). | ||
Riga 231: | Riga 231: | ||
* lo script viene lanciato con l'opzione ''start'' nei runlevel 2, 3, 4 e 5; | * lo script viene lanciato con l'opzione ''start'' nei runlevel 2, 3, 4 e 5; | ||
* lo script viene lanciato con l'opzione ''stop'' nei runlevel 0, 1 e 6 | * lo script viene lanciato con l'opzione ''stop'' nei runlevel 0, 1 e 6 | ||
* l'ordine | * l'ordine è impostato a 20 | ||
==Tool per la configurazione dei runlevel== | ==Tool per la configurazione dei runlevel== | ||
===sysv-rc-conf=== | ===sysv-rc-conf=== | ||
sysv-rc-conf | sysv-rc-conf è una utility basata sulle librerie [[Glossario:ncurses | ncurses]] utile per semplificare la gestione dei [[Glossario:runlevel | runlevel]] ed avere una panoramica sullo stato di tutti i runlevel. | ||
[[Immagine:Sysv-rc-conf.png|thumb|center|Screenshot di sysv-rc-conf]] | [[Immagine:Sysv-rc-conf.png|thumb|center|Screenshot di sysv-rc-conf]] | ||
Il suo utilizzo | Il suo utilizzo è semplice quanto immediato: nella schermata di gestione appare una matrice dove sulle righe sono presenti i servizi (è possibile spostarsi coi tasti cursore oppure scorrere la lista con CTRL + n e CTRL + p), la presenza di una '''X''' (modificabile tramite la barra spaziatrice) indica che il servizio verrà avviato per il runlevel indicato nella colonna. Come si nota subito, l'interfaccia non permette di specificare l'ordine con cui verranno lanciati i servizi, inoltre non è possibile specificare eventuali servizi da terminare all'ingresso in un determinato runlevel. | ||
Un'altra funzione degna di nota | Un'altra funzione degna di nota è la possibilità di avviare e terminare direttamente da questa schermata i servizi. È possibile, infatti, farlo tramite i tasti '''+''' (start, avvio) e '''-''' (stop, arresto) dopo essersi posizionati sulla riga relativa al servizio. | ||
===sysvconfig=== | ===sysvconfig=== | ||
Sysvconfig è un tool molto comodo e funzionale, che permette di moficare i vari runlevel visualizzandoli in una comodagriglia. Una volta posizionati sulla casella da modificare è sufficiente cancellarne il contenuto con il tasto [canc] e inserire l'indicazione (Sxx o Kxx (dove il numero ''xx'' rappresenta l'ordine con il quale deve essere eseguito lo script)). | |||
[[Immagine:Sysvconfig.png|thumb|center|Screenshot di sysvconfig]] | [[Immagine:Sysvconfig.png|thumb|center|Screenshot di sysvconfig]] | ||
===rcconf=== | ===rcconf=== | ||
Rcconf è forse il più semplice programma per la gestione dei demoni che vengono lanciati all'avvio del sistema... | |||
È in grado, infatti, di generare automaticamente una lista degli script che verranno lanciati all'avvio del sistema, lasciando all'utente solo la possibilità di attivarli o disattivarli. | |||
[[Immagine:rcconf.png|thumb|center|Screenshot di rcconf]] | [[Immagine:rcconf.png|thumb|center|Screenshot di rcconf]] | ||
Riga 256: | Riga 260: | ||
Al primo avvio viene chiesto di specificare il sistema sul quale viene eseguito (Linux -> Debian GNU/Linux). | Al primo avvio viene chiesto di specificare il sistema sul quale viene eseguito (Linux -> Debian GNU/Linux). | ||
La schermata che ci viene proposta | La schermata che ci viene proposta è comoda e ben organizzata: a sinistra abbiamo la lista dei servizi disponibili. A seguire la lista dei runlevel (colonne) suddivisi in due celle: in alto i servizi da avviare, in basso quelli da arrestare. Clickando su un servizio in un runlevel si possono modificare le impostazioni. Per inserire un servizio è sufficiente trascinarlo nel runlevel designato, come per cancellarlo da un runlevel è sufficiente spostarlo nel cestino ;) . | ||
[[Immagine:Ksysv.png|thumb|center|Screenshot di KsysV]] | [[Immagine:Ksysv.png|thumb|center|Screenshot di KsysV]] |
contributi