SysV: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(cambiato avviso, visto che Jessie è ora la LTS e SysV è "legacy")
 
(20 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
Questo Wiki vuole essere prima di tutto un punto di raccolta ideale per le conoscenze acquisite dai singoli durante l' uso di Debian GNU/Linux in ambito casalingo e/o lavorativo, in modo che il sapere di uno diventi quello di tutti.
{{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).


Le guide ritenute meglio scritte e pi� approfondite, dopo un processo di controllo e revisione a cui tutti siete liberi di partecipare, vengono classificate [[:Categoria:Debianized|Debianized]] e contrassegnate dalla [[Debian Swirl]] http://guide.debianizzati.org/images/swirl.png.
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.


Potete trovare un elenco completo delle guide Debianized [http://guide.debianizzati.org/index.php/Categoria:Debianized qui]
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]]:
<pre>
Questa � la lista delle guide attualmente presenti:
# 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.


== Mondo Debian ==
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.
=== Introduzione a Debian ===
* [[L' Universo Debian]]
* [[La struttura della Distribuzione]]


=== Installazione ===
== Gli script di <code>init.d</code> ==
* http://guide.debianizzati.org/images/swirl.png [[Guida a Grub]]
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.
* [[Jigdo | '''Jigdo''': Scaricare e Aggiornare le iso di Debian]]
Di default, infatti, sono sempre presenti 3 opzioni:
* [[Note sull'installazione di Debian]]
; <code>start</code> : che lancia in esecuzione il demone;
; <code>stop</code> : che si occupa di fermare correttamente il demone;
; <code>restart</code> : che si occupa di riavviare il demone (stop + start).


=== Gestione dei Pacchetti ===
A questi si aggiungono, poi:
* [[Introduzione all' Apt System]]
; <code>reload</code> : permette la rilettura del file di configurazione;
* [[I repository ed il loro utilizzo]]
; <code>force-reload</code> : come sopra, ma in maniera forzata;
* http://guide.debianizzati.org/images/swirl.png [[Pulire Debian]]
; <code>status</code> : mostra a video lo stato del demone.
* [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
* [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
* [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
* [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
* [[Apt-spy: trovare i mirror pi� veloci | '''Apt-spy''': trovare i mirror pi� veloci]]
* [[APT uso avanzato: mixare releases diverse]]
* http://guide.debianizzati.org/images/swirl.png [[Impedire l' aggiornamento di un pacchetto]]
* [[Aptitude | '''Aptitude''': come amministrare i pacchetti]]


=== Creazione e modifica dei pacchetti ===
Si noti che non sempre c'è differenza tra le azioni <code>restart</code>, <code>reload</code> e <code>force-reload</code>.
* http://guide.debianizzati.org/images/swirl.png [[Make-jpkg: Pacchettiziamo Java Sun| '''Make-jpkg''': Pacchettiziamo Java Sun]]
* [[Pacchetti binari e sorgenti]]
* [[Applicare una patch ad un pacchetto Debian]]
* [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
* [[Dpkg-sig: Firma dei packages .deb |  '''Dpkg-sig''': Firma dei packages .deb]]
* [[Pacchetizzare un tema per Bootsplash]]
* [[Backport da unstable in testing]]


=== Gestione dei pacchetti Lato Server ===
Sapere come funziona uno script contenuto in <code>/etc/init.d</code> è utile, in quanto ci permette di utilizzarli anche da shell.
* [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
Infatti, se ad esempio volessimo far partire Apache, sarebbe necessario lanciare un semplice:
* [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
<pre>
* [[Creare un Repository Debian]]
# /etc/init.d/apache2 start
* [[Gestione di un repository con debarchiver]]
</pre>
* [[Usare apt-cacher per creare una cache dei pacchetti usabile in una LAN]]
ed il gioco è fatto.
* [[Dupload per l'upload dei pacchetti Debian]]


==Configurazione Sistema==
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à:
===Kernel===
<pre>
* http://guide.debianizzati.org/images/swirl.png [[Debian Kernel Howto]]
# service apache start
* [[Esempio configurazione kernel]]
</pre>
* [[Kernel2.6.10 - Framebuffer - Gensplash Patch]]
* [[Kernel 2.6 su Debian Woody]]
== I vari <code>rcX.d</code> ==
* [[Compilazione Kernel 2.6.11 con Bootsplash]]
Come accennato nell'introduzione, gli script sono linkati in alcune directory 'speciali', che ora analizzeremo.
* [[Pagina di manuale di module-assistant|Pagina di manuale di '''<tt>module-assistant</tt>''']]
I nomi di queste directory sono sempre nella forma <code>rcX.d</code>, dove X rappresenta uno stato (''runlevel'') tra quelli seguenti:
* [[Low-latency 2.6 kernel per applicazioni audio realtime]]
* [[Script: Confronto Configurazioni Kernel]]


===Sistema===
=== "0" Shutdown ===
* [[SysV | Il sistema SysV per la gestione dei Runlevel]]
Quando la macchina viene messa in questo stato, vengono arrestati tutti i demoni, smontate le periferiche e la macchina viene preparata per lo spegnimento.
* [[Udev e Debian]]
* [[Configurare il server X in Debian GNU/Linux]]
* [[Linux Admin Quick Reference]]
* [[Debian: accelerare GTK con Cairo e Glitz]]


===Applicazioni Esterne===
=== "1" Single User ===
* [[Pacchettizzare ed installare Xorg su Debian Sid]]
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.
* [[Installazione Qemu con supporto accelerazione Kqemu]]
* [[ePSXe Emulatore Playstation]]
* [[Installare OpenOffice2 su Debian Etch]]
* [[DVD Backup: xDVDShrink per Debian]]


===Altro===
=== "2-5" Modalità Normali ===
* [[Dual Boot Debian-Altra distribuzione Linux]]
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.
* [[Dual Boot Linux-Windows|Dual Boot Linux-Windows: usare il bootloader di windows]]
* [[Logging su MySQL]]
* [[Password sicure: la base della sicurezza informatica]]
* [[Script Bash per Avvio e Visualizzazione dati Seti@home]]


===Tips and Tricks===
=== "6" Reboot ===
====Bash====
Quando la macchina viene portata in questo stato, viene preparata per un riavvio; avvengono tutte le cose indicate per <code>rc0.d</code>, ma viene inviato un segnale di reboot invece che di shutdown.
* [[Bash tips]]: un elenco di trucchetti sull'uso interattivo e sullo scripting Bash
* [[Colorare bash]]
* [[Come abilitare il completamento automatico 'avanzato']]
* [[Un logout con schermo pulito]]
* [[Bash Script: Cambiare i permessi ricorsivamente]]
* [[Due simpatici login: welcome2l e linuxlogo]]


====Firefox====
=== "S" Boot ===
* [[Firefox: Disattivare la ricerca con il tasto centrale]]
Runlevel speciale, che viene eseguito sempre al boot della macchina, prima di passare al runlevel di default (in Debian è il 2).
* [[Velocizzare Firefox per la banda larga]]
* [[Il vostro motore di ricerca da Firefox]]
* [[Aggiungere un motore di ricerca al quicksearch di Firefox]]


====Altro====
== Configurazione manuale dei runlevel ==
* [[Convertire immagini .nrg in immagini .iso]]
=== Configurazione del sistema ===
* [[Nautilus: navigare con una sola finestra]]
Il sistema di gestione dei runlevel è configurabile tramite il file <code>'''/etc/inittab'''</code> (è presente una guida a questo file, accessibile tramite il comando <code>man inittab</code>).
* [[Associare a thunderbird il browser preferito]]
* [[Antispam in Evolution con Bogofilter]]
* [[Impostare la lingua italiana per Gnome]]
* [[Impostare  e modificare data e ora]]
* [[Impostare e modificare il layout della tastiera]]
* [[Abilitare_Xinerama | Multi monitor con Xinerama]]
* [[Abilitare ESound con ALSA in Gnome]]
* [[Cambiare il Tema dei Cursori per il Mouse]]
* [[XFCE e shutdown da utente]]
* [[Personalizzare il comportamento delle finestre con Devil's Pie]]
* [[Gimp: rendere un logo trasparente|'''Gimp''': rendere un logo trasparente]]


==Networking==
In questo file vengono definiti i comportamenti principali del sistema.
===Debian Server===
====Condivisione risorse====
* [[Directory shared tra macchine linux (nfs)]]
* [[Condivisione risorse con Samba]]
* [[sshfs | Montare una directory remota con sshfs]]


====Mailing====
La struttura delle istruzioni è la seguente:
* [[Mail Server Sicuro con Postfix]]
<pre>
id:runlevel:azione:comando
</pre>
con le seguenti informazioni:
; <code>id </code>: rappresenta una voce specifica dell'inittab. Per quanto riguarda la configurazione delle console, viene solitamente usato il numero della console;
; <code>runlevel</code> : viene usato per indicare in quali runlevel deve essere analizzata l'istruzione. Possono essere specificati uno o più runlevel:
::*<code>''123''</code> indica che l'istruzione verrà considerata nei runlevel 1, 2 e 3;
::*<code>''1''</code> indica che verrà presa in considerazione solo nel runlevel 1.
; <code>azione</code> : indica l'azione da compiere. Le più usate sono:
:; <code>wait</code> : il sistema attende il termine dell'esecuzione del comando;
:; <code>respawn</code> : il comando indicato viene eseguito ciclicamente ogni volta che esso termina;
:; <code>boot</code> : il comando viene eseguito durante il boot (il contenuto di <code>runlevel</code> viene ignorato);
:; <code>initdefault</code> : usato per indicare il runlevel di default;
:; <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>kbrequest</code> : cosa deve essere fatto quando si riceve il segnale <code>SIGWINCH</code>;


====Http====
; <code>comando</code> : il comando da eseguire.
* [[Server Web Casalingo]]
* [[LAMP: Linux, Apache, MySQL e PHP]]
* [[XAMPP: Linux, Apache, MySQL e PHP facili]]
* [[Debian MapServer/MapScript]]


===Amministrazione===
==== Runlevel di Default ====
====Gestione Remota/Locale====
<pre>
* [[Wake On Lan | '''Wake On Lan''' per accendere i propri PC a distanza tramite la LAN]]
# The default runlevel.
* [[Debian e il controllo di servizi e demoni]]
id:2:initdefault:
* [[Gestione della banda in Apache]]
</pre>
* [[Ssh e autenticazione tramite chiavi]]
In questo esempio (preso da una Debian Box) il runlevel di default è il <code>'''2'''</code>. <br/>
* [[Inetd e i servizi di rete]]
Per modificarlo è sufficiente modificare il numero racchiuso tra i caratteri '':''.


====Connettivita'====
==== Script di inizializzazione del sistema ====
* [[Condividere la connessione a internet]]
<pre>
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
</pre>
Specifica cosa fare durante l'avvio del sistema (a meno che non venga avviato in modalità di emergenza).
; <code>si</code> : sta per ''system initialization''.


===Sicurezza===
Lo script <code>'''/etc/init.d/rcS'''</code> ha la funzione di invocare tutti gli script <code>'''S*'''</code> contenuti in <code>'''/etc/rcS.d/'''</code> in ordine numerico/alfabetico.
====Firewalling====
* [[Debian e iptables]]
* [[Firewall Builder]]
* [[Parametri a run-time per Netfilter]]


====Monitoraggio & Scanning====
==== Comportamento in Modalità Singolo Utente ====
* [[Monitoriamo il Sistema]]
<pre>
* [[Mrtg: monitoriamo la banda]]
# What to do in single-user mode.
* [[Cacti | Cacti: monitor di rete, per pi� computer]]
~~:S:wait:/sbin/sulogin
* [[Munin]]
</pre>


====Proxy====
==== Comportamento per ogni Runlevel ====
* [[Privoxy: navigazione sicura a prova di spam]]
<pre>
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.


====Tunneling====
l0:0:wait:/etc/init.d/rc 0
* [[Openvpn]]
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
</pre>


== Hardware ==
In questa parte del file di configurazione vengono specificati gli script da lanciare per ogni runlevel:
=== Fotocamere digitali e dispositivi di memorizzazione di massa removibili ===
<code>'''lX'''</code>, con <code>''X''</code> un numero rappresentante il runlevel, indica il runlevel (lo stesso numero deve essere indicato anche nel campo ''runlevel'').
* [[Usare Fotocamere Digitali|Usare Fotocamere Digitali (libgphoto2)]]
* [[Usare Fotocamere Digitali (usb-storage)]]
* [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
* [[Debian e iPod]]


=== Modem e periferiche di rete ===
Lo script <code>'''/etc/init.d/rc'''</code> si occupa di lanciare, in ordine numerico/alfabetico, gli script presenti in <code>'''/etc/rcX.d/'''</code>, partendo per quelli <code>'''K*'''</code> per passare a quelli <code>'''S*'''</code>; accetta come parametro il numero del runlevel.


* [[Debian e i Modem ADSL]]
==== Pressione di <code>CTRL + ALT + CANC</code> ====
<pre>
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
</pre>


==== Modem USB ADSL ====
Il comando da eseguire alla pressione della combinazione di tasti <code>'''CTRL + ALT + CANC'''</code> è facilmente personalizzabile tramite l'istruzione sopra riportata. In questo caso viene chiamato il comando <code>''/sbin/shutdown''</code> che con quelle opzioni controlla il contenuto di <code>'''/etc/shutdown.allow'''</code> per gli utenti abilitati all'esecuzione del comando (<code>''-a''</code>), esegue un reboot (<code>''-r''</code>), aspetta un secondo prima di iniziare tutta la procedura di spegnimento (<code>''-t1''</code>), esegue il comando subito (<code>''now''</code>). Per maggiori informazioni riguardo la personalizzazione del comando si rimanda alla pagina di manuale di shutdown (<code>''man shutdown''</code>).
* [[Installare i driver conexant accessrunner]]
* [[Installare i driver eagle-adsl]]
* [[Installare i driver eci-adsl]] ''(stub)''
* [[Installare i driver unicorn (BeWAN)]] ''(stub)''
* [[Modem adsl Telindus ND220]]
* [[Modem adsl Aethra Starmodem]]
* [[Modem adsl Fastrate 100 USB]]


==== Modem Ethernet ====
È possibile disattivare questa caratteristica commentando la riga.
* ''Inserire qui eventuali guide su modem ethernet''


==== Modem dial-up 56K ====
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>.
* ''Inserire qui eventuali guide su modem a 56K''


==== Schede di rete Wireless ====
==== Pressione di <code>ALT + FrecciaSu</code> ====
* [[Wireless Support | Informazioni sul supporto alle periferiche Wireless]]
<pre>
* [[Script Bash abilitazione scheda wireless]]
# Action on special keypress (ALT + UpArrow)
* [[Intel PRO/Wireless 2200BG]]
#kb1:12345:kbrequest:command...
* [[NdisWrapper | NdisWrapper: Usiamo i driver di Windows per il WLan con GNU/Linux]]
</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>.


=== Schede Video ===
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.
* [[Installazione Driver ATI per schede ATI RADEON MOBILITY 9700 SE]]


=== Stampanti ===
==== Gestione delle Console ====
==== Stampanti USB ====
<pre>
* ''Inserire eventuali guide su come far funzionare stampanti con porta USB''
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6


==== Stampanti con porta parallela ====
# Example how to put a getty on a serial line (for a terminal)
* [[Introduzione all'installazione di stampanti con porta parallela]]
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
</pre>


==== Stampanti bluetooth ====
Il numero di console attive in un sistema viene gestito in questa sezione del file di configurazione.
* [[Introduzione all'installazione di stampanti bluetooth]]


=== Scanner ===
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.
* [[Epson Perfection 2480 photo - usb scanner]]
* ''Inserire qui eventuali altre guide su come far funzionare scanner con Debian''


=== Palmari e cellulari ===
Se, invece, volessimo abilitare una console virtuale sulla porta seriale, è sufficiente decommentare la riga che inizia con <code>''T0''</code> (per averne una in ascolto sulla prima porta seriale).
* [[Debian e Nokia 7210: uso di gnokii e gestione degli sms]]
* [[UMTS/GPRS PCMCIA card (3g)]]
* [[Usare lcd4linux con un Palm]]


=== Altro hardware ===
Per maggiori informazioni sulla personalizzazione delle console virtuali, <code>''man getty''</code>.
* [[I2c e lm-sensors|'''I2c e lm-sensors''': usare i sensori della scheda madre]]
* [[Gestire gli HD: stato di salute, badblocks e ripristino dati|'''Gestire gli HD:''' stato di salute, badblocks e ripristino dati]]


==Portatili==
=== Gestione dei runlevel (<code>update-rc.d</code>) ===
===Laptop Debianizzati===
La gestione ''manuale'' dei runlevel (per gestione intendo, ovviamente, la modifica degli script assegnati ad ogni runlevel) è estremamente semplice, soprattutto con l'ausilio di <code>'''update-rc.d'''</code>.
Troverete di seguito i resoconti d'installazione di Debian su dei portatili:


* [[Debian on an HP nx8220 | Debian on an HP nx8220]]
Il suo utilizzo è estremamente semplice.
* [[Debian on a presario 2141EU | Compaq Presario 2100 (2141EU)]]
* [[Debian on a compaq Presario 2154EA | Compaq Presario 2100 (2154EA)]]
* [[Debian on a Toshiba Satellite M30X-113| Toshiba M30x-113]] ''(stub)''
* [[Debian on a HP Compaq NX6110| HP Compaq NX6110]]
* [[Debian on an HP pavilion zv5422EA| HP pavilion zv5000 (zv5422EA)]]


===Altro===
==== Sintassi ====
* [[Powernowd: CpuScaling per AMD]]
La sintassi del comando è suddivisibile in tre varianti:
* [[Cpufreqd: Cpuscaling per Intel Pentium M]]
<pre>
* [[ACPI e DSDT]]
# update-rc.d [-n] [-f] name remove
* [[Synaptics touchpad]]
</pre>
* Inserire qui anche link a risorse in italiano sui portatili
consente la rimozione di tutti i link nei runlevel relativi al demone <code>''name''</code>


==Debian Live==
; <code>-n</code> : non esegue il comando, ma mostra cosa verrebbe svolto;
* [[Rimasterizzare una knoppix]]
; <code>-f</code> : forza l'eliminazione dei link anche se è ancora presente lo script in <code>'''/etc/init.d/'''</code>.
* [[Damn Small Linux su chiavetta usb]]


==Crittografia==
<pre>
* [[Crittografia e Steganografia - L'Arte di nascondere le informazioni]]
# update-rc.d [-n] name defaults [NN | NN-start NN-stop]
* [[Chiavi simmetriche e chiavi pubbliche]]
</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>).


==Varie==
<pre>
* [[Debian Fun]]
# update-rc.d [-n] name start|stop NN runlevel runlevel ...  .  start|stop NN runlevel runlevel ...  . ...
</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.
 
Vengono riportati alcuni esempi pratici (script <code>''xdm''</code>):
 
==== Aggiunta di un link ====
Link per l'avvio:
<pre>
# update-rc.d xdm start 99 2 3 4 5
</pre>
Link per l'arresto:
<pre>
# update-rc.d xdm stop 01 0 1 6
</pre>
 
Concatenati:
<pre>
# update-rc.d xdm start 99 2 3 4 5 . stop 01 0 1 6
</pre>
 
==== Rimozione di un link ====
<pre>
# update-rc.d -f xdm remove
</pre>
 
==== Aggiunta di link secondo i Valori di Default ====
Valori di default:
<pre>
# update-rc.d xdm defaults
</pre>
 
Valori di Default solo relativamente ai runlevel (impostando l'ordine di avvio a 99 e di arresto a 01)
<pre>
# update-rc.d xdm defaults 99-start 01-stop
</pre>
 
==== Valori di Default ====
I valori di default utilizzati sono i seguenti:
* lo script viene lanciato con l'opzione <code>''start''</code> nei runlevel 2, 3, 4 e 5;
* lo script viene lanciato con l'opzione <code>''stop''</code> nei runlevel 0, 1 e 6
* l'ordine è impostato a 20
 
== Tool per la configurazione dei runlevel ==
=== sysv-rc-conf ===
sysv-rc-conf è una utility basata sulle librerie [[ncurses]] utile per semplificare la gestione dei [[runlevel]] ed avere una panoramica sullo stato di tutti i runlevel.
 
[[Immagine:Sysv-rc-conf.png|thumb|center|Screenshot di sysv-rc-conf]]
 
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 <code>CTRL + n</code> e <code>CTRL + p</code>), la presenza di una <code>'''X'''</code> (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 è 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 è 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]]
 
=== 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:bum2.png|thumb|center|Screenshot di BUM]]
 
== <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>
#! /bin/sh
 
set -e
 
if [ -f /etc/default/local ] ; then
    . /etc/default/local
fi
 
case "$1" in
    start|restart|force-reload)
        #comandi da eseguire all'avvio della macchina
        ;;
 
    stop)
        #comandi da eseguire allo spegnimento del sistema
    ;;
 
    *)
        echo $"Usage: $0 {start|stop|restart|force-reload|status}"
        exit 2
        ;;
esac
exit 0
</pre>
 
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>
# update-rc.d local start 98 S 1 2 3 4 5 .
</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]]

Versione attuale delle 12:57, 21 lug 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Struttura

Debian storicamente aveva scelto come proprio 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 /etc/init.d, ma ignora il file /etc/inittab, 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:

# apt install sysvinit-core

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 init.d

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, controllarne lo stato, nel modo più semplice e comodo. Di default, infatti, sono sempre presenti 3 opzioni:

start
che lancia in esecuzione il demone;
stop
che si occupa di fermare correttamente il demone;
restart
che si occupa di riavviare il demone (stop + start).

A questi si aggiungono, poi:

reload
permette la rilettura del file di configurazione;
force-reload
come sopra, ma in maniera forzata;
status
mostra a video lo stato del demone.

Si noti che non sempre c'è differenza tra le azioni restart, reload e force-reload.

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:

# /etc/init.d/apache2 start

ed il gioco è fatto.

Si consiglia però di ricorrere sempre al comando service, 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 apache2 basterà:

# service apache start

I vari rcX.d

Come accennato nell'introduzione, gli script sono linkati in alcune directory 'speciali', che ora analizzeremo. I nomi di queste directory sono sempre nella forma rcX.d, dove X rappresenta uno stato (runlevel) tra quelli seguenti:

"0" Shutdown

Quando la macchina viene messa in questo stato, vengono arrestati tutti i demoni, smontate le periferiche e la macchina viene preparata per lo spegnimento.

"1" Single User

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" Modalità Normali

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

Quando la macchina viene portata in questo stato, viene preparata per un riavvio; avvengono tutte le cose indicate per rc0.d, ma viene inviato un segnale di reboot invece che di shutdown.

"S" Boot

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 del sistema

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.

La struttura delle istruzioni è la seguente:

id:runlevel:azione:comando

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;
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 verrà considerata nei runlevel 1, 2 e 3;
  • 1 indica che verrà presa in considerazione solo nel runlevel 1.
azione
indica l'azione da compiere. Le più usate sono:
wait
il sistema attende il termine dell'esecuzione del comando;
respawn
il comando indicato viene eseguito ciclicamente ogni volta che esso termina;
boot
il comando viene eseguito durante il boot (il contenuto di runlevel viene ignorato);
initdefault
usato per indicare il runlevel di default;
sysinit
il comando viene eseguito durante il boot del sistema, prima di ogni comando con azione uguale a boot;
ctrlaltdel : cosa deve essere fatto quando si riceve il segnale SIGINT;
kbrequest : cosa deve essere fatto quando si riceve il segnale SIGWINCH;
comando
il comando da eseguire.

Runlevel di Default

# The default runlevel.
id:2:initdefault:

In questo esempio (preso da una Debian Box) il runlevel di default è il 2.
Per modificarlo è sufficiente modificare il numero racchiuso tra i caratteri :.

Script di inizializzazione del sistema

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

Specifica cosa fare durante l'avvio del sistema (a meno che non venga avviato in modalità di emergenza).

si
sta per system 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.

Comportamento in Modalità Singolo Utente

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

Comportamento per ogni Runlevel

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

In questa parte del file di configurazione vengono specificati gli script da lanciare per ogni runlevel: lX, con X un numero rappresentante il runlevel, indica il runlevel (lo stesso numero deve essere indicato anche nel campo runlevel).

Lo script /etc/init.d/rc si occupa di lanciare, in ordine numerico/alfabetico, gli script presenti in /etc/rcX.d/, partendo per quelli K* per passare a quelli S*; accetta come parametro il numero del runlevel.

Pressione di CTRL + ALT + CANC

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

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.

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 CTRL-ALT-F1.

Pressione di ALT + FrecciaSu

# Action on special keypress (ALT + UpArrow)
#kb1:12345:kbrequest:command...

Decommentare la riga, rimuovendo il carattere # prima di kb1, e scrivere il percorso assoluto del comando da eseguire quando si preme ALT + FrecciaSu.

Come per CTRL-ALT-CANC questa sequenza è intercettata dal server grafico all'interno di una sessione grafica. È necessario prima passare a un terminale virtuale.

Gestione delle Console

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

Il numero di console attive in un sistema viene gestito in questa sezione del file di configurazione.

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, è 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.

Gestione dei runlevel (update-rc.d)

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 è estremamente semplice.

Sintassi

La sintassi del comando è suddivisibile in tre varianti:

# update-rc.d [-n] [-f] name remove

consente la rimozione di tutti i link nei runlevel relativi al demone name

-n
non esegue il comando, ma mostra cosa verrebbe svolto;
-f
forza l'eliminazione dei link anche se è ancora presente lo script in /etc/init.d/.
# update-rc.d [-n] name defaults [NN | NN-start NN-stop]

crea il link di avvio allo script /etc/init.d/name' secondo i valori di default. È possibile sovrascrivere l'ordine con cui verrà eseguito lo script specificando le due cifre (NN), inoltre è possibile fornire valori diversi sia per l'avvio (NN-start) che per l'arresto (NN-stop).

# update-rc.d [-n] name start|stop NN runlevel runlevel ...  .  start|stop NN runlevel runlevel ...  . ...

crea il link di avvio|arresto allo script name specificando l'ordine (NN) e il/i runlevel. Il carattere . separa dichiarazioni multiple.

Vengono riportati alcuni esempi pratici (script xdm):

Aggiunta di un link

Link per l'avvio:

# update-rc.d xdm start 99 2 3 4 5

Link per l'arresto:

# update-rc.d xdm stop 01 0 1 6

Concatenati:

# update-rc.d xdm start 99 2 3 4 5 . stop 01 0 1 6

Rimozione di un link

# update-rc.d -f xdm remove

Aggiunta di link secondo i Valori di Default

Valori di default:

# update-rc.d xdm defaults

Valori di Default solo relativamente ai runlevel (impostando l'ordine di avvio a 99 e di arresto a 01)

# update-rc.d xdm defaults 99-start 01-stop

Valori di Default

I valori di default utilizzati sono i seguenti:

  • 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
  • l'ordine è impostato a 20

Tool per la configurazione dei runlevel

sysv-rc-conf

sysv-rc-conf è una utility basata sulle librerie ncurses utile per semplificare la gestione dei runlevel ed avere una panoramica sullo stato di tutti i runlevel.

Screenshot di sysv-rc-conf

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 è 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.

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.

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.

Screenshot di BUM

rc.local e rc.local_shutdown

Alcuni distribuzioni (Slackware per esempio) utilizzano i file /etc/rc.local e /etc/rc.local_shutdown 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 /etc/rc.local come script di avvio.

Lo stesso effetto può essere ottenuto con un singolo script, (lo chiameremo /etc/init.d/local in questo esempio). Lo schema generico dello script è:

#! /bin/sh

set -e

if [ -f /etc/default/local ] ; then
    . /etc/default/local
fi

case "$1" in
    start|restart|force-reload)
        #comandi da eseguire all'avvio della macchina
        ;;

    stop)
        #comandi da eseguire allo spegnimento del sistema
    ;;

    *)
        echo $"Usage: $0 {start|stop|restart|force-reload|status}"
        exit 2
        ;;
esac
exit 0

Per fare sì che questo venga eseguito ad ogni avvio, rendetelo eseguibile:

# chmod 755 /etc/init.d/local

E aggiungetelo all'elenco dei servizi con il vostro tool preferito, per esempio con il comando:

# update-rc.d local start 98 S 1 2 3 4 5 .

Per maggiori informazioni, sulla creazione di un servizio, si rimanda alla guida: Gestione e creazione di servizi in Debian.




Guida scritta da: MaXeR Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:
HAL 9000 14:57, 21 lug 2019 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized