<- Server Side Java - parte 1 - Indice Generale - Copertina - Un programma di chat in Perl -> |
Sistemi Liberi
di Franco Vecchiato e Andrea Urbani
L'articolo...In questo articolo si illustra un'interessante funzionalità del programma di installazione di Debian Etch. |
L'utente finale, soprattutto quello alle prime armi, in una distribuzione cerca principalmente:
la facilità di installazione,
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.
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).
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:
il programma di installazione, in formato binario direttamente eseguibile dal computer,
un insieme di programmi che compongono il sistema operativo da installare, anch'essi in forma binaria, ma normalmente "impacchettati" in qualche formato.
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:
avvio del programma di installazione e impostazione di parametri per la preparazione della macchina,
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.
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:
le risposte che durante il processo di installazione sono costanti in tutte le installazioni che si eseguono,
le categorie di programmi che si vogliono installare e vengono normalmente richieste durante il processo di installazione, ad esempio categoria "standard" o "desktop",
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:
modificando il primo DVD di installazione di Debian in modo che contenga il file (Ubuntu funziona così),
facendo scaricare il file da un server web.
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.
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:
DVD,
floppy,
CD di netboot,
interfaccia di rete; il boot via rete è possibile con macchine fornite di firmware e interfacce di rete abilitate a farlo.
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.
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 autoriFranco 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. |
<- Server Side Java - parte 1 - Indice Generale - Copertina - Un programma di chat in Perl -> |