B.5. Opzioni avanzate

B.5.1. Uso di comandi personalizzati durante l'installazione

Una funzionalità molto potente e flessibile offerta dagli strumenti di preconfigurazione è la possibilità si eseguire dei comandi o degli script in determinati momenti dell'installazione.

# La preconfigurazione del d-i è intrinsecamente non sicura. Niente
# nell'installatore verifica i tentativi di buffer overflow o di altri
# exploit attraverso i valori presenti in un file di preconfigurazione
# come questo. Usare solo file di preconfigurazione provenienti da fonti
# fidate! Per comprendere il rischio, e poiché è generalmente utile,
# ecco un modo per eseguire automaticamente qualsiasi comando della shell
# all'interno dell'installatore.

# Questo è primo comando, è eseguito il prima possibile, appena dopo la
# lettura della preconfigurazione.
#d-i preseed/early_command string anna-install some-udeb

# Questo è l'ultimo comando, è eseguito appena prima che l'installatore
# termini, ma quando la directory /target è ancora usabile. È possibile
# fare un chroot su /target e usarlo direttamente oppure usare i comandi
# apt-install e in-target per installare dei pacchetti ed eseguire comandi
# nel file system target.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

B.5.2. Uso della preconfigurazione per modificare i valori predefiniti

È possibile usare la preconfigurazione per modificare la risposta predefinita a una domanda ma fare in modo che la domanda venga comunque posta. Per farlo si deve impostare il flag seen a “false” dopo aver impostato il valore della domanda.

d-i foo/bar string valore
d-i foo/bar seen false

Si può estendere questo effetto a tutte le domande inserendo il parametro preseed/interactive=true al prompt boot. Questo può essere utile per effettuare delle prove o il debug del proprio file di preconfigurazione. Quando si usa la preconfigurazione tramite i parametri d'avvio si può richiedere all'installatore di chiedere comunque le domande preconfigurate usando l'operatore “?=” in questo modo foo/bar?=valore. Ovviamente questo ha effetto solo sui parametri che corrispondono alle domande che sono effettivamente visualizzate durante l'installazione e non sui parametri “interni”.

B.5.3. Caricamento in cascata di più file di preconfigurazione

Da un file di preconfigurazione è anche possibile includere anche altri file di preconfigurazione. Qualsiasi impostazione fatta in questi file sovrascrive l'eventuale configurazione fatta dai file caricati in precedenza. Questo permette di inserire, per esempio, una configurazione di rete generica in un file e di mettere alcune configurazioni particolari in altri file.

# Si possono elencare più file separandoli con degli spazi; verranno
# caricati tutti. Anche i file inclusi possono avere al loro interno delle
# direttive preseed/include. Si noti che se i nomi dei file sono relativi,
# sono prelevati dalla stessa directory del file di preconfigurazione che
# gli include.
#d-i preseed/include string x.cfg

# Facoltativamente il programma d'installazione può verificare le checksum
# dei file prima di processarli. Attualmente sono supportati solo le checksum
# md5sum che vanno elencate nello stesso ordine con cui sono inclusi i file.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# Ancora più flessibile, questo esegue un comando di shell e se restituisce
# i nomi dei file di preconfigurazione allora include questi file.
#d-i preseed/include_command \
#      string echo if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Il massimo della flessibilità, questo scarica ed esegue un programma. Il
# programma può usare debconf-set per manipolare il database di debconf; è
# possibile elencare più di uno script separandoli con degli spazi. Si noti
# che se i nomi dei file sono relativi, sono prelevati dalla stessa
# directory del file di preconfigurazione che gli esegue.
#d-i preseed/run string foo.sh

Con la preconfigurazione di tipo initrd e file è possibile anche caricare in cascata una preconfigurazione di tipo network, impostando preseed/url nei file precedenti. Ciò avvia la preconfigurazione via rete appena questa diviene disponibile. Nell'effettuare questa operazione si deve porre particolare attenzione, dato che la preconfigurazione viene eseguita in due occasioni distinte, aprendo la la possibilità che il comando preseed/early venga eseguito nuovamente, con la seconda esecuzione che avviene dopo l'attivazione della rete.