B.2. Uso della preconfigurazione

Le prime cose da fare sono creare un file di preconfigurazione e metterlo nella posizione da cui lo si vuole usare. La creazione del file di preconfigurazione è trattata in seguito, invece lo spostamento del file è molto semplice per la preconfigurazione network o quando si vuole leggere il file da un dischetto o da una chiavetta USB. Invece se si vuole mettere il file su un CD o DVD è necessario masterizzare una nuova immagine ISO. Come preparare il file di preconfigurazione per initrd è fuori dagli scopi di questo documento, si consulti la documentazione del installatore Debian per gli sviluppatori.

Un file di preconfigurazione di esempio, che può essere usato come base per il proprio file di preconfigurazione è disponibile in https://www.debian.org/releases/buster/example-preseed.txt. Questo file è creato partendo dai frammenti utilizzati in questa appendice.

B.2.1. Caricamento del file di preconfigurazione

Se si utilizza la preconfigurazione initrd, bisogna assicurarsi solo che il file preseed.cfg si trovi nella directory principale del initrd. L'installatore automaticamente verifica se questo file è presente e lo carica.

Per gli altri metodi di preconfigurazione è necessario specificare durante l'avvio dell'installatore quale file usare. Normalmente questo può essere fatto passando al kernel un determinato parametro d'avvio, manualmente durante l'avvio oppure tramite il file di configurazione del boot loader (p.e. syslinux.cfg) aggiungendo il parametro alla fine delle righe «append» per il kernel.

Se si specifica un file di preconfigurazione nella configurazione del boot loader, è possibile modificare la configurazione in modo che non sia necessario premere Invio per avviare l'installazione. Con syslinux si può ottenere questo risultato impostando il timeout a 1 in syslinux.cfg.

Per essere sicuri che l'installatore usi il file di preconfigurazione corretto si può, opzionalmente, specificare una checksum per il file. Attualmente la checksum deve essere di tipo md5sum e, se viene specificata, il file di preconfigurazione la deve verificare altrimenti l'installatore non userà quel file.

Parametri di avvio da specificare:
- con avvio da rete:
  preseed/url=http://host/percorso/di/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- oppure
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- con avvio da un CD masterizzato:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- con installazione da un supporto USB (mettere il file di preconfigurazione
  nella directory principale della chiavetta USB):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Notare che quando preseed/url, preseed/file e preseed/file/checksum sono passati come parametri di avvio possono essere abbreviati rispettivamente con url, file e preseed-md5.

B.2.2. Uso dei parametri di avvio per la preconfigurazione

Anche se un file di preconfigurazione non può essere usato per preconfigurare alcuni passi, l'installazione può avvenire ugualmente in modo completamente automatico dato che è possibile passare i valori di preconfigurazione tramite la riga di comando all'avvio dell'installatore.

I parametri di avvio possono essere usati anche per impostare le risposte ad alcune domande senza usare la preconfigurazione. In questo manuale ci sono esempi in cui questa funzionalità è particolarmente utile.

Per impostare un valore da usare all'interno di installatore Debian è sufficiente passare percorso/alla/variabile=valore per qualsiasi variabile di preconfigurazione mostrata negli esempi di questa appendice. Se un valore deve essere usato per configurare dei pacchetti sul sistema installato è necessario inserire come prefisso il proprietario[22] della variabile in questo modo proprietario:percorso/alla/variabile=valore. Se non si specifica il proprietario, il valore della variabile non viene copiato nel database di debconf sul sistema installato e quindi non può essere usato durante la successiva configurazione del relativo pacchetto.

Normalmente una domanda preconfigurata non viene posta. Per impostare la risposta predefinita a una domanda e far in modo che la domanda sia comunque posta, usare l'operatore «?=» al posto di «=». Si veda Sezione B.5.2, «Uso della preconfigurazione per modificare i valori predefiniti».

Alcune delle variabili che più frequentemente sono impostate dal prompt boot dispongono di un'abbreviazione. Negli esempi contenuti in questa appendice è usata, quando disponibile, l'abbreviazione al posto della variabile completa. Per esempio alla variabile preseed/url è stato assegnato l'alias url. Un altro esempio è l'alias tasks che viene tradotto in tasksel:tasksel/first.

L'uso di «---» nelle opzioni d'avvio ha un significato speciale, i parametri del kernel che seguono l'ultimo «---» potrebbero essere copiati nella configurazione del bootloader nel sistema installato (solo se il boot loader è supportato dall'installatore). L'installatore filtra qualsiasi opzione (come le opzioni di preconfigurazione) che riesce a riconoscere.

[Nota] Nota

Gli attuali kernel linux (2.6.9 e successivi) accettano al massimo 32 opzioni sulla riga di comando e 32 opzioni d'ambiente, comprese quelle aggiunte dal sistema d'installazione. Nel caso si superino questi limiti il kernel si blocca. Le versioni precedenti del kernel accettano un numero inferiore di opzioni.

Nella maggior parte dei casi alcune delle opzioni predefinite nel file di configurazione del boot loader, come vga=normal possono essere tranquillamente rimosse per permettere l'aggiunta di ulteriori opzioni di preconfigurazione.

[Nota] Nota

Non sempre potrebbe essere possibile specificare valori con spazi come parametro d'avvio, persino se si delimitano con delle virgolette.

B.2.3. Modalità «auto»

Ci sono alcune funzionalità di Debian Installer che combinate insieme permettono di ottenere installazioni automatiche e personalizzate (anche molto complesse) semplicemente passando delle righe di comando al prompt boot.

Per attivare queste funzionalità si deve scegliere Automated install dal menu di avvio, su alcune architetture e in alcuni metodi di avvio è chiamato auto. Quindi, in questa sezione, auto non è un parametro ma si riferisce alla voce nel menu di avvio che poi deve essere seguita dai parametri di avvio. Consultare in Sezione 5.1.7, «La schermata di avvio» le informazioni su come aggiungere i parametri di avvio.

Per illustrare queste funzionalità sono riportati alcuni esempi su come possono essere usate dal prompt boot:

auto url=autoserver

Questa funzionalità assume la presenza di un server DHCP che indichi alla macchina un server DNS per risolvere autoserver, eventualmente aggiungendo il dominio locale se fornito dal DHCP. Se questa funzione è usata su una macchina del dominio esempio.com e se il DHCP è configurato correttamente allora il file di preconfigurazione viene recuperato da http://autoserver.esempio.com/d-i/buster/./preseed.cfg.

L'ultima parte dell'URL (d-i/buster/./preseed.cfg) è impostata in auto-install/defaultroot, il cui valore predefinito contiene la directory buster per permettere alle versioni successive di specificare il proprio nome in codice e quindi permettere migrazioni future in modo controllato. Il /./ viene usato per indicare la directory principale relativamente a cui le restanti parti del percorso possono essere ancorate (da usarsi in preseed/include e preseed/run); questo permette di specificare file sia come URL completi, come percorsi inizianti con / e quindi ancorati oppure come percorsi relativi dalla posizione in cui è stato trovato l'ultimo file di preconfigurazione. Questo può essere usato per costruire script più portabili, dove l'intera gerarchia di script può essere spostata in una nuova posizione senza comprometterne il funzionamento, per esempio copiando i file in una chiavetta USB quando in precedenza erano ospitati da server web. In questo esempio, se il file di preconfigurazione imposta preseed/run al valore /scripts/late_command.sh, il file viene prelevato da http://autoserver.esempio.com/d-i/buster/./scripts/late_command.sh.

Se non esiste un'infrastruttura DHCP o DNS locale oppure se non si vuole usare il percorso predefinito per il file preseed.cfg, è comunque possibile usare un URL esplicita oppure, quando non si usa l'elemento /./, viene ancorata al punto di partenza del percorso (cioè al terzo / nella URL). Segue un esempio che richiede un minimo supporto da parte della rete locale:

auto url=http://192.168.1.2/percorso/di/mypreseed.file

Il modo in cui funziona è questo:

  • quando manca il protocollo nella URL, viene assunto http;

  • se la sezione per il nome host non contiene dei punti, viene aggiunto il dominio indicato da DHCP;

  • se dopo il nome host non ci sono /, viene usato il percorso predefinito.

Oltre l'URL è possibile specificare anche altre impostazioni che non influenzano direttamente il comportamento del installatore Debian ma che possono essere passate a un qualsiasi script specificato con preseed/run all'interno del file di preconfigurazione. Al momento l'unico esempio di questa caratteristica è auto-install/classes (che dispone dell'alias classes) e può essere usato in questo modo:

auto url=esempio.com classes=classe_A;classe_B

Le classi possono, per esempio, indicare il tipo di sistema da installare oppure la localizzazione da usare.

Ovviamente è possibile estendere questo concetto e, nel caso, è ragionevole usare il namespace auto-install, usando nei propri script qualcosa di simile a auto-install/style. Se si necessitasse questa possibilità si consiglia di inviare una segnalazione alla mailing list in modo da evitare conflitti nel namespace ed eventualmente aggiungere un alias per i nuovi parametri.

La possibilità di scegliere all'avvio auto non è ancora disponibile su tutte le architetture. È possibile ottenere lo stesso effetto semplicemente aggiungendo i parametri auto=true priority=critical nella riga di comando per il kernel. Il parametro del kernel auto è un alias di auto-install/enable e se impostato a true ritarda le domande su localizzazione e tastiera fino a quando non è data la possibilità di preconfigurarle, mentre l'impostazione priority è un alias di debconf/priority e impostarla a critical blocca la richiesta di qualsiasi domanda con priorità inferiore.

Altre opzioni che possono risultare utili quando si cerca di automatizzare un'installazione con DHCP sono: interface=auto netcfg/dhcp_timeout=60 che indica alla macchina di usare il primo dispositivo di rete attivo e di essere un po' più paziente durante l'attesa della risposta all'interrogazione DHCP.

[Suggerimento] Suggerimento

Un esempio esaustivo su come utilizzare questa infrastruttura, compresi degli script e delle classi d'esempio, può essere trovato sul sito web dello sviluppatore. Sono disponibili anche altri esempi che mostrano come, usando in modo creativo la preconfigurazione, si possono ottenere molti altri interessati effetti.

B.2.4. Alias utilizzati nella preconfigurazione

I seguenti alias possono risultare utili quando si usa la preconfigurazione (in modalità auto). Notare che questi sono semplicemente degli alias più brevi per i nomi delle domande e che è sempre necessario specificare anche un valore, per esempio auto=true o interface=eth0.

priority debconf/priority
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
theme debian-installer/theme
auto auto-install/enable
classes auto-install/classes
file preseed/file
url preseed/url
domain netcfg/get_domain
hostname    netcfg/get_hostname
interface netcfg/choose_interface
protocol mirror/protocol
suite mirror/suite
modules anna/choose_modules
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
dmraid disk-detect/dmraid/enable
keymap keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum

B.2.5. Uso di un server DHCP per specificare un file di preconfigurazione

È possibile usare anche DHCP per indicare un file di preconfigurazione da scaricare dalla rete, questo è possibile perché DHCP consente il passaggio del nome di un file fra server e client. Normalmente il file specificato è quello per l'avvio dalla rete, però se al suo posto è inserito un URL allora il programma d'installazione scarica il file dall'URL e lo usa come un file di preconfigurazione. Segue un esempio di come deve essere impostato il file dhcpd.conf per la versione 3 del server DHCP di ISC (il pacchetto Debian isc-dhcp-server).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Notare che l'esempio precedente limita la specifica del nome del file ai soli client DHCP che si identificano come «d-i», quindi ha effetto solo sul programma d'installazione e non influenza i normali client DHCP. Si può anche mettere il testo in una sezione del file di configurazione in modo che sia usata da un solo host per impedire la preconfigurazione di tutte le macchine che si installano sulla propria rete.

Un modo corretto per usare la preconfigurazione tramite DHCP è preconfigurare i soli valori specifici della propria rete, per esempio quale mirror Debian usare. In questo modo tutte le installazioni fatte sulla propria rete hanno già attivo un buon mirror, ma il resto della configurazione deve essere fatto interattivamente. L'uso della preconfigurazione tramite DHCP per fare la completa configurazione delle installazioni Debian deve essere fatto con molta cautela.



[22] Il proprietario di una variabile debconf (o modello) è normalmente il nome del pacchetto che contiene il corrispondente modello. Le variabili usate all'interno dell'installatore hanno come proprietario «d-i». I modelli e le variabili possono avere più di un proprietario, questo aiuta a determinare in quali casi possono essere eliminati dal database di debconf quando il pacchetto viene rimosso.