Automatizzare l’installer ubiquity 1

Share Button

L’howto creare un ubuntu live cd puo’ essere utilizzato anche per creare cd di installazione personalizzati.
Se nel livecd e’ presente il tool ubiquity (l’installer grafico di ubuntu), l’operazione di installazione non fara’ altro che copiare tutto il contenuto del cd sulla macchina ospite una volta preparato tutto l’ambiente (riconoscimento hardware, partizionamento del disco, configurazione utenti, lingua, tastiera ecc…).
In molte occasioni si ha la necessita’ di voler fare in modo che le domande fatte all’utente per creare l’ambiente necessario all’installazione siano automatizzate.

Tale operazione e’ possibile configurando due file: quello della configurazione del boot loader del cd di installazione (isolinux.cfg) e creando un file di istruzioni preseed (le stesse utilizzate da debian-installer con qualche aggiunta) che verra’ interpretato da ubiquity.

Nello specifico il primo file (invocato da isolinux al suo avvio) non fa altro che informare il livecd di eseguire ubiquity, con opportuni parametri a cui successivamente associare l’opportuno file preseed con tutte le informazioni di automazione.


isolinux.cfg


Questo un esempio di isolinux.cfg
(maggiori dettagli sono descritti al 3 del post di riferimento a questo articolo)


LABEL install
menu label ^Install
kernel /casper/vmlinuz
append automatic-ubiquity noprompt only-ubiquity file=/cdrom/preseed/install.seed boot=casper initrd=/casper/initrd.gz quiet --

L’istruzione che richiama sia ubiquity e il relativo preseed file e’ contenuta nella voce append
Nei dettagli:

  • automatic-ubiquity: informa che ubiquity deve essere avviato in automatico
  • only-ubiquity: ubiquity sara’ l’unica applicazione che verra’ mostrata all’utente
  • file=/cdrom/preseed/install.seed: si tratta del percorso del file seed (in questo caso install.seed) che verra’ eseguito dal sistema

I parametri possono essere inseriti manualmente.
Il percorso del file di preseed puo’ essere anche un indirizzo web. In tal caso la sintassi e’
url=http://indirizzo.del.server/file.preseed

Il file preseed


Per una questione di ordine si e’ scelto di copiare il file all’interno della directory preseed (mkdir -p $HOME/work/image/preseed).
Esempi di file preseed se ne trovano diversi in rete.
Quello qui proposto permette di avere una installazione priva di alcuna domanda all’utente, che formatta l’intero disco rigido e crea un utente con relativa password.
Le righe introdotte dal simbolo # sono commenti

# Impostazione del lingua usata dall'installatore
ubiquity languagechooser/language-name select English
# Impostazione del paese
ubiquity countrychooser/shortlist select IT
# Impostazione della time zone
ubiquity time/zone select Europe/Rome
# Impostazione della tabella caratteri utilizzata dall'installatore
ubiquity debian-installer/locale select en_US.UTF-8
# Altri possibili set di caratteri utilizzabili
ubiquity localechooser/supported-locales multiselect it_IT.UTF-8
# ad uso interno
console-setup console-setup/layoutcode string it
# origine della tastiera
console-setup console-setup/layout select Italian
# layout della tastiera
console-setup console-setup/variantcode select U.S. English
# insieme di caratteri utilizzabili nella console
console-setup console-setup/codeset select . Combined - Latin; Slavic Cyrillic; Hebrew; basic Arabic
# metodo di partizionamento - attenzione che la frase deve essere uguale
# a quella scelta per l'opzione languagechooser/language-name
ubiquity partman-auto/init_automatically_partition select Guided - use entire disk
# ad uso interno
ubiquity partman-auto/method string regular
# schema di partizionamento (vale discorso sulla lingua)
ubiquity partman-auto/choose_recipe select All files in one partition (recommended for new users)
# Conferma di scrittura nella nuova partizione
ubiquity partman/confirm_write_new_label boolean true
ubiquity partman/choose_partition select Finish partitioning and write changes to disk
ubiquity partman/confirm boolean true
# Nome completo del nuovo utente
ubiquity passwd/user-fullname string Napo
user-setup passwd/user-fullname string Napo
# username scelto per l'account
ubiquity passwd/username string napo
user-setup passwd/username string napo
# password (criptata) scelta per l'utente
ubiquity passwd/user-password-crypted password $1$owHRIB1k$XrCXGTqxu8mYe7.OBPiGl.
user-set passwd/user-password-crypted password $1$owHRIB1k$XrCXGTqxu8mYe7.OBPiGl.

# Select operating systems to import from:
ubiquity migration-assistant/partitions multiselect

# Non visualizza il sommario a fine installazione
ubiquity ubiquity/summary note

#Esegue lo script post_script.sh a fine installazione
ubiquity ubiquity/success_command string /target/post_script.sh

Per generare la password criptata si deve fare uso di mkpasswd con opportuni parametri.
Qui sotto un esempio in cui la password scelta e’ “nontelodico
echo nontelodico | mkpasswd -s -H md5

L’ultima istruzione del file preseed di esempio indica che, a fine delle azioni di installazione di ubiquity deve essere eseguito uno script.
Questa operazione torna spesso utile per fare ulteriori personalizzazioni all’installazione.
Un aspetto fondamentale di questa operazione e’ quello di tenere ben presente i percorsi con cui raggiungere le varie periferiche.
Ubiquity, una volta preparato il disco rigido (partizionamento e formattazione), collega quest’ultimo nel path /target.
Nel caso specifico, dato che ubiquity copia l’intero contenuto del cd – esclusi i file del manifest destinati al desktop (vd. passo 3) sul disco rigido, lo script e’ stato inserito nella radice file system compresso con squashfs (ossia in $HOME/work/chroot/ – vedi passo 1).

Info utili:
https://wiki.ubuntu.com/Ubiquity

Share Button

One comment on “Automatizzare l’installer ubiquity

  1. Reply Max Apr 19,2011 17:25

    Ciao, ho letto i tre articoli che riguardano le personalizzazioni e le automazioni di ubiquity, ed avrei una domanda da porti:
    Vorrei fare in modo che all’avvio non si avviasse soltanto ubiquity, ma soltanto ubiquity + florence (una tastiera virtuale), ovviamente senza il resto dell’interfaccia grafica. Credi sia possibile tramite il passaggio di qualche parametro a GRUB? O dovrei creare un piccolo script che avvia sia ubiquity che florence in parallelo? ed in questo caso, come spiego a GRUB che deve avviare quello script, e solo lui insieme ad X al posto di ubiquity?

Leave a Reply