Ubuntu, uno per tutti
Mettiamo il caso che dobbiate installare la vostra distribuzione preferita, non su uno, né su due, ma su un numero imprecisato di computer, diciamo pure qualche decina, e non vogliate stare a passare il CD, o la pennetta, dall'uno all'altro, ed aspettare ogni volta che l'installazione abbia termine. C'è un modo molto semplice di risolvere la cosa: eseguendo una installazione via rete!
In pratica, è sufficiente avere Ubuntu installato solo su di un computer, assieme ad una immagine ISO del cd di istallazione, come lo stesso LiveCD usato per installare il primo computer: io ho usato quello della versione 8.10 Interpid Ibex. Gli altri computer, connessi alla stessa rete locale del primo, vedranno il suo CD di istallazione, che partirà come se fosse inserito nel lettore CD locale, e potrete così eseguire il processo in contemporanea (o quasi) su tutti i computer, cavandovela in un solo pomeriggio, a patto di rispondere alle domande di istallazione, per ognuno dei computer.
I passi da compiere sono ben spiegati nella documentazione di Ubuntu, a cui si rimanda la loro descrizione. Qui invece, voglio spendere qualche parola in più, perché prima di operare, è opportuno avere le idee chiare di ciò che sta per accadere.
Il concetto fondamentale da tenere a mente nell'eseguire i passi indicati dalla guida, è che i computer in rete eseguiranno praticamente tre processi di boot distinti:
- il primo avviene tramite il PXE del BIOS del computer su cui installare, che carica dal server TFTP che è presente nel computer da cui partiamo, il kernel pxelinux, ottenibile scaricando dalla rete il pacchetto
netboot.tar.gz
presente in http://archive.ubuntu.com/ubuntu/dists/intrepid/main/installer-i386/current/images/netboot/ - il secondo boot avviene ancora tramite il server TFTP, ma il kernel utilizzato questa volta è quello presente nella directory
/casper
del CD, debitamente copiato nella directory giusta - il terzo boot, infine, avviene caricando via server NFS, il kernel predisposto per l'esecuzione del LiveCD
Tenuto questo a mente, possiamo riassumere i passi ufficiali come
- configurare ed installare il server DHCP che consente di assegnare un indirizzo IP locale durante la fase di boot via PXE. Il file
/etc/dhcp3/dhcpd.conf
dovrà quindi contenere- il DNS attivo per la rete locale
- il default gateway
- l'intervallo di indirizzi entro cui assegnare
option domain-name-servers 192.168.1.1;
option routers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
filename="pxelinux.0";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.254;
}
sudo service dhcp3-server start
- configurare il TFTP, cambiando
RUN_DAEMON
da "no" a "yes" in/etc/default/tftpd-hpa
, e mandarlo in esecuzione, consudo service openbsd-inetd start
- scaricare il file http://archive.ubuntu.com/ubuntu/dists/intrepid/main/installer-i386/current/images/netboot/netboot.tar.gz e scomprimerlo, ottenendo la directory
netboot
, il cui contenuto va copiato in/var/lib/tftpboot
in modo che li sia presente il link apxelinux.0
- montare la ISO del CD (che abbiamo lasciato sulla Scrivania) su
/mnt
, eseguendosudo mount -o loop /home/alef/Scrivania/Ubuntu_8.10_i386.iso /mnt
- copiare i files
/mnt/casper/vmlinuz
e/mnt/casper/initrd.gz
in/var/lib/tftpboot/casper
- aggiungere al file
/var/lib/tftpboot/ubuntu-installer/i386/pxelinux.cfg/default
le tre lineeLABEL live
kernel /casper/vmlinuz
append initrd=/casper/initrd.gz boot=casper netboot=nfs nfsroot=192.168.0.10:/mnt --
/casper
del CD, serviti via TFTP, a cui poi seguirà un nuovo boot, montando via NFS il CD originale, che si comporterà quindi come se fosse presente localmente.
- non rimane ora che esportare via NFS il filesystem del CD della distro, ovvero
- installare
nfs-kernel-server
- aggiungere in
/etc/exports
la linea/mnt *(ro,sync,no_root_squash)
- ri-lanciare l'NFS con il comando
sudo service nfs-kernel-server restart
- installare
E' tutto!! Ora non vi resta che accendere uno dei computer su cui installare Ubuntu da rete, agire sulla tastiera per convincerlo a fare il boot via PXE, e... lasciare che si compia la magia!!