Questo capitolo contiene una breve panoramica del processo di generazione e le istruzioni per utilizzare i tre tipi di immagine più comunemente utilizzati. La tipologia di immagine più versatile, iso-hybrid, può essere usata su una macchina virtuale, supporto ottico o dispositivo di archiviazione portatile USB. In alcuni casi particolari, come l'utilizzo della persistenza, la hdd potrebbe essere più adatta per i dispositivi USB. Il capitolo termina con le istruzioni per costruire e usare un'immagine di tipo net, che è un poco più complessa a causa del setup richiesto sul server. Si tratta di un argomento leggermente avanzato per chi non ha familiarità con l'avvio da rete, ma è incluso qui perché, una volta che il setup è stato fatto, è un modo molto comodo per collaudare e distribuire immagini facendo il boot nella rete locale senza la seccatura di doversi occupare dei mezzi di divulgazione dell'immagine.
Throughout the chapter, we will often refer to the default filenames produced by live-build. If you are downloading a prebuilt image instead, the actual filenames may vary.
Per sistema live generalmente si intende un sistema operativo che può essere avviato da un supporto rimovibile, come un CD-ROM o una chiavetta USB oppure da una rete, pronto per l'uso senza alcuna installazione su hard disk con una configurazione automatica fatta durante l'esecuzione (vedere Glossario).
Con Debian Live, si tratta di un sistema operativo Debian GNU/Linux, generato per una delle architetture previste (attualmente amd64, i386, powerpc e sparc). È costituito dalle seguenti parti:
È possibile usare live-build per creare l'immagine di sistema secondo le proprie specifiche, scegliere un kernel Linux, il suo initrd ed un bootloader per avviarli, tutto in un unico formato che dipende dal mezzo (immagini ISO9660, immagine disco, ecc.)
Indipendentemente dal tipo di immagine, per crearne una è necessario eseguire ogni volta la stessa procedura. Come primo esempio si eseguirà la seguente sequenza di comandi di live-build per creare un'immagine ISO ibrida di base contenente soltanto il sistema Debian standard senza X.org. È adatta per essere masterizzata su CD o DVD e anche per essere copiata su una penna USB.
In primo luogo eseguire il comando lb config, il quale creerà una gerarchia "config/" nella directory corrente e che verrà utilizzata da altri comandi:
$ lb config
Non viene passato alcun parametro a lb config, in modo da utilizzare le impostazioni predefinite per le varie opzioni, vedere Il comando lb config) per maggiori dettagli.
Ora che si ha una gerarchia "config/" si può generare l'immagine con il comando lb build:
# lb build
Questo processo può richiedere tempo, a seconda della velocità della connessione di rete. Una volta completato, nell'attuale directory ci sarà un file immagine binary.hybrid.iso pronto da usare.
Dopo aver costruito o scaricato un'immagine ISO ibrida, ottenibile all'indirizzo ‹http://www.debian.org/CD/live/›, il passo successivo è preparare il supporto per l'avvio, che sia esso un CD-R(W), un DVD-R(W) o una penna USB.
Masterizzare un'immagine ISO è semplice, basta installare wodim e utilizzarlo da riga di comando; ad esempio:
# apt-get install wodim
$ wodim binary.hybrid.iso
Le immagini ISO preparate con il comando isohybrid, come quelle prodotte in modo predefinito da iso-hybrid, possono essere semplicemente copiate su una penna USB con il programma dd o suo equivalente. Inserire una penna USB con una dimensione sufficiente a contenere l'immagine e determinare quale device sia, al quale in seguito si farà riferimento come ${USBSTICK}.Questo è il device della penna, ad esempio /dev/sdb, non una partizione come /dev/sdb1! È possibile trovare il nome corretto controllando l'output di dmesg una volta inserita, o meglio ancora con il comando ls -l /dev/disk/by-id.
Una volta che si è certi sul nome del device, usare il comando dd per copiare l'immagine sulla penna. Questo sovrascriverà qualsiasi dato presente su di essa!
$ dd if=binary.hybrid.iso of=${USBSTICK}
La prima volta che si avvia il supporto live, CD, DVD, penna USB o PXE, può essere necessario impostare il BIOS del computer, ma giacché questi variano parecchio in opzioni e scorciatoie, non siamo in grado di descriverli. Alcuni BIOS offrono un menu per selezionare il device in fase di boot, in caso sia disponibile nel vostro sistema è il modo più semplice. Altrimenti è necessario accedere alla sua configurazione e modificare l'ordine di avvio per posizionare la periferica di boot del sistema live prima di quella usuale.
Avviando il supporto si otterrà un menu, premendo il tasto enter il sistema partirà utilizzando la voce Live e le opzioni predefinite. Per ulteriori informazioni sulle opzioni di boot, si veda la voce "help" nel menu e le pagine di manuale di live-boot e live-config all'interno del sistema.
Supponendo di aver selezionato Live e avviato l'immagine desktop predefinita, dopo i messaggi di avvio si dovrebbe automaticamente accedere all'account user e avere il desktop pronto all'uso. Se invece si è avviata un'immagine per la sola console, come le preconfezionate standard o rescue, si accederà alla console dell'account user ed avere un prompt di shell pronto da usare.
Per lo sviluppo delle immagini live, può essere un notevole risparmio di tempo eseguirle in una macchina virtuale (VM). Non senza qualche raccomandazione:
A condizione che si possa lavorare entro questi vincoli, cercare il software disponibile per la virtualizzazione e scegliere quello adatto alle proprie necessità.
Il programma più versatile in Debian è QEMU. Se il processore gestisce la virtualizzazione hardware utilizzare il pacchetto qemu-kvm; la descrizione elenca brevemente i requisiti.
Per prima cosa installare qemu-kvm o altrimenti qemu, nel qual caso il nome del programma nei successivi sarà qemu invece di kvm. Il pacchetto qemu-utils è inoltre utile per creare immagini di dischi virtuali con qemu-img.
# apt-get install qemu-kvm qemu-utils
Avviare un'immagine ISO è semplice:
$ kvm -cdrom binary.hybrid.iso
Per maggiori dettagli si vedano le pagine di manuale.
Per provare la ISO con virtualbox-ose:
# apt-get install virtualbox-ose virtualbox-ose-dkms
$ virtualbox
Creare una nuova macchina virtuale, modificare le impostazione di archiviazione in modo da usare binary.hybrid.iso come dispositivo CD/DVD, e avviare la macchina.
$ echo virtualbox-ose-guest-x11 >> config/package-lists/my.list.chroot
La creazione di un'immagine HDD è simile alla ISO ibrida sotto tutti gli aspetti ad eccezione della necessità di specificare l'opzione -b hdd e che il nome del file risultante è binary.img e non può essere masterizzato. È adatta per avviarsi da chiavette USB, dischi rigidi USB, e da svariati altri dispositivi di archiviazione portatili. In genere per questo scopo può essere usata un'immagine ISO ibrida, ma se si ha un BIOS che non supporta le immagini ibride, o si vuole usare lo spazio rimanente sul supporto per altri scopi, come una partizione persistente, allora occorre un'immagine HDD.
# lb clean --binary
Eseguire il comando lb config come prima, questa volta specificando però il tipo di immagine HDD:
$ lb config -b hdd
Si crei ora l'immagine con il comando lb build:
# lb build
Quando la costruzione è terminata dovrebbe essere presente un file binary.img nella directory corrente.
L'immagine binaria generata contiene una partizione VFAT e il bootloader syslinux, pronti per essere scritti direttamente su una penna USB. Dal momento che utilizzare un'immagine HDD è come utilizzare un'immagine ISO ibrida via USB, seguire le istruzioni contenute in Utilizzare un'immagine live ISO ibrida tenendo però conto che il nome del file sarà binary.img invece di binary.hybrid.iso.
Installare qemu come descritto in Provare un'immagine ISO con QEMU; quindi eseguire kvm o qemu, a seconda di quale versione è necessaria al sistema ospitante, specificando binary.img come disco rigido principale.
$ kvm -hda binary.img
Per utilizzare lo spazio libero che rimane dopo aver copiato il file binary.img su una penna USB, usare uno strumento di partizionamento come gparted o parted per creare una nuova partizione. La prima partizione verrà utilizzata dal sistema Debian Live.
# gparted ${USBSTICK}
Dopo aver creato la partizione, dove ${PARTITION} è il nome della partizione, ad esempio /dev/sdb2, si deve creare su di essa un filesystem. Una scelta possibile potrebbe essere ext4.
# mkfs.ext4 ${PARTITION}
Nota: se si desidera utilizzare lo spazio extra con Windows pare che questo sistema operativo non possa accedere a nessuna partizione eccetto la prima. Alcune soluzioni a questo problema sono state discusse sulla nostra mailing list, ma non sembrano esserci risposte semplici. Ricorda: ogni volta che si installa un nuovo file binary.img sulla penna, tutti i dati sulla chiavetta saranno persi perché la tabella delle partizioni viene sovrascritta con i contenuti dell'immagine, per cui salvare prima la propria partizione extra in modo da ripristinarla dopo l'aggiornamento dell'immagine live.
La seguente sequenza di comandi creerà un'immagine netboot di base contenente il sistema Debian standard senza X.org. È adatta per il boot tramite rete.
# lb clean --binary
Per configurare l'immagine per l'avvio da rete, eseguire il comando lb config come segue:
$ lb config -b net --net-root-path "/srv/debian-live" --net-root-server "192.168.0.1"
Diversamente dalle immagini ISO e HDD, il boot via rete non fornisce un'immagine del filesytem al client, perciò i file devono essere forniti via NFS. Le opzioni net-root-path e net-root-server specificano, rispettivamente, il percorso e il server del server NFS dove l'immagine del filesystem sarà situata all'avvio. Accertarsi che questi siano impostati su valori adeguati alla propria rete.
Si crei ora l'immagine con il comando lb build:
# lb build
In un avvio tramite rete, il client esegue una piccola parte di software che normalmente risiede sulla EPROM della scheda Ethernet. Questo programma invia una richiesta DHCP per ottenere un indirizzo IP e le informazioni su cosa fare in seguito. In genere il passo successivo è ottenere un bootloader di di livello superiore attraverso il protocollo TFTP. Questi potrebbe essere pxelinux, GRUB, o anche avviare direttamente un sistema operativo come Linux.
Per esempio, estraendo l'archivio generato binary-net.tar.gz nella directory /srv/debian-live, si troverà l'immagine del filesystem in live/filesystem.squashfs mentre il kernel, initrd ed il bootloader pxelinux in tftpboot/debian-live/i386.
Per abilitare l'avvio tramite rete vanno ora configurati tre servizi:i server DHCP, TFTP e NFS.
Si deve configurare il server DHCP della rete per essere sicuri di fornire un indirizzo IP al sistema client che si avvia tramite rete, e notificare la posizione del bootloader PXE.
Ecco un esempio, scritto per un server DHCP ISC isc-dhcp-server nel file di configurazione /etc/dhcp/dhcpd.conf:
# /etc/dhcp/dhcpd.conf - configuration file for isc-dhcp-server
ddns-update-style none;
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.254;
next-server servername;
filename "pxelinux.0";
}
Fornisce al sistema il kernel e il ramdisk iniziale in fase di esecuzione.
Si installi il pacchetto tftpd-hpa, che mette a disposizione tutti i file contenuti in una directory root, di solito /srv/tftp. Affinché si possa disporre dei file contenuti in /srv/debian-live/tftpboot, eseguire il seguente comando come utente root:
# dpkg-reconfigure -plow tftpd-hpa
e inserire la nuova directory del server tftp quando viene richiesto.
Una volta che il computer ospite ha scaricato e avviato un kernel Linux e caricato il suo initrd, cercherà di montare l'immagine del filesystem Live tramite un server NFS.
Bisogna installare il pacchetto nfs-kernel-server.
Quindi, rendere disponibile l'immagine del filesystem via NFS aggiungendo una riga come la seguente in /etc/exports:
/srv/debian-live *(ro,async,no_root_squash,no_subtree_check)
e comunicare il nuovo export al server NFS con il seguente comando:
# exportfs -rv
Configurare questi tre servizi può essere un po' problematico. Serve un po' di pazienza per farli funzionare assieme. Per ulteriori informazioni, si veda il wiki syslinux ‹http://syslinux.zytor.com/wiki/index.php/PXELINUX› o il manuale del Debian Installer alla sezione per l'avvio TFTP da rete ‹http://d-i.alioth.debian.org/manual/en.i386/ch04s05.html›. Ciò può essere d'aiuto, considerato che il procedimento è molto simile.
La creazione di immagini netboot è resa semplice dal potere di live-build, ma provare le immagini su una macchina reale può essere davvero dispendioso in termini di tempo.
Per semplificarsi la vita, si può usare la virtualizzazione. Ci sono due soluzioni.
Modificare /etc/qemu-ifup:
#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2
Procurarsi o compilare grub-floppy-netboot (su svn).
Lanciare qemu con "-net nic,vlan=0 -net tap,vlan=0,ifname=tun0"
#!/usr/bin/vmware
config.version = "8"
virtualHW.version = "4"
memsize = "512"
MemAllowAutoScaleDown = "FALSE"
ide0:0.present = "FALSE"
ide1:0.present = "FALSE"
floppy0.present = "FALSE"
sound.present = "FALSE"
tools.remindInstall = "FALSE"
ethernet0.present = "TRUE"
ethernet0.addressType = "generated"
displayName = "Test Boot PXE"
guestOS = "other"
ethernet0.generatedAddress = "00:0c:29:8d:71:3b"
uuid.location = "56 4d 83 72 5c c4 de 3f-ae 9e 07 91 1d 8d 71 3b"
uuid.bios = "56 4d 83 72 5c c4 de 3f-ae 9e 07 91 1d 8d 71 3b"
ethernet0.generatedAddressOffset = "0"