Manuale di Debian Live

A proposito

1. A proposito di questo manuale

1.1 Per gli impazienti
1.2 Glossario
1.3 Autori
1.4 Contribuire a questo documento
1.4.1 Applicare le modifiche
1.4.2 Traduzione

2. A proposito del progetto Debian Live

2.1 Motivazioni
2.1.1 Cosa c'è di sbagliato con gli attuali sistemi live
2.1.2 Perché creare il proprio sistema live?
2.2 Filosofia
2.2.1 Solamente pacchetti da Debian "main", inalterati.
2.2.2 Nessun pacchetto di configurazione per il sistema live
2.3 Contatti

Utente

3. Installazione

3.1 Requisiti
3.2 Installare live-build
3.2.1 Dal repository Debian
3.2.2 Da sorgenti
3.2.3 Da "istantanee"
3.3 live-boot e live-config
3.3.1 Dal repository Debian
3.3.2 Da sorgenti
3.3.3 Da "istantanee"

4. Nozioni di base

4.1 Che cos'è un sistema live?
4.2 Primi passi: creare un'immagine ISO ibrida
4.3 Utilizzare un'immagine ISO live ibrida
4.3.1 Masterizzare un'immagine ISO su un supporto fisico
4.3.2 Copiare un'immagine ISO ibrida su una penna USB
4.3.3 Avviare il supporto live
4.4 Utilizzare una macchina virtuale per le prove
4.4.1 Provare un'immagine ISO con QEMU
4.4.2 Provare un'immagine ISO con virtualbox-ose
4.5 Creare un'immagine HDD
4.6 Utilizzare un'immagine HDD
4.6.1 Provare un'immagine HDD con Qemu
4.6.2 Usare lo spazio rimanente su una penna USB
4.7 Creare un'immagine netboot
4.7.1 Server DHCP
4.7.2 Server TFTP
4.7.3 Server NFS
4.7.4 Come provare una netboot
4.7.5 Qemu
4.7.6 VMWare Player

5. Panoramica degli strumenti

5.1 live-build
5.1.1 Il comando lb config
5.1.2 Il comando lb build
5.1.3 Il comando lb clean
5.2 Il pacchetto live-boot
5.3 Il pacchetto live-config

6. Gestire una configurazione

6.1 Utilizzare auto per gestire i cambiamenti di configurazione
6.2 Esempi di script automatici

7. Panoramica sulla personalizzazione

7.1 Configurazione in fase di compilazione e di avvio
7.2 Fasi della creazione
7.3 Integrare la configurazione di lb con dei file
7.4 Personalizzazione dei compiti

8. Personalizzare l'installazione dei pacchetti

8.1 Sorgenti dei pacchetti
8.1.1 Distribuzione, le aree di archivio e le modalità
8.1.2 Mirror delle distribuzioni
8.1.3 Mirror delle distribuzioni usati in fase di compilazione
8.1.4 Mirror delle distribuzioni usate durante l'esecuzione
8.1.5 Repository addizionali
8.2 Scegliere i pacchetti da installare
8.2.1 Elenchi di pacchetti
8.2.2 Elenchi predefiniti di pacchetti
8.2.3 Elenchi locali dei pacchetti
8.2.4 Elenchi locali di pacchetti binari
8.2.5 Estendere un'elenco di pacchetti usando gli include
8.2.6 Usare condizioni all'interno degli elenchi di pacchetti
8.2.7 Task
8.2.8 Task per desktop e lingua
8.3 Installare pacchetti modificati o di terze parti
8.3.1 Utilizzare packages.chroot per installare pacchetti personalizzati
8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati
8.3.3 Pacchetti personalizzati e APT
8.4 Configurare APT in fase di costruzione
8.4.1 Scegliere apt o aptitude
8.4.2 Utilizzare un proxy con APT
8.4.3 Modificare APT per risparmiare spazio
8.4.4 Passare opzioni ad apt o aptitude
8.4.5 APT pinning

9. Personalizzazione dei contenuti

9.1 Include
9.1.1 Live/chroot include locali
9.1.2 Include locali binari
9.1.3 Include binari
9.2 Hook
9.2.1 Live/chroot hook locali
9.2.2 Hook in fase di avvio
9.2.3 Hook binari locali
9.3 Preconfigurare le domande di Debconf

10. Personalizzare i comportamenti durante l'esecuzione

10.1 Personalizzare l'utente live
10.2 Personalizzare la localizzazione e la lingua
10.3 Persistenza
10.3.1 Strati di persistenza completa
10.3.2 Strati personalizzati
10.3.3 Istantanee
10.3.4 Sottotesto persistente
10.3.5 Rimasterizzazione parziale

11. Personalizzare l'immagine binaria

11.1 Bootloader
11.2 Metadati ISO

12. Personalizzare l'Installatore Debian

12.1 Tipologie dell'Installatore Debian
12.2 Personalizzare il Debian Installer con la preconfigurazione
12.3 Personalizzare il contenuto dell'Installatore Debian

Progetto

13. Segnalare bug

13.1 Problemi noti
13.2 Ricostruire da zero
13.3 Usare pacchetti aggiornati
13.4 Raccogliere informazioni
13.5 Se possibile isolare il caso non andato a buon fine
13.6 Segnalare il bug del pacchetto giusto
13.6.1 Durante la compilazione mentre esegue il bootstrap
13.6.2 Durante la compilazione mentre installa i pacchetti
13.6.3 In fase di avvio
13.6.4 In fase di esecuzione
13.7 Fare la ricerca
13.8 Dove segnalare i bug

14. Lo stile nello scrivere codice

14.1 Compatibilità
14.2 Rientri
14.3 Ritorno a capo
14.4 Variabili
14.5 Varie

15. Procedure

15.1 Aggiornamenti degli udeb
15.2 Rilasci importanti
15.3 Rilasci minori
15.3.1 Last Point Release of a Debian Release
15.3.2 Modello per l'annuncio di un rilascio minore.

Esempi

16. Esempi

16.1 Usare gli esempi
16.2 Tutorial 1: un'immagine standard
16.3 Tutorial 2: servizio browser web
16.4 Tutorial 3: un'immagine personalizzata
16.4.1 Prima revisione
16.4.2 Seconda revisione
16.5 Un client Kiosk VNC
16.6 Un'immagine base per una chiavetta USB da 128M
16.7 Un desktop KDE localizzato e l'installer

Appendix

17. Style guide

17.1 Guidelines for authors
17.1.1 Linguistic features
17.1.2 Procedures
17.2 Guidelines for translators
17.2.1 Translation hints

Manuale di Debian Live

Utente

4. Nozioni di base

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.

4.1 Che cos'è un sistema live?

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:

  • Immagine del kernel Linux, comunemente chiamata vmlinuz*
  • Initial RAM disk image (initrd): un disco RAM creato per il boot di Linux, contenente i moduli potenzialmente necessari per montare l'immagine di sistema e alcuni script per farlo.
  • Immagine di sistema: l'immagine del filesystem del sistema operativo. Normalmente è usato un filesystem compresso SquashFS, per minimizzare le dimensioni dell'immagine Debian Live. Si noti che è in sola lettura. Dunque, durante il boot il sistema Debian Live userà un disco RAM e il meccanismo 'unione' per attivare i file in scrittura all'interno del sistema in esecuzione. Ad ogni modo, tutte le modifiche verranno perse con lo spegnimento a meno che non si usi la persistenza opzionale (si veda Persistenza).
  • Bootloader: una piccola porzione di codice predisposto per l'avvio dal supporto scelto, che presenta un prompt o un menu per la selezione di opzioni/configurazioni. Carica il kernel Linux ed il suo initrd da eseguire con un filesystem associato. Possono essere usate diverse soluzioni, in base al supporto di destinazione ed al formato del filesystem contenenti le componenti precedentemente citate: isolinux per il boot da CD o DVD nel formato ISO9660, syslinux per supporti HDD o USB che si avviano da una partizione VFAT, extlinux per le partizioni ext/2/3/4 e btrfs, pxelinux per il netboot PXE, GRUB per partizioni ext2/3/4, ecc.
  • È 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.)

    4.2 Primi passi: creare un'immagine ISO ibrida

    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.

    4.3 Utilizzare un'immagine ISO live ibrida

    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.

    4.3.1 Masterizzare un'immagine ISO su un supporto fisico

    Masterizzare un'immagine ISO è semplice, basta installare wodim e utilizzarlo da riga di comando; ad esempio:

    # apt-get install wodim

    $ wodim binary.hybrid.iso

    4.3.2 Copiare un'immagine ISO ibrida su una penna USB

    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}

    4.3.3 Avviare il supporto live

    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.

    4.4 Utilizzare una macchina virtuale per le prove

    Per lo sviluppo delle immagini live, può essere un notevole risparmio di tempo eseguirle in una macchina virtuale (VM). Non senza qualche raccomandazione:

  • Eseguire una VM richiede un quantitativo sufficiente di RAM sia per il sistema ospitato che per quello ospitante; è consigliato un processore che gestisca la virtualizzazione a livello hardware.
  • Ci sono alcune limitazioni inerenti, quali uno scarso rendimento video e una scelta limitata di hardware emulato.
  • Quando si sviluppa per un hardware specifico non vi è alcun sostituto migliore del proprio hardware.
  • Occasionalmente possono esserci dei bug relativi al solo utilizzo di una VM. Nel dubbio si provi l'immagine direttamente sul proprio hardware.
  • A condizione che si possa lavorare entro questi vincoli, cercare il software disponibile per la virtualizzazione e scegliere quello adatto alle proprie necessità.

    4.4.1 Provare un'immagine ISO con QEMU

    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.

    4.4.2 Provare un'immagine ISO con virtualbox-ose

    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

    4.5 Creare un'immagine HDD

    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.

    4.6 Utilizzare un'immagine HDD

    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.

    4.6.1 Provare un'immagine HDD con Qemu

    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

    4.6.2 Usare lo spazio rimanente su una penna USB

    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.

    4.7 Creare un'immagine netboot

    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.

    4.7.1 Server DHCP

    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";
    }

    4.7.2 Server TFTP

    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.

    4.7.3 Server NFS

    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.

    4.7.4 Come provare una netboot

    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.

    4.7.5 Qemu

  • Installare qemu, bridge-utils, sudo.
  • 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"

    4.7.6 VMWare Player

  • Installare VMWare Player (edizione "free as in beer")
  • Creare una directory PXETester, e crearvi all'interno un file di testo chiamato pxe.vwx
  • Vi si copi dentro questo testo:
  • #!/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"

  • Si può modificare a piacimento questo file di configurazione (ad esempio portando a 256 il limite della memoria)
  • Fare doppio click su questo file (o avviare il player VMWare e selezionare questo file).
  • Se viene posta qualche strana domanda durante l'esecuzione premere il tasto spazio...