Sinistra <- Server Side Java - parte 1 - Indice Generale - Copertina - Un programma di chat in Perl -> Destra

Sistemi Liberi


Preseeding Parte I: come automatizzare e personalizzare l'installazione di Debian

Preseeding Parte I: come automatizzare e personalizzare l'installazione di Debian

di Franco Vecchiato e Andrea Urbani

L'articolo...

In questo articolo si illustra un'interessante funzionalità del programma di installazione di Debian Etch.



Debian e Ubuntu

L'utente finale, soprattutto quello alle prime armi, in una distribuzione cerca principalmente:

  1. la facilità di installazione,

  2. la facilità d'uso e la coerenza dell'interfaccia grafica ad installazione completata.

L'assenza di queste caratteristiche potrebbe portarlo, se non molto motivato, ad allontanarsi da GNU/Linux o indurlo a dare credito a chi afferma che GNU/Linux è difficile, che per usare Debian devi essere un genio, che GNU/Linux è di nicchia.

Uno dei fondamentali svantaggi di Debian rispetto ad altre distribuzioni, dal punto di vista dell'utente alle prime armi, è sempre stato finora la sua difficoltà di gestione nell'installazione e nell'utilizzo o, detto con altre parole, la mancanza di sofisticate interfacce grafiche e la presenza dello spauracchio della shell. Il team di sviluppo di Ubuntu cura alcuni aspetti che in Debian non hanno mai ricevuto grande attenzione, tra questi, due sono quelli sopra riportati.

Per quanto riguarda il punto 2, con l'attuale versione stabile di Debian, tramite scelte opportune tra i programmi disponibili, si possono ottenere macchine simili ad Ubuntu. Le interfacce grafiche di queste macchine sono molto usabili ed hanno un design accattivante. La facilità d'uso è garantita nel normale lavoro da ufficio (web, posta elettronica e Openoffice) e nei lavori di amministrazione comuni, tramite pannelli di controllo (installazioni di stampanti, configurazioni di rete, ecc...), cioè nella maggior parte delle attività lavorative svolte oggi tramite calcolatore.

Per quanto riguarda il punto 1, invece, l'attuale processo di installazione di Debian è sicuramente più facile rispetto alle versioni precedenti e non è molto diverso da quello di Ubuntu eseguito senza live CD o live DVD, ma alla fine dell'installazione dobbiamo installare a mano tutti i programmi che avremmo già pronti alla fine dell'installazione di Ubuntu.
Purtroppo questo richiede che si sappia esattamente cosa ci serve e come installarlo, ma non sempre per tutti è così, specialmente le prime volte che ci si avvicina a GNU/Linux. Inoltre, anche per gli amministratori di sistema e gli utenti più smaliziati spesso dover installare le "solite cose" dopo l'installazione di base può diventare fastidioso e ripetitivo; si pensi alla preparazione di una sala macchine e di tutti i computer che si installano a parenti o amici, o nella pubblica amministrazione.

Personalizzazione dell'installazione

Se volessimo ottenere una macchina personalizzata secondo i nostri desideri o le nostre necessità, dovremmo eseguire a mano, anche con Ubuntu, qualunque installazione di programmi non presenti o qualunque disinstallazione di programmi che non vorremmo avere.
Non sarebbe male riuscire ad ottenere una macchina con i programmi che vogliamo alla fine dell'installazione, senza lavoro aggiuntivo, soprattutto per chi lavora dovendo gestire un parco macchine; in questi casi possono esistere degli standard aziendali da rispettare, e sono sempre graditi metodi per minimizzare i tempi di installazione o reinstallazione delle macchine secondo tali standard.

Uno di questi metodi consiste nell'installazione completa di una macchina e nella creazione di un'immagine del disco fisso o della sua partizione di sistema con opportuni programmi di clonazione, ma questo metodo funziona solo se tutte le macchine da installare hanno hardware identico alla macchina clonata. Inoltre, eventuali aggiornamenti comparsi dopo l'iniziale clonazione devono essere eseguiti singolarmente per ogni nuova macchina alla fine dell'installazione.

Un altro metodo che consente di automatizzare e personalizzare le installazioni di sistemi operativi e programmi in generale, è la cosiddetta installazione unattended. Con questo termine si intende un'installazione somigliante a quella normale, nella quale però molte operazioni vengono eseguite in automatico. L'attuale programma di installazione di Debian supporta questo metodo: se l'hardware acquistato è supportato, è possibile eliminare i due problemi sopra citati, cioè usare lo stesso processo di installazione su macchine con componenti hardware diversi e avere già i programmi aggiornati alla fine dell'installazione.

Per provare a diffondere Linux negli ambienti di lavoro più comuni non si devono convincere solo gli utenti e i capi, ma anche i tecnici che gestiscono il parco macchine aziendale. I primi due gruppi si convincono con macchine simil-Windows, che dimostrino che il salto da Windows a Linux è ormai modesto a fronte del risparmio nell'acquisto e nell'aggiornamento delle licenze di sistemi operativi e programmi proprietari. I sistemisti, in genere anch'essi abituati a Windows, si convincono con pannelli di controllo grafici per comodi lavori di amministrazione e aggiornamento su macchine già installate, e con metodi rapidi e automatici di installazione o reinstallazione delle macchine secondo gli standard usati in azienda.

In questo articolo verrà illustrato un metodo di installazione unattended per Debian; gli esempi riportati saranno mirati specificamente all'installazione di macchine per postazioni da ufficio (web, posta elettronica e Openoffice).

Cenni sui processi di installazione

Alcune precisazioni, soprattutto per chi non ha esperienza di installazioni di computer da zero.

Quando si installa un sistema operativo da zero, vengono coinvolte due entità distinte tra loro:

Se i supporti di installazione sono CD o DVD, normalmente questi contengono entrambe le entità, ma ciò non significa che queste debbano sempre essere contenute nello stesso supporto.
Ad esempio, il programma di installazione potrebbe essere contenuto in qualche floppy e i programmi "impacchettati" del sistema operativo potrebbero essere contenuti in un server in rete. La fantasia si può sbizzarrire.

Anche il processo di installazione si può suddividere grossolanamente in due fasi; nell'ordine:

  1. avvio del programma di installazione e impostazione di parametri per la preparazione della macchina,

  2. scaricamento dei programmi "impacchettati" che compongono il sistema operativo e loro elaborazione per l'installazione ("spacchettamento" degli stessi, copia del contenuto in posizioni opportune sul disco fisso ed esecuzione di eventuali configurazioni).

Il programma di installazione è un piccolo sistema operativo dotato esclusivamente delle funzionalità necessarie per eseguire i compiti descritti al punto 2; naturalmente deve sapere in qualche modo da dove scaricare i programmi "impacchettati" da installare.

Per avviare questo programma sulla macchina da installare bisogna fare in modo che questa, alla sua accensione, vada a cercare un sistema operativo nel supporto che lo contiene prima che in altri supporti, che potrebbero a loro volta contenere sistemi operativi.
L'operazione di scansione di supporti alla ricerca di un sistema operativo e quella di avvio del primo sistema operativo trovato (operazione di boot) vengono effettuate da un firmware, di norma memorizzato in un circuito integrato della scheda madre, che viene eseguito dalla macchina subito dopo la sua accensione. Esistono diversi firmware, fatti da diverse aziende produttrici di computer o schede madri; nelle macchine di tipo IBM compatibile questo firmware si chiama BIOS, nelle macchine Sun si chiama OpenBoot, ecc...
L'ordine in cui i supporti vengono scanditi è impostato all'interno del firmware e può essere modificato seguendo le istruzioni d'uso dello stesso, fornite dall'azienda produttrice; per macchine di tipo IBM compatibile vedere http://www.debian.org/releases/stable/i386/ch03s06.html.it.

Chi non ha mai installato Debian, o sistemi operativi in generale, potrebbe avere qualche difficoltà nella comprensione di quanto segue. La parte restante dell'articolo e la realizzazione dell'infrastruttura che renda possibili le installazioni unattended di Debian richiedono un minimo di conoscenze sistemistiche in generale, e di Debian in particolare: vedere il manuale di installazione di Debian.

Installazione di Debian tramite preseeding

Il metodo che si illustra in questo articolo non è l'unico nel suo genere (vedi ad esempio http://www.informatik.uni-koeln.de/fai/).
L'attuale programma di installazione di Debian supporta questo metodo solo nelle installazioni eseguite col primo DVD (non col primo CD), oppure via rete.

Questo metodo di installazione si ottiene solo se entra in gioco una terza entità oltre al programma di installazione e ai programmi da installare menzionati nella sezione precedente; questa consiste in un file di testo (file di preseeding) che contenga:

  1. le risposte che durante il processo di installazione sono costanti in tutte le installazioni che si eseguono,

  2. le categorie di programmi che si vogliono installare e vengono normalmente richieste durante il processo di installazione, ad esempio categoria "standard" o "desktop",

  3. i singoli pacchetti che si vogliono eventualmente installare in aggiunta alle categorie scelte.

La personalizzazione della macchina risultante a fine installazione si ottiene variando quanto contenuto nei punti 2 e 3. Verranno illustrate più avanti alcune sezioni del file.

Il processo di installazione automatizzato si ottiene facendo in modo che questo file venga caricato e letto dal programma di installazione. Ciò attualmente si può eseguire solo in due modi:

Naturalmente nel primo caso non si possono utilizzare gli strumenti di installazione standard di Debian, inoltre il sistema perde in flessibilità: ad ogni variazione del file di testo, ad esempio per aggiungere o togliere un programma, si deve rimasterizzare il DVD e non è molto comodo. Per chi volesse approfondire questa possibilità, vedere il manuale di installazione di Debian alle appendici B.1 e B.2.
Qui non si entrerà nei dettagli del primo caso, verrà trattato solo il secondo: scaricamento del file da un server web.

Avendo a disposizione il file voluto in un server web, dopo aver predisposto quanto necessario al collegamento in rete della macchina da installare, l'installazione automatizzata si ottiene semplicemente scrivendo
"linux url=http://indirizzo.server.web/percorso/file" [Invio]
al prompt di boot del programma di installazione. Attenzione però, in quel momento per il programma di installazione la tastiera è americana.
Chiaramente si deve rispondere alle domande del processo di installazione fino alla configurazione di rete compresa; subito dopo viene scaricato il file, e tutto ciò che lì è impostato non viene richiesto durante il resto dell'installazione.

Scelta dei supporti da cui eseguire il boot

Esistono diversi supporti da cui eseguire il boot del programma di installazione. Bisogna naturalmente sceglierne uno che consenta l'utilizzo di un'interfaccia di rete per scaricare il file di preseed; se il programma di installazione ha i moduli (driver) corretti per l'interfaccia, i supporti di boot che consentono di scaricare via web il file sono:

L'ultimo metodo richiede la presenza nella stessa rete della macchina da installare, di un server tftp per lo scaricamento via rete del programma di installazione, e di un server dhcp o bootp o rarp configurati opportunamente in modo da associare un indirizzo IP della rete in questione all'indirizzo fisico dell'interfaccia di rete della macchina da installare; per architetture i386 vedere http://www.debian.org/releases/stable/i386/ch04s06.html.it.

Facendo il boot tramite DVD o floppy i pacchetti da installare possono venire scaricati da DVD o da un server in rete.
Con gli ultimi due metodi (CD di netboot o boot via rete) i pacchetti da installare possono essere scaricati solo da un server in rete.

Sintassi del file di preseed

Il punto di partenza più conveniente nella realizzazione di un proprio personale file di preseed è il modello disponibile sul sito di Debian; il lavoro per realizzarlo è un po' artigianale.
I dettagli della sintassi del file in questione si possono trovare nell'abbondante documentazione disponibile nell'appendice B del manuale di installazione, in particolare nella sezione B.4.
Le risposte ad alcune domande sono intuitive e si possono evincere dal suddetto modello e dall'Appendice B.4; le risposte fornite durante un'installazione, scritte nella sintassi corretta per il file di preseed, si possono comunque trovare in un file di testo, che può essere costruito eseguendo sulla macchina risultante i seguenti comandi da utente root

$ debconf-get-selections --installer > nomefile
$ debconf-get-selections >> nomefile

Per avere a disposizione questo comando bisogna installare il pacchetto "debconf-utils", come spiegato nell'Appendice B.3.

Non si vuole qui duplicare la documentazione esistente: discuteremo le parti del file che, secondo la personalissima opinione di chi scrive, incidono di più nella realizzazione di un processo di installazione facile ed intuitivo per l'installatore, che dia come risultato una macchina sufficientemente semplice da utilizzare in un ambiente di lavoro dominato da Windows. Selezioneremo quindi le parti del file che rispondono alle domande con risposte ovvie, e daremo alcuni suggerimenti sul metodo con cui selezionare i pacchetti.

Supponiamo di voler realizzare una postazione di lavoro da ufficio dual boot, ossia un PC fisso IBM compatibile con installati Windows e Debian, il primo già installato in una partizione collocata all'inizio del disco fisso, il secondo da installare in uno spazio di almeno 4 GB collocato alla fine del disco. La macchina a disposizione può essere un Pentium 3 a 800 MHz, 256 MB Ram, avere una scheda ethernet 10/100 (ma non schede wireless o dispositivi pcmcia), una tastiera italiana, il fuso orario di Roma, una risoluzione per il monitor di 1024 x 768 e si suppone di voler scaricare i pacchetti ad esempio da http://ftp.it.debian.org e infine si sceglie kde come interfaccia grafica, in modo da avere una buona somiglianza con l'interfaccia grafica di Windows. Queste alcune sezioni del file con opportune risposte:

la seguente disabilita la domanda che l'installatore pone sull'utilizzo delle schede wireless

d-i netcfg/wireless_wep string


non si avviano i servizi relativi ai dispositivi pcmcia

d-i     hw-detect/start_pcmcia  boolean false


si selezionano il server da dove scaricare i pacchetti e la directory, dalla radice del server web, dove si trova il mirror di Debian; il collegamento web non passa attraverso proxy

d-i mirror/country string enter information manually
d-i mirror/http/hostname string ftp.it.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string


si installa Debian stable

d-i mirror/suite string stable


i componenti del programma di installazione da scaricare dal server sono quelli della versione stable

d-i mirror/udeb/suite string stable


si evita il messaggio relativo al completamento dell'installazione

d-i prebaseconfig/reboot_in_progress note


l'orologio del BIOS non è impostato su UTC

d-i clock-setup/utc boolean false

se in una macchina IBM compatibile è installato Windows, questo visualizza l'ora impostata nel BIOS e la modifica ad ogni cambio da ora solare a legale e viceversa, quindi Windows visualizza l'ora corretta solo se l'ora del BIOS coincide con quella del fuso orario di appartenenza. Linux effettua il cambio automatico da ora solare a legale e viceversa, senza modificare l'ora del BIOS solo se considera quest'ultima impostata su UTC, e regola il suo orario di sistema sull'ora del BIOS in base alla data e al fuso orario di appartenenza (d-i clock-setup/utc boolean true). In una macchina dual boot bisogna quindi impedire a Linux di effettuare il cambio automatico di orario e lasciare che questo venga effettuato da Windows

impostazione della tastiera italiana

d-i     debian-installer/keymap string  it


impostazione del fuso orario

d-i time/zone string Europe/Rome


volendo si può impostare in automatico la password di root cifrata MD5

d-i passwd/root-password-crypted password [MD5 hash]

al posto di [MD5 hash], copiare quanto ottenuto dal seguente comando (vedere Appendice B.4 del manuale di installazione)

$ echo "miapasswordroot" | mkpasswd -s -H MD5


volendo si può impostare in automatico anche l'utente di lavoro

d-i passwd/user-fullname string Nome Cognome
d-i passwd/username string nomeutente
d-i passwd/user-password-crypted password [MD5 hash]


il boot loader grub viene installato nel MBR se nel disco fisso non vengono rilevati altri sistemi operativi

d-i grub-installer/only_debian boolean true


il boot loader grub viene installato nel MBR se nel disco fisso vengono rilevati altri sistemi operativi

d-i grub-installer/with_other_os boolean true


evita il messaggio relativo al riavvio dopo la prima parte dell'installazione

d-i finish-install/reboot_in_progress note


evita il messaggio relativo a CD o DVD da togliere alla fine dell'installazione

d-i cdrom-detect/eject boolean true


dizionario da usare

d-i     dictionaries-common/default-wordlist    select  italiano (Italian)


configurazione di exim4: consegna della posta in locale all'utente root

exim4-config exim4/no_config boolean false
d-i     exim4/dc_eximconfig_configtype  select  solo consegna locale; non in rete
exim4-config exim4/dc_postmaster string root




Siamo ora alla personalizzazione dei programmi installati. Per massimizzare la personalizzazione conviene selezionare solo la categoria "standard"; in questo modo abbiamo il sistema operativo minimo, solo a riga di comando

tasksel tasksel/first multiselect standard


Installiamo solo i programmi aggiuntivi che servono: si vuole avere l'interfaccia grafica kde base con centro di controllo sufficientemente fornito di strumenti grafici di configurazione, un nutrito gruppo di strumenti di compressione/decompressione file, CUPS e tutti i driver di stampanti, browser web Iceweasel, client di posta Icedove, Openoffice, lettori audio e multimediali e un programma (krfb) per assistenza da remoto via vnc; il (quasi) tutto in lingua italiana

d-i pkgsel/include string discover1 mdetect xresprobe libft-perl xorg kdebase kde-i18n-it knetworkconf cdtool hal-device-manager lm-sensors kpdf ark unrar-free
ncompress unzip zip zoo unzoo bzip2 arj unace p7zip-full cupsys cups-pdf foomatic-db-hpijs foomatic-db-gutenprint foomatic-filters-ppds cupsys-driver-gutenprint
hplip hpijs-ppds cupsys-bsd cupsys-pt ksystemlog kmag knotes kaddressbook gpgsm korganizer icedove icedove-typeaheadfind icedove-inspector icedove-locale-it
ttf-bitstream-vera ttf-freefont enigmail synaptic deborphan kcalc kedit kfloppy kolourpaint kdegraphics-kfile-plugins kipi-plugins ksnapshot akregator krfb
amarok kdemultimedia kaffeine kmix kscd keep iceweasel iceweasel-l10n-it mozplugger openoffice.org openoffice.org-help-it openoffice.org-l10n-it
openoffice.org-thesaurus-it

Attenzione: i pacchetti vengono installati da un modulo del programma di installazione (anna) che si comporta in modo analogo ad apt, quindi l'installazione di un pacchetto comporta l'installazione di tutti i pacchetti da cui questo dipende.
Ciò comporta il fatto che i pacchetti discover1, mdetect, xresprobe e libft-perl, senza i quali non si ha il riconoscimento automatico della scheda video, non vengono installati se non esplicitamente indicati, dal momento che nessun pacchetto dipende strettamente da essi; in loro assenza, quindi, alla fine dell'installazione l'interfaccia grafica non funziona.

configurazione di xorg: rilevazione automatica del mouse

xserver-xorg xserver-xorg/autodetect_mouse boolean true


configurazione di xorg: rilevazione automatica del monitor e sua configurazione

xserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method select medium
xserver-xorg xserver-xorg/config/monitor/mode-list select 1024x768 @ 60 Hz


rimozione dalla cache dei pacchetti .deb scaricati; dopo l'installazione non servono più, si liberano circa 200 MB di spazio su disco

d-i preseed/late_command string rm /target/var/cache/apt/archives/*.deb



Si noti che non è stato fatto alcun cenno al partizionamento in automatico del disco fisso; è possibile automatizzare anche questo, come spiegato nell'Appendice B.4, ma riteniamo che questa parte dell'installazione sia un passaggio delicato e da adattare ad ogni macchina in base alle esigenze di chi deve poi usarla.

La struttura di ogni riga, come spiegato nell'Appendice B.3 del manuale, è del tipo detentore - nome domanda - tipo domanda – valore. Alcuni detentori sono, ad esempio, d-i (debian installer), exim4-config e xserver-xorg. Sono moduli del programma di installazione che vengono di volta in volta chiamati durante il processo di installazione.
Naturalmente un file di preseeding va rivisto ogni volta che cambia il programma di installazione, o anche solo quando ci sono dei cambiamenti nelle dipendenze dei pacchetti.

Siamo alla conclusione di questa breve presentazione. Penso che non sia necessario spiegare l'importanza di sapere con esattezza come è fatto un file di preseeding prima di utilizzarlo per le proprie installazioni, soprattutto nella parte relativa ai programmi che installa, soprattutto se fatto da terzi.
Quanto è stato illustrato negli esempi copre solo una piccola parte delle possibilità offerte da questo strumento, chiunque voglia provarlo potrà sicuramente sperimentare soluzioni che qui non sono state nemmeno ipotizzate; le potenzialità che si notano leggendo la documentazione sono notevoli. Invitiamo tutti a provare lo strumento e ad inviare commenti, esperienze, suggerimenti, critiche e nuove idee.



Gli autori

Franco Vecchiato, convinto sostenitore del software libero, ha iniziato ad utilizzare Linux nel 2001 e da allora lavora come sistemista. Vive a Padova e partecipa attivamente a varie iniziative locali volte alla diffusione del software libero.

Andrea Urbani si avvicina per la prima volta al software libero nel 1997, da quel giorno è amore a prima vista; da molti anni partecipa attivamente a iniziative italiane ed europee del settore. Nella sua attività lavorativa e nel suo tempo libero si occupa di software libero e di sicurezza informatica.


Sinistra <- Server Side Java - parte 1 - Indice Generale - Copertina - Un programma di chat in Perl -> Destra