Rights: Copyright ©  2006-2013 Debian Live Project;
License: Questo programma è software libero: è possibile ridistribuirlo e modificarlo secondo i termini della GNU General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della licenza o (a scelta) una versione successiva.

Questo programma è distribuito nella speranza che possa essere utile, ma SENZA ALCUNA GARANZIA, nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedere la GNU General Public License per ulteriori dettagli.

Si dovrebbe aver ricevuto una copia della GNU General Public License con questo programma. In caso contrario, vedere http://www.gnu.org/licenses/.

Il testo completo della GNU General Public License può essere trovato nel file /usr/share/common-licenses/GPL-3.


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 Installare 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 Cos'è un sistema live?
4.2 Scaricare immagini precompilate
4.3 Utilizzare il web builder per le immagini live
4.3.1 Utilizzo del web builder e raccomandazioni
4.4 Primi passi: creare un'immagine ISO ibrida
4.5 Utilizzare un'immagine ISO live ibrida
4.5.1 Masterizzare un'immagine ISO su un supporto fisico
4.5.2 Copiare un'immagine ISO ibrida su una penna USB
4.5.3 Usare lo spazio rimanente su una penna USB
4.5.4 Avviare il supporto live
4.6 Utilizzare una macchina virtuale per le prove
4.6.1 Provare un'immagine ISO con QEMU
4.6.2 Provare un'immagine ISO con virtualbox
4.7 Creare e utilizzare un'immagine HDD
4.8 Creare un'immagine netboot
4.8.1 Server DHCP
4.8.2 Server TFTP
4.8.3 Server NFS
4.8.4 Come provare una netboot
4.8.5 Qemu

5. Panoramica degli strumenti

5.1 Il pacchetto 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 Gestire i cambiamenti di configurazione
6.1.1 Perché utilizzare gli script automatici? Cosa fanno?
6.1.2 Esempi d'uso di script automatici
6.2 Clonare una configurazione pubblicata tramite Git.

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 Usare metapacchetti
8.2.3 Elenchi locali dei pacchetti
8.2.4 Elenchi locali di pacchetti binari
8.2.5 Elenchi di pacchetti generati
8.2.6 Usare condizioni all'interno degli elenchi di pacchetti
8.2.7 Task per desktop e lingua
8.2.8 Tipi e versioni del kernel
8.2.9 Kernel personalizzati
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 compilazione
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.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 Il file persistence.conf
10.3.2 Utilizzare più di un'archiviazione persistente

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. Contribuire al progetto

13.1 Applicare le modifiche

14. Segnalare bug

14.1 Problemi noti
14.2 Ricompilare da zero
14.3 Usare pacchetti aggiornati
14.4 Raccogliere informazioni
14.5 Se possibile isolare il caso non andato a buon fine
14.6 Segnalare il bug del pacchetto giusto
14.6.1 Durante la compilazione mentre esegue il bootstrap
14.6.2 Durante la compilazione mentre installa i pacchetti
14.6.3 In fase di avvio
14.6.4 In fase di esecuzione
14.7 Fare la ricerca
14.8 Dove segnalare i bug

15. Lo stile nello scrivere codice

15.1 Compatibilità
15.2 Rientri
15.3 Ritorno a capo
15.4 Variabili
15.5 Varie

16. Procedure

16.1 Rilasci importanti
16.2 Rilasci minori
16.2.1 Ultimo rilascio minore di un rilascio di Debian.
16.2.2 Modello per l'annuncio di un rilascio minore.

17. Repository Git

17.1 Gestire repository multipli

Esempi

18. Esempi

18.1 Usare gli esempi
18.2 Tutorial 1: un'immagine predefinita
18.3 Tutorial 2: servizio browser web
18.4 Tutorial 3: un'immagine personalizzata
18.4.1 Prima revisione
18.4.2 Seconda revisione
18.5 Un client Kiosk VNC
18.6 Un'immagine base per una chiavetta USB da 128MB
18.7 Un desktop GNOME localizzato e l'installatore

Appendice

18.8 Guidelines for authors
18.8.1 Linguistic features
18.8.2 Procedures
18.9 Guidelines for translators
18.9.1 Translation hints

Manuale di Debian Live

A proposito

1. A proposito di questo manuale

Questo manuale funge da unico punto d'accesso a tutta la documentazione relativa al progetto Debian Live e si applica in particolare al software prodotto per il rilascio di Debian 7.0 "wheezy". Si può trovare una versione aggiornata all'indirizzo ‹http://live.debian.net/

Sebbene sia principalmente focalizzato nell'aiutare a costruire un sistema live e non su argomenti per l'utente finale, è comunque possibile trovare alcune informazioni utili in queste sezioni: le Nozioni di base coprono il download di immagini precompilate e la preparazione delle immagini da avviare da un supporto o dalla rete, sia tramite il web builder o eseguendo live-build direttamente sul proprio sistema. Personalizzare i comportamenti durante l'esecuzione descrive alcune opzioni specificabili al prompt d'avvio, come la scelta di un layout di tastiera e una lingua, e l'utilizzo della persistenza.

Alcuni dei comandi menzionati nel testo devono essere eseguiti con i privilegi di super-utente che possono essere ottenuti diventando utente root tramite su oppure usando sudo. Per distinguere i comandi che possono essere eseguiti come utente normale da quelli che necessitano dei privilegi di super-utente, i comandi sono preceduti rispettivamente da $ o #. Questi simboli non fanno parte del comando.

1.1 Per gli impazienti

Sebbene crediamo che ogni cosa in questo manuale sia importante almeno per alcuni dei nostri utenti, ci rendiamo conto che c'è tanto materiale da trattare e che si potrebbe voler provare il software prima di entrare nei dettagli; pertanto suggeriamo di leggerlo nel seguente ordine.

Per iniziare leggere questo capitolo, A proposito di questo manuale, da cima a fondo insieme alla sezione Glossario, quindi passare ai tre tutorial all'inizio della sezione Esempi progettati per insegnare le basi della costruzione e della personalizzazione delle immagini. Si legga innanzitutto Usare gli esempi, seguito da Tutorial 1: un'immagine predefinita, Tutorial 2: un programma di utilità web browser e, infine, Tutorial 3: un'immagine personalizzata. Alla fine di queste esercitazioni, si avrà un assaggio di ciò che si può fare con Debian Live.

Ti invitiamo ad uno studio più approfondito del manuale, magari leggendo in seguito le Nozioni di base, sfogliando o saltando Creare un'immagine netboot, e finendo con la lettura di Panoramica sulla personalizzazione e dei capitoli che lo seguono. A questo punto, ci auguriamo che tu sia davvero stimolato da ciò che si può fare con Debian Live e motivato a leggere il resto del manuale per intero.

1.2 Glossario
  • Sistema Live: un sistema operativo che può partire senza installazione su disco rigido. I sistemi live non alterano né il sistema operativo locale (o i sistemi operativi locali) né i file già installati sul disco rigido del computer a meno che lo si faccia volontariamente. I sistemi live vengono solitamente avviati da supporti quali CD, DVD o penne USB; alcuni possono anche avviarsi via rete.
  • Supporto Live: diversamente dal sistmea live, si riferisce a CD, DVD o penna USB dove viene scritto il binario prodotto da live-build e usato per l'avvio del sistema live. Più in generale, il termine si riferisce anche a qualsiasi posto in cui risiede il binario allo scopo di avviare il sistema, come il percorso per i file di avvio da rete.
  • Debian Live: il sotto-progetto Debian che mantiene, tra gli altri, i pacchetti live-boot, live-build, live-config, live-tools e live-manual.
  • Sistema Debian Live: un sistema live che usa software proveniente dal sistema operativo Debian e che può essere lanciato da CD, DVD, supporti USB, via rete (tramite immagini netboot) e via internet (tramite il parametro di boot fetch=URL).
  • Sistema host: l'ambiente utilizzato per creare il sistema live.
  • Sistema di destinazione: l'ambiente usato per eseguire il sistema live.
  • live-boot: una raccolta di script usati per avviare sistemi live.
  • live-boot: una raccolta di script usati per creare sistemi live Debian personalizzati.
  • live-config: una raccolta di script usati per configurare un sistema live durante il processo di avvio.
  • live-tools: una raccolta di script aggiuntivi usati per eseguire utili compiti in un sistema live avviato.
  • live-manual: questo documento è inserito nel pacchetto chiamato live-manual.
  • Debian Installer (d-i): il sistema d'installazione ufficiale per la distribuzione Debian.
  • Boot parameters: parametri che possono essere immessi nel prompt del boot loader per modificare il comportamento del kernel o di live-config.
  • chroot: il programma chroot, chroot(8), rende possibile eseguire diverse istanze dell'ambiente GNU/Linux su un singolo sistema simultaneamente senza riavviare.
  • Binary image: un file che contiene il sistema live, come binary.iso o binary.img.
  • Distribuzione di destinazione: la distribuzione su cui sarà basato il sistema live. Può differire dalla distribuzione presente sul proprio computer.
  • stable/testing/unstable: la distribuzione stable contiene l'ultima distribuzione ufficialmente rilasciata da Debian; la testing è il punto di raccolta per i pacchetti della prossima stable. Uno dei principali vantaggi nell'uso di questa distribuzione sta nell'avere software più recente rispetto alla stable. La distribuzione unstable è dove avviene lo sviluppo attivo di Debian; viene generalmente usata dagli sviluppatori o da coloro che amano l'azzardo. In tutto il manuale tendiamo a usare i nomi in codice dei rilasci, ad esempio wheezy o sid, in quanto è quanto supportato dagli strumenti stessi.
  • 1.3 Autori

    Lista degli autori (in ordine alfabetico):

  • Ben Armstrong
  • Brendan Sleight
  • Carlos Zuferri
  • Chris Lamb
  • Daniel Baumann
  • Franklin Piat
  • Jonas Stein
  • Kai Hendry
  • Marco Amadori
  • Mathieu Geli
  • Matthias Kirschner
  • Richard Nelson
  • Trent W. Buck
  • 1.4 Contribuire a questo documento

    Questo manuale è pensato come un progetto comunitario e ogni suggerimento e contributo è benvenuto. Si veda Contribuire al progetto per informazioni dettagliate su come prelevare la chiave SSH ed eseguire buoni commit.

    1.4.1 Applicare le modifiche

    Per apportare modifiche alla versione inglese del manuale è necessario modificare i file giusti in manual/en/, ma prima di sottoporre il proprio contributo si prega di visionare l'anteprima del proprio lavoro. Per ottenere l'anteprima di live-manual, assicurarsi di avere installato i pacchetti necessari per la sua compilazione eseguendo:

    # apt-get install make po4a ruby ruby-nokogiri sisu-complete texlive-generic-recommended

    Si può compilare il live-manual dalla directory superiore del checkout di Git eseguendo:

    $ make build

    Giacché occorre del tempo per compilare il manuale in tutte le lingue supportate può risultare conveniente farlo per una sola lingua, ad esempio eseguendo:

    $ make build LANGUAGES=en

    È inoltre possibile compilare in base al tipo di documento, esempio:

    $ make build FORMATS=pdf

    O entrambi:

    $ make build LANGUAGES=de FORMATS=html

    Dopo aver revisionato il proprio lavoro e assicurato che tutto funzioni, non usare make commit a meno che nel commit non si stiano aggiornando delle traduzioni, in tal caso non mescolare nello stesso le modifiche al manuale inglese e le traduzioni ma eseguire un commit per ognuna. Per maggiori dettagli vedere la sezione Traduzione.

    1.4.2 Traduzione

    Per iniziare una traduzione per una nuova lingua, seguire questi passi:

  • Tradurre i file about_manual.ssi.pot, about_project.ssi.pot e index.html.in.pot nella propria lingua con il proprio editor preferito (tipo poedit) . Inviare i file .po tradotti alla mailing list in modo che il team di traduzione possa controllarne l'integrità.
  • Per abilitare una nuova lingua nell'autobuild è sufficiente aggiungere i file tradotti iniziali a manual/po/${LANGUAGE}/ ed eseguire make commit. Quindi modificare il file manual/_sisu/home/index.html.
  • Una volta che la nuova lingua è stata aggiunta, si può continuare a tradurre i restanti file po situati in manual/po/, nell'ordine che si preferisce.
  • Non dimenticare che è necessario usare make commit per assicurarsi che i manuali tradotti siano aggiornati partendo dai file po, quindi si possono verificare le modifiche con make build prima di git add ., git commit -m "Translating..." e git push.
  • Dopo aver eseguito make commit si vedrà del testo scorrere. Questi sono messaggi informativi sullo stato del processo e alcuni suggerimenti su cosa si può fare per migliorare live-manual. A meno che non si ottenga un errore fatale si può procedere e inviare il proprio contributo.

    live-manual è fornito di due utilità in grado di fornire un grande aiuto ai traduttori al fine di trovare le stringhe da tradurre o modificate. La prima è "make translate", avvia uno script che dice dettagliatamente quante stringhe non tradotte ci sono in ogni file po. La seconda, "make fixfuzzy", funziona solo sulle stringhe modificate ma aiuta a trovarle e aggiornarle una per una.

    È da considerare che nonostante queste utilità possono davvero risultare utili per tradurre dalla riga di comando, si raccomanda l'uso di uno strumento specifico come poedit. È inoltre una buona idea leggere la documentazione sulla localizzazione in Debian (l10n) e, specifiche per live-manual, le Linee guida per i traduttori.

    Nota: si può usare make clean per pulire l'albero del repository git locale prima del push. Grazie al file .gitignore questo passo non è obbligatorio ma è una buona abitudine che evita di fare involontariamente il commit di certi file.

    2. A proposito del progetto Debian Live

    2.1 Motivazioni
    2.1.1 Cosa c'è di sbagliato con gli attuali sistemi live

    Quando Debian Live iniziò erano disponibili svariati sistemi live basati su Debian che tuttora stanno facendo un buon lavoro. Dal punto di vista di Debian molti di essi hanno uno o più dei seguenti svantaggi:

  • Non sono progetti Debian, per cui non sono supportati da Debian.
  • Mischiano differenti distribuzioni come ad esempio: testing e unstable.
  • Supportano solamente i386.
  • Modificano l'aspetto e il comportamento dei pacchetti snellendoli per risparmiare spazio.
  • Includono pacchetti esterni all'archivio Debian.
  • Forniscono un kernel con patch addizionali che non appartengono a Debian.
  • Sono grandi e lenti a causa delle loro dimensioni e non adatti per operazioni di salvataggio.
  • Non sono disponibili in diversi formati come CD, DVD, penne USB e immagini netboot.
  • 2.1.2 Perché creare il proprio sistema live?

    Debian è il Sistema Operativo Universale, ha un sistema live per mostrare e rappresentare accuratamente il sistema con i seguenti vantaggi:

  • È un sottoprogetto di Debian.
  • Riflette lo stato (attuale) di una distribuzione.
  • Gira su più architetture possibili.
  • È costituito solo da pacchetti Debian non modificati.
  • Non contiene nessun pacchetto che non sia presente nell'archivio di Debian.
  • Usa un kernel Debian inalterato senza patch addizionali.
  • 2.2 Filosofia
    2.2.1 Solamente pacchetti da Debian "main", inalterati.

    Verranno usati solo pacchetti dal repository Debian della sezione "main".La sezione non-free non è parte di Debian perciò non possono essere affattousati per le immagini ufficiali del sistema live.

    Non verrà cambiato nessun pacchetto. Nel caso in cui sarà necessario cambiare qualcosa sarà fatto in coordinazione con il maintainer del pacchetto Debian.

    In via eccezionale i nostri pacchetti come live-boot, live-build o live-config possono temporaneamente essere usati dal nostro repository per ragioni di sviluppo (ad esempio per creare istantanee). Verranno caricati regolarmente in Debian.

    2.2.2 Nessun pacchetto di configurazione per il sistema live

    In questa fase non saranno disponibili né esempi di installazione né configurazioni alternative. Tutti i pacchetti vengono usati con la loro configurazione predefinita così come accade con una regolare installazione di Debian.

    Nel caso in cui serva una configurazione predefinita differente, sarà fatto in coordinazione con il maintainer del pacchetto in Debian.

    Viene fornito un sistema per configurare i pacchetti tramite debconf consentendo di installare pacchetti configurati secondo le proprie preferenze nell'immagine Debian Live personalizzata, ma per le immagini live precompilate scegliamo di lasciare i pacchetti con le loro configurazioni predefinite, se non assolutamente necessario per lavorare nell'ambiente live. Dove possibile preferiamo adattare i pacchetti nell'archivio Debian affinché funzioni al meglio in un sistema live, in contrapposizione al fare modifiche al toolchain o le configurazioni per le immagini precompilate. Per ulteriori informazioni si veda Panoramica sulla personalizzazione.

    2.3 Contatti
  • Mailing list: il principale contatto del progetto è la mailing list ‹http://lists.debian.org/debian-live/›, si possono inviare email alla lista direttamente a ‹debian-live@lists.debian.org.› Gli archivi sono disponibili presso ‹http://lists.debian.org/debian-live/›.
  • IRC: molti utenti e sviluppatori sono presenti sul canale #debian-live su irc.debian.org (OFTC). Quando si pone una domanda su IRC, si prega di essere pazienti nell'ottenere una risposta; se non si riceve risposta scrivere alla mailing list.
  • BTS : il Debian Bug Tracking System (BTS) contiene i dettagli dei bug riportati dagli utenti e dagli sviluppatori. A ciascun bug viene assegnato un numero, e viene mantenuto finché non è segnato come risolto. Per ulteriori informazioni si veda Segnalare bug.
  • Utente

    3. Installazione

    3.1 Requisiti

    Per costruire immagini Debian Live i requisiti di sistema sono davvero pochi:

  • Accesso come utente root
  • Una versione aggiornata di live-build
  • Una shell POSIX-compliant, come bash o dash
  • debootstrap o cdebootstrap
  • Linux 2.6 o successivi
  • Si noti che usare Debian o una distribuzione derivata Debian non è richiesto - live-build funzionerà sostanzialmente su qualsiasi distribuzione che soddisfi i requisiti di cui sopra.

    3.2 Installare live-build

    Si può installare live-build in diversi modi:

  • Dal repository Debian
  • Da sorgenti
  • Da istantanee
  • Se si sta usando Debian, il metodo raccomandato è di installare live-build attraverso il repository Debian.

    3.2.1 Dal repository Debian

    Installare live-build come qualsiasi altro pacchetto:

    # apt-get install live-build

    3.2.2 Da sorgenti

    live-build è sviluppato usando il sistema di controllo versione Git. Sui sistemi basati su Debian è fornito dal pacchetto git. Per scaricare il codice aggiornato, eseguire:

    $ git clone git://live.debian.net/git/live-build.git

    È possibile costruirsi ed installarsi il proprio pacchetto Debian eseguendo:

    $ cd live-build
    $ dpkg-buildpackage -b -uc -us
    $ cd ..

    Si installino ora i file .deb appena generati ai quali si è interessati, ad esempio:

    # dpkg -i live-build_3.0-1_all.deb

    Si può anche installare live-build direttamente sul proprio sistema eseguendo:

    # make install

    e disinstallarlo con:

    # make uninstall

    3.2.3 Da "istantanee"

    Se non si desidera generare o installare live-build da sorgenti, è possibile usare le istantanee. Sono costruite automaticamente dall'ultima versione presente su Git e disponibili su ‹http://live.debian.net/debian/›.

    3.3 Installare live-boot e live-config

    Nota: non è necessario installare live-boot o live-config sul proprio sistema per creare sistemi Debian Live personalizzati. Tuttavia, farlo non nuoce. Se si vuole la documentazione è possibile installare i pacchetti live-boot-doc e live-config-doc separatamente.

    3.3.1 Dal repository Debian

    Sia live-boot che live-config sono disponibili dai repository Debian come per l' installazione di live-build.

    3.3.2 Da sorgenti

    Per utilizzare i sorgenti più recenti da Git si può seguire il procedimento seguente. Assicurarsi di conoscere i termini menzionati nel Glossario.

  • Scaricare i sorgenti di live-boot e live-config
  • $ git clone git://live.debian.net/git/live-boot.git
    $ git clone git://live.debian.net/git/live-config.git

    Consultare la pagine man di live-boot e live-config per i dettagli sulla personalizzazione se questa è il motivo per compilare questi pacchetti dai sorgenti.

  • Costruire un .deb di live-boot e live-config
  • È necessario compilare sulla distribuzione di destinazione, oppure in un chroot contenente la piattaforma di destinazione: significa che se l'obiettivo è wheezy allora bisogna compilare su wheezy.

    Se si deve compilare live-boot per una distribuzione di destinazione diversa dal proprio sistema, utilizzare un compilatore tipo pbuilder o sbuild. Ad esempio, per immagini live wheezy, si generi live-boot in un chroot wheezy. Se la distribuzione di destinazione corrisponde con la distribuzione del proprio sistema, si può costruire direttamente sul sistema usando dpkg-buildpackage (fornito dal pacchetto dpkg-dev) :

    $ cd live-boot
    $ dpkg-buildpackage -b -uc -us
    $ cd ../live-config
    $ dpkg-buildpackage -b -uc -us

  • Usare il .deb di live-boot generato
  • live-boot e live-config sono installati dal sistema creato con live-build, installare i pacchetti nel sistema host non è sufficiente: si dovrebbero trattare i file .deb generati come qualsiasi pacchetto personalizzato. Dal momento che lo scopo di compilare dai sorgenti è di testare cose nuove nel breve periodo prima del rilascio ufficiale, seguire Installare pacchetti modificati o di terze parti per includere temporaneamente i file attinenti nella propria configurazione. In particolare notare che entrambi i pacchetti sono suddivisi in una parte generica, una parte della documentazione e uno o più backend. Includere la parte generica, solo il backend corrispondente alla propria configurazione ed eventualmente la documentazione. Supponendo di creare un'immagine live nella directory attuale e di aver generato tutti i .deb per un singola versione di entrambi i pacchetti nella stessa directory, questi comandi bash copieranno tutti i file attinenti inclusi i backend predefiniti:

    $ cp ../live-boot{_,-initramfs-tools,-doc}*.deb  config/packages.chroot/
    $ cp ../live-config{_,-sysvinit,-doc}*.deb  config/packages.chroot/

    3.3.3 Da "istantanee"

    Si può lasciare che live-build usi automaticamente l'ultima istantanea di live-boot e live-config configurando un repository esterno nella directory di configurazione di live-build. Assumendo che si sia già creato un albero di configurazione nell'attuale directory con lb config:

    $ lb config --archives live.debian.net

    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 spiegato più avanti, la hdd potrebbe essere più adatta. Il capitolo termina con le istruzioni per costruire e usare un'immagine di tipo netboot, 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.

    In tutto il capitolo faremo spesso riferimento ai nomi dei file predefiniti creati da live-build. Se invece si scarica un'immagine precompilata, i nomi possono variare.

    4.1 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 e i386). È 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 Scaricare immagini precompilate

    Nonostante l'obiettivo di questo manuale è di sviluppare e creare le proprie immagini live si potrebbe semplicemente voler provare una di quelle precompilate, sia come introduzione al loro uso o per costruirne una propria. Queste immagini sono create utilizzando il nostro repository git live-imagesy e i rilasci ufficiali di stable pubblicati all'indirizzo ‹http://www.debian.org/CD/live/›. In aggiunta, all'indirizzo ‹http://live.debian.net/cdimage/release/› sono disponibili le versioni vecchie e future e le immagini non ufficiali contenenti firmware e driver non-free.

    4.3 Utilizzare il web builder per le immagini live

    Come servizio alla comunità, all'indirizzo ‹http://live-build.debian.net/› abbiamo un servizio web per la creazione di immagini live, il sito è mantenuto col massimo sforzo possibile. Sebbene ci impegnamo nel tenerlo aggiornato e funzionante e notifichiamo eventuali interruzioni, non possiamo garantire al 100% la sua disponibilità o una compilazione veloce dell'immagine; occasionalmente il servizio potrebbe avere problemi che richiedono tempo per essere risolti. Se si hanno problemi o domande in proposito contattarci fornendo il link della propria compilazione.

    4.3.1 Utilizzo del web builder e raccomandazioni

    Attualmente l'interfaccia web non previene l'uso di combinazioni non valide di opzioni, in particolare dove la modifica di un'opzione (ovvero usando live-build direttamente) cambia i valori predefiniti di altre opzioni elencate nel form web, il web builder non modifica questi default. Se si cambia --architectures da i386 a amd64 è necessario modificare l'opzione --linux-flavours corrispondente da 486 a amd64. Per ulteriori dettagli sulla versione installata sul web builder consultare la pagina di manuale di lb_config; il numero della versione è scritto al fondo della pagina.

    Le tempistiche fornite dal web builder sono solo una stima approssimata e possono non riflettere quanto realmente ci vorrà per compilare, né vengono aggiornate una volta apparse. Vi preghiamo di essere pazienti e di non aggiornare la pagina dopo aver commissionato la compilazione in quanto invierà la richiesta per una nuova operazione con gli stessi parametri. Se, dopo aver aspettato a sufficienza e verificato che l'email non sia finita nello spam, non ricevete alcuna notifica allora contattateci.

    Il web builder ha un limite di tipologie di immagini creabili, mantenendosi semplice e efficiente da utilizzare e manutenere. Le personalizzazioni non sono fornite dall'interfaccia web, il resto di questo manuale sipega come creare le proprie immagini tramite live-build.

    4.4 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 creerà una directory di lavoro, vi si entrerà e si eseguirà la seguente sequenza di comandi di live-build per creare un'immagine ISO ibrida di base contenente un sistema live predefinito senza X.org. È adatta per essere masterizzata su CD o DVD e anche per essere copiata su una penna USB.

    Il nome della directory di lavoro è arbitrario ma guardando gli esempi usati da live-manual è una buona idea utilizzare un nome che aiuta a identificare in qualsiasi directory l'immagine su cui si sta lavorando, in particolar modo se si stanno sperimentando tipi di di immagine differenti. In questo caso stiamo creando un sistema predefinito quindi chiamiamolo ad esempio live-default.

    $ mkdir live-default && cd live-default

    Dopodiché 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à del vostro computer e della connessione di rete. Una volta completato, nell'attuale directory ci sarà un file immagine binary.hybrid.iso pronto da usare.

    4.5 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.5.1 Masterizzare un'immagine ISO su un supporto fisico

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

    # apt-get install xorriso

    $ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed binary.hybrid.iso

    4.5.2 Copiare un'immagine ISO ibrida su una penna USB

    Le immagini ISO preparate con xorriso 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.5.3 Usare lo spazio rimanente su una penna USB

    Per utilizzare lo spazio libero che rimane dopo aver copiato il file binary.hybrid.iso 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.hybrid.iso 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.5.4 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 immagini precompilate standard o rescue, si accederà alla console dell'account user ed avere un prompt di shell pronto da usare.

    4.6 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.6.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.6.2 Provare un'immagine ISO con virtualbox

    Per provare la ISO con virtualbox:

    # apt-get install virtualbox virtualbox-qt virtualbox-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.

    Nota: per sistemi live contenenti X.org che si vogliono provare con virtualbox, si può voler includere il pacchetto dei driver per X.org di VirtualBox, virtualbox-guest-dkms e virtualbox-guest-x11, nella configurazione di live-build. In caso contrario la risoluzione è limitata a 800x600.

    $ echo "virtualbox-guest-dkms virtualbox-guest-x11" >> config/package-lists/my.list.chroot

    Per far funzionare il pacchetto dkms vanno anche installati gli header per il kernel utilizzato nell'immagine. Anziché indicare manualmente il pacchetto linux-headers adeguato nell'elenco dei pacchetti creato prima, la selezione può essere fatta automaticamente da live-build.

      $ lb config --linux-packages "linux-image linux-header"

    4.7 Creare e utilizzare 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 allora occorre un'immagine HDD.

    Nota: se si è creata un'immagine ISO ibrida con gli esempi precedenti, occorre pulire la directory di lavoro con il comando lb clean (vedere Il comando lb clean):

    # lb clean --binary

    Eseguire il comando lb config come prima, questa volta specificando però il tipo di immagine HDD:

    $ lb config -b hdd

    Creare 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 un dispositivo USB. Ricordarsi 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.

    Allo stesso modo, per 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.8 Creare un'immagine netboot

    La seguente sequenza di comandi creerà un'immagine netboot di base contenente un sistema live predefinito senza X.org. È adatta per il boot tramite rete.

    Nota: se qualcuno tra gli esempi precedenti è stato seguito, bisogna pulire la directory di lavoro con il comando lb clean:

    # lb clean

    In questo caso specifico il comando lb clean --binary non è sufficiente per pulire le fasi necessarie. La causa è che nelle configurazioni per l'avvio da rete è necessario usare una configurazione dell'initramfs differente che viene applicata automaticamente da live-build durante la creazione di immagini netboot. Dal momento che la creazione dell'initramfs appartiene alla fase del chroot, passare a netboot in una directory di lavoro esistente significa ricompilare anche la fase del chroot. Perciò va usato lb clean (che rimuoverà anche la fase del chroot).

    Per configurare l'immagine per l'avvio da rete, eseguire il comando lb config come segue:

    $ lb config -b netboot --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. Con lb config si possono scegliere filesystem di rete diefferenti. 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.

    Creare 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.netboot.tar 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.8.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.8.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 richiesto.

    4.8.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 attimo di pazienza per farli funzionare assieme. Per ulteriori informazioni vedere il wiki syslinux ‹http://www.syslinux.org/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.8.4 Come provare una netboot

    La creazione di immagini netboot è resa semplice da live-build, ma provare le immagini su una macchina reale può essere davvero dispendioso in termini di tempo.

    Per semplificarsi il vita si può usare la virtualizzazione.

    4.8.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.

    Lanciare qemu con "-net nic,vlan=0 -net tap,vlan=0,ifname=tun0"

    5. Panoramica degli strumenti

    Questo capitolo contiene una panoramica dei tre principali strumenti utilizzati nella creazione dei sistemi Debian Live: live-build, live-boot e live-config.

    5.1 Il pacchetto live-build

    live-build è una raccolta di script, chiamati anche "comandi", usati per creare sistemi Debian Live.

    L'idea dietro live-build è di essere un'infrastruttura che utilizza una directory di configurazione per automatizzare totalmente e personalizzare tutti gli aspetti della creazione di un'immagine live.

    Molti concetti sono simili a quelli applicati per creare pacchetti Debian con debhelper:

  • Gli script hanno una locazione centrale per configurare le loro operazioni, in debhelper questa è la sottodirectory debian/ dell'albero di un pacchetto. Ad esempio dh_install cercherà, tra gli altri, un file chiamato debian/install per determinare quali file dovrebbero esistere in un certo pacchetto binario. Allo stesso modo, live-build salva la sua configurazione interamente in una sottodirectory config/.
  • Gli script sono indipendenti, vale a dire che è sempre sicuro eseguire ogni comando.
  • Al contrario di debhelper, live-build contiene uno strumento per generare una directory scheletro di configurazione, lb config, che può essere considerato simile a utilità come dh-make. Per maggiori informazioni su lb config si veda Il comando lb config.

    Il resto di questa sezione tratta i tre comandi più importanti:

  • lb config: responsabile dell'inizializzazione di una directory di configurazione del sistema live. Si veda Il comando lb config per maggiori informazioni.
  • lb build: responsabile di iniziare la creazione di un sistema live. Si veda Il comando lb per maggiori informazioni.
  • lb clean: responsabile della rimozione di parti della creazione di un sistema live. Si veda Il comando lb clean per maggiori informazioni.
  • 5.1.1 Il comando lb config

    Come discusso in live-build, gli script che compongono live-build attingono la loro configurazione con il comando source da una singola directory chiamata config/. Dal momento che crearla a mano sarebbe dispendioso in termini di tempo e soggetto a errori, si può usare il comando lb config per creare la directory scheletro di configurazione.

    L'esecuzione di lb config senza argomenti crea una sottodirectory config/ popolata con alcune impostazioni predefinite e uno scheletro di sottodirectory in auto/.

    $ lb config
    [2013-01-01 09:14:22] lb_config
    P: Considering defaults defined in /etc/live/build.conf
    P: Creating config tree for a debian/i386 system

    L'uso di lb config senza argomenti è adatto ad utenti che necessitano di un'immagine di base o che intendono fornire in seguito una configurazione più completa tramite auto/config (per i dettagli vedere Gestire una configurazione).

    Solitamente si vorranno specificare delle opzioni. Ad esempio per indicare quale distribuzione si vuole creare tramite il codename:

    $ lb config --distribution sid

    È possibile specificare molte opzioni, come:

    $ lb config --binary-images netboot --bootappend-live "boot=live config hostname=live-host username=live-user" ...

    Una lista completa delle opzioni è disponibile nel manuale di lb_config.

    5.1.2 Il comando lb build

    Il comando lb build legge la configurazione dalla directory config/ ed esegue a un livello inferiore i comandi necessari a costruire il sistema live.

    5.1.3 Il comando lb clean

    È compito del comando lb clean rimuovere le varie parti di una compilazione in modo che le successive possano iniziare da uno stato pulito. Per impostazione predefinita, vengono pulite le fasi chroot, binary e source ma la cache viene lasciatta intatta. Le fasi possono inoltre essere pulite singolarmente; ad esempio se sono state fatte modifiche alla sola fase binaria, si usi lb clean --binary prima di compilare un nuovo binario. Per la lista completa delle opzioni vedere la pagina di manuale di lb_clean.

    5.2 Il pacchetto live-boot

    live-boot è una raccolta di script che forniscono hook per initramfs-tools, utilizzato per generare un initramfs in grado di avviare sistemi live, come quelli creati da live-build. Questo include le ISO di Debian Live, archivi per l'avvio da rete e immagini per penne USB.

    All'avvio cercherà supporti in sola lettura che contengano una directory /live/ dove sia presente un filesystem root (spesso un'immagine compressa come squashfs). Se trovata, creerà un ambiente scrivibile usando aufs, per avviarsi da sistemi simili a Debian.

    Si possono trovare maggiori informazioni sui ramfs iniziali nel capitolo su initramfs del Debian Linux Kernel Handbook all'indirizzo ‹http://kernel-handbook.alioth.debian.org/›.

    5.3 Il pacchetto live-config

    live-config è costituito da script eseguiti all'avvio dopo live-boot per configurare automaticamente il sistema live. Gestisce attività quali impostare l'hostname, localizzazione e fuso orario, creare l'utente live, inibire compiti automatizzati tramite cron ed eseguire il login automatico dell'utente live.

    6. Gestire una configurazione

    Questo capitolo spiega come gestire una configurazione per una live sin dalla creazione iniziale, attraverso le successive revisioni e rilasci sia del software live-build che della stessa immagine.

    6.1 Gestire i cambiamenti di configurazione

    Le configurazioni live sono di rado perfette al primo tentativo. Può andar bene passare le opzioni di lb config a riga di comando per eseguire una compilazione ma è tipico rivedere queste opzioni e compilare finché non si è soddisfatti. Per gestire le modifiche c'è bisogno di script automatici che assicurano che la propria configurazione sia coerente.

    6.1.1 Perché utilizzare gli script automatici? Cosa fanno?

    Il comando lb config immagazzina le opzioni ricevute e molte altre impostate su valori predefiniti in file nella directory config/*. Eseguendo nuovamente lb config le opzioni basate inizialmente sulle proprie non verranno cancellate. Per cui, ad esempio, eseguendo di nuovo lb config con un nuovo argomento per --distribution, ogni opzione che ne dipende impostata di default per la vecchia distribuzione potrebbe non funzionare più con la nuova. Questi file non sono destinati ad essere letti o modificati; salvano valori per oltre un centinaio di opzioni per cui nessuno, nemmeno voi, è in grado di vedere quali opzioni siano realmente state specificate. Infine, se si esegue lb config, si aggiorna live-build e si rinomina un'opzione, la directory config/* conterrà ancora le variabili con il vecchio nome e che non sono più valide.

    Per queste ragioni gli script nella directory auto/* faciliteranno il lavoro; sono semplici wrapper ai comandi lb config, lb build e lb clean designati per aiutare a gestire la configurazione. Gli script in auto/config memorizzano i comandi di lb config con le opzioni desiderate, quelli in auto/clean rimuovono i file contenenti i valori delle variabili di configurazione, mentre gli script in auto/build tengono un build.log di ogni compilazione. Ognuno di questi script viene eseguito automaticamente ogni qualvolta si esegue il comando lb corrispondente; utilizzandoli la vostra configurazione sarà più semplice da leggere e verrà mantenuta coerente da una revisione all'altra. Inoltre sarà molto più facile identificare e sistemare le opzioni che necessitano di modifiche quando si aggiorna live-build dopo aver letto la documentazione aggiornata.

    6.1.2 Esempi d'uso di script automatici

    Per comodità live-build è fornito di esempi di script automatici da copiare e modificare. Inizializzare una nuova configurazione predefinita quindi copiare gli esempi in essa:

    $ mkdir mylive && cd mylive && lb config
    $ cp /usr/share/doc/live-build/examples/auto/* auto/

    Modificare auto/config aggiungendo qualsiasi opzione vi serva, esempio:

    #!/bin/sh
    lb config noauto \
         --architectures i386 \
         --linux-flavours 686-pae \
         --binary-images hdd \
         --mirror-bootstrap http://ftp.ch.debian.org/debian/ \
         --mirror-binary http://ftp.ch.debian.org/debian/ \
         "${@}"

    Ogni volta che verrà usato lb config, auto/config ripristinerà la configurazione in base a queste opzioni; quando si vogliono apportare modifiche basterà modificare le opzioni in questo file invece di passarle a lb config. Utilizzando lb clean, auto/clean pulirà i file in config/* insieme a qualsiasi altro creato dalla compilazione. Infine, quando si usa lb build, verrà scritto da auto/build un file di log della compilazione in build.log.

    Nota: il parametro speciale noauto viene qui usato per impedire un'ulteriore chiamata di auto/config, impedendo quindi infinite chiamate ricorsive; assicurarsi di non rimuoverlo facendo modifiche. Quando si dividono comandi lunghi di lb config su più righe per agevolarne la leggibilità, non dimenticare il backslash (\) alla fine di ogni riga che continua sulla successiva, come mostrato poc'anzi nell'esempio di script.

    6.2 Clonare una configurazione pubblicata tramite Git.

    Per clonare un repository Git che contiene una configurazione Debian Live usare l'opzione lb config --config. Se si desidera basarsi su una mantenuta dal progetto Debian Live vedere il repository chiamato live-images nella categoria Pacchetti. Contiene le configurazioni per le immagini precompilate di Debian Live.

    Ad esempio, per creare un'immagine d'emergenza usare il repository live-images come segue:

    $ mkdir live-images && cd live-images
    $ lb config --config git://live.debian.net/git/live-images.git
    $ cd images/rescue

    Modificare auto/config e qualsiasi altro file presente in config necessario alle proprie esigenze. Ad esempio, le immagini non-free precompilate non ufficiali sono create semplicemente aggiungendo --archive-areas "main contrib non-free".

    È possibile definire una scorciatoia nella configurazione di Git aggiungendo quanto segue al file ${HOME}/.gitconfig:

    [url "git://live.debian.net/git/"]
             insteadOf = ldn:

    Questo permette di usare ldn: ovunque serva specificare l'indirizzo di un repository git live.debian.net. Omettendo l'estensione facoltativa .git, inizializzare una nuova immagine usando questa configurazione è facile:

    $ lb config --config ldn:live-images

    Clonando l'intero repository live-images si ottengono configurazioni usate per svariate immagini. Se dopo aver terminato la prima si vuole creare un'immagine differente, basterà cambiare directory e opzionalmente fare di nuovo le modifiche necessarie alle proprie esigenze.

    In ogni caso ricordarsi che ogni volta si dovrà creare l'immagine come utente root: lb build

    7. Panoramica sulla personalizzazione

    Questo capitolo mostra una panoramica dei vari metodi con i quali è possibile personalizzare un sistema Debian Live.

    7.1 Configurazione in fase di compilazione e di avvio

    La configurazione del sistema live è divisa in opzioni applicate in fase di compilazione e al momento dell'avvio. Le opzioni di compilazione sono ulteriormente divise in quelle che si verificano prima dell'avvio, applicate dal pacchetto live-boot, e quelle dopo l'avvio, applicate da live-config. Qualsiasi opzione in fase di avvio può essere modificata dall'utente specificandola al prompt di avvio. L'immagine può inoltre essere costruita con i parametri di avvio predefiniti in modo che quando tutti i valori predefiniti sono adatti gli utenti possano avviare direttamente il sistema senza specificare alcuna opzione. In particolare, l'argomento di lb --bootappend-live è costituito da tutte le opzioni da riga di comando del kernel predefinite in un sistema live, come persistenza dei dati, layout di tastiera o fuso orario. Per gli esempi si veda Personalizzare localizzazione e lingua.

    Le opzioni di configurazione in fase di compilazione sono descritte nel manuale di lb config, mentre quelle in fase di avvio nel manuale di live-boot e live-config. Sebbene i pacchetti live-boot e live-config siano installati nel sistema live che si sta costruendo si raccomanda, per un comodo riferimento quando si lavora alla propria configurazione, di installarli anche sul sistema che lo crea. Fare ciò risulta sicuro in quanto nessuno degli script contenuti viene eseguito, a meno che il sistema sia configurato come sistema live.

    7.2 Fasi della creazione

    Il processo di creazione è diviso in due fasi, con varie personalizzazioni applicate in sequenza a ciascuna di esse. La prima consiste nell'avvio, questa è la fase iniziale di popolamento della directory di chroot con i pacchetti atti a creare un sistema Debian di base. Viene quindi seguita dalla fase chroot che completa la costruzione della directory chroot e la popola con tutti i pacchetti elencati nella configurazione insieme a qualsiasi altro materiale; la maggior parte della personalizzazione dei contenuti avviene in questa tappa. La parte finale della preparazione dell'immagine è la fase binaria che genera un'immagine avviabile utilizzando i contenuti della directory chroot per costruire il file system pricipale per il sistema live, includere l'installatore e ogni altro materiale aggiuntivo sul supporto di destinazione al di fuori del file system del sistema live. Una volta che l'immagine è pronta viene creato, se abilitato, l'archivio dei sorgenti nella fase sorgenti.

    All'interno di ciascuna di queste fasi c'è una sequenza particolare in cui vengono applicati i comandi, sono organizzati in modo da assicurare che le personalizzazioni siano ragionevolmente stratificate. Ad esempio, nella fase chroot i preseed vengono applicati prima che qualsiasi pacchetto sia installato, i pacchetti vengono installati prima che qualsiasi file incluso localmente venga copiato e gli hook eseguiti dopo che tutto il materiale è a posto.

    7.3 Integrare la configurazione di lb con dei file

    Anche se lb config crea una configurazione scheletrica nella directory config/, per realizzare i propri obiettivi potrebbe essere necessario fornire dei file aggiuntivi nelle sottodirectory. A seconda di dove vengono memorizzati i file nella configurazione, possono essere copiati nel file system del sistema live o nel file system dell'immagine binaria, o fornire configurazioni per la creazione del sistema che sarebbe scomodo passare come opzioni da riga di comando. Si possono includere cose come elenchi personalizzati dei pacchetti, grafica personalizzata o script hook da eseguire sia al momento della compilazione che in fase di avvio; incrementando quindi la notevole flessibilità di debian-live con il proprio codice.

    7.4 Personalizzazione dei compiti

    I capitoli seguenti sono costituiti dai tipi di compito personalizzato che gli utenti eseguono solitamente: personalizzare l'installazione dei pacchetti, personalizzare i contenuti e personalizzare localizzazione e lingua coprono solo alcune delle cose che si potrebbero desiderare.

    8. Personalizzare l'installazione dei pacchetti

    Probabilmente la personalizzazione basilare di un sistema Debian Live è la scelta dei pacchetti da includere nell'immagine. Questo capitolo vi guiderà tra le varie opzioni in fase di costruzione per personalizzare l'installazione dei pacchetti di live-build. Le ampie scelte che influenzano quali pacchetti siano disponibili da installare nell'immagine sono le aree di distribuzione e archivio. Per essere sicuri di avere una ragionevole velocità di scaricamento, dovreste usare un mirror a voi vicino. Si possono inoltre aggiungere i propri repository per pacchetti di backport, sperimentali o personalizzati, o aggiungere i pacchetti direttamente come file. È possibile definire liste di pacchetti, inclusi i metapacchetti che installeranno molti pacchetti in una volta sola, come quelli per un certo desktop o una certa lingua. Infine una serie di opzioni fornisce un certo controllo su apt, o aptitude se si preferisce, in fase di compilazione quando i pacchetti sono installati. Ciò può tornare utile se si usa un proxy, se si vuole disabilitare l'installazione dei pacchetti raccomandati per risparmiare spazio o controllare quali versioni dei pacchetti vengono installate con il pinning, giusto per citare alcune possibilità.

    8.1 Sorgenti dei pacchetti
    8.1.1 Distribuzione, le aree di archivio e le modalità

    La distribuzione che viene scelta ha un ampio impatto su quali pacchetti siano disponibili per essere inclusi nell'immagine live. Specificare il nome in codice, il predefinito per la versione wheezy di live-build è wheezy; qualsiasi attuale distribuzione mantenuta negli archivi Debian può essere qui specificata con il suo nome in codice. (Per ulteriori dettagli consultare il Glossario). L'opzione --distribution non solo influenza la sorgente dei pacchetti nell'archivio, ma indica a live-build di comportarsi secondo la necessità per compilare ciascuna distribuzione supportata. Ad esempio se si vuole costruire un rilascio unstable, sid, specificare:

    $ lb config --distribution sid

    All'interno dell'archivio dei pacchetti, le aree sono le principali divisioni dello stesso. In Debian queste sono main, contrib e non-free; soltanto main contiene il software che è parte di Debian, perciò questa è la predefinita. Possono essere specificati uno o più valori:

    $ lb config --archive-areas "main contrib non-free"

    Attraverso l'opzione --mode è disponibile un supporto sperimentale per alcune derivate di Debian; per impostazione predefinita, questa opzione è impostata su debian solo se si sta costruendo su un sistema Debian o sconosciuto. Invocando lb config su una delle derivate supportate, verrà creata un'immagine di quella derivata in modo predefinito. Se lb config viene ad esempio eseguito in modalità ubuntu, saranno gestiti i nomi della distribuzione e le aree di archivio per la derivata specificata e non quelli di Debian. La modalità cambia anche il comportamento di live-build per adattarlo alle derivate.

    Nota: i progetti per i quali sono state aggiunte tali modalità sono i principali responsabili nel supportare gli utenti di queste opzioni. Il progetto Debian Live, a sua volta, fornisce sostegno allo sviluppo col massimo sforzo possibile basandosi sui feedback dei progetti derivati in quanto non sviluppiamo o sosteniamo queste derivate.

    8.1.2 Mirror delle distribuzioni

    L'archivio Debian è replicato attraverso una vasta rete di mirror in tutto il mondo cosicché chiunque in ogni nazione può selezionare il mirror più vicino per una migliore velocità di scaricamento. Ciascuna delle opzioni --mirror-* determina quale mirror della distribuzione è usato nei vari stadi della compilazione. Ricordando dalle Fasi della creazione che la fase di avvio è quando il chroot è inizialmente popolato da debootstrap con un sistema minimale e quella di chroot è quando viene creato il chroot usato per costruire il file system del sistema live. Perciò per queste fasi vengono usati i corrispondenti cambi di mirror, e in seguito, nella fase binaria vengono usati i valori di --mirror-binary e --mirror-binary-security sostituendo qualsiasi altro mirror usato nelle fasi iniziali.

    8.1.3 Mirror delle distribuzioni usati in fase di compilazione

    Per impostare i mirror delle distribuzioni usati in fase di compilazione ad uno locale, è sufficiente impostare --mirror-bootstrap, --mirror-chroot-security e --mirror-chroot-backports come segue.

    $ lb config --mirror-bootstrap http://localhost/debian/ \
              --mirror-chroot-security http://localhost/debian-security/ \
              --mirror-chroot-backports http://localhost/debian-backports/

    Il mirror chroot, specificato da --mirror-chroot, è impostato al valore di --mirror-bootstrap in modo predefinito.

    8.1.4 Mirror delle distribuzioni usate durante l'esecuzione

    Le opzioni --mirror-binary* determinano i mirror delle distribuzioni inseriti nell'immagine binaria. Questi possono essere usati per installare pacchetti aggiuntivi mentre il sistema live è in funzione. Le impostazioni predefinite impiegano http.debian.net, un servizio che sceglie un mirror geograficamente vicino basandosi sul numero IP dell'utente. Questo è una scelta conveniente quando non si può pronosticare quale sarà il mirror migliore per tutti gli utenti. Oppure si può specificare il proprio valore come mostrato nell'esempio qui sotto. Un'immagine compilata con questa configurazione sarebbe adatta solamente ad utenti di una rete dove sia raggiungibile il "mirror".

    $ lb config --mirror-binary http://mirror/debian/ \
              --mirror-binary-security http://mirror/debian-security/ \
              --mirror-binary-backports http://mirror/debian-backports/

    8.1.5 Repository addizionali

    Si possono aggiungere altri repository, ampliando così la scelta dei pacchetti al di là di quelli disponibili nella distribuzione di destinazione. Questi possono essere, per esempio, pacchetti di backport, sperimentali o personalizzati. Per configurare repository aggiuntivi, creare i file config/archives/vostro-repository.list.chroot, o config/archives/vostro-repository.list.binary. Come per le opzioni --mirror-*, queste controlleranno i repository usati nella fase chroot quando si compila l'immagine, e nella fase binary, ad esempio per usarli quando il sistema live è avviato.

    Per esempio, config/archives/live.list.chroot permette di installare pacchetti dal repository snapshot debian-live al momento della creazione del sistema live.

    deb http://live.debian.net/ sid-snapshots main contrib non-free

    Se si aggiunge la stessa riga in config/archives/live.list.binary, il repository verrà aggiunto alla directory /etc/apt/sources.list.d/ del sistema live.

    Se questi file esistono saranno prelevati automaticamente.

    Bisogna inoltre inserire la chiave GPG usata per firmare il repository nei file config/archives/vostro-repository.key.{binary,chroot}.

    Se si necessita di personalizzare il pinning di APT, le sezioni di APT preferences possono essere inserite nei file config/archives/mio-repository.pref.{binary,chroot} e verranno automaticamente aggiunte nella directory /etc/apt/preferences.d/ del sistema live.

    Nota: alcuni repository di pacchetti preconfigurati sono disponibili per una facile selezione attraverso l'opzione --archives, per abilitare gli snapshot live è sufficiente un semplice comando:

    $ lb config --archives live.debian.net

    8.2 Scegliere i pacchetti da installare

    Ci sono diversi modi per scegliere quali pacchetti live-build installerà nell'immagine, coprendo una gamma di esigenze diverse. Si possono richiamare i singoli pacchetti da un elenco, usare i metapacchetti o selezionarli tramite il file control. E infine inserire i file dei pacchetti nell'albero config/, che ben si adatta a provare pacchetti nuovi o sperimentali prima che siano disponibili in un repository.

    8.2.1 Elenchi di pacchetti

    Gli elenchi di pacchetti sono un potente mezzo per esprimere quali pacchetti devono essere installati. La sintassi gestisce sezioni condizionali rendendo semplice la creazione di elenchi e adattarli per l'uso in molteplici configurazioni. I nomi dei pacchetti possono inoltre essere inseriti nell'elenco utilizzando script shell in fase di compilazione.

    Nota: quando si specifica un pacchetto che non esiste, il comportamento di live-build è determinato dalla scelta delle utilità di APT. Per ulteriori dettagli si veda Scegliere apt o aptitude.

    8.2.2 Usare metapacchetti

    Il metodo più semplice per popolare una lista di pacchetti è utilizzare un metapacchetto task manutenuto dalla distribuzione. Ad esempio:

    $ lb config
    $ echo task-gnome-desktop > config/package-lists/desktop.list.chroot

    Questo sostituisce il vecchio metodo predefinito dell'elenco supportato in live-build 2.x. A differenza delle liste predefinite, i metapacchetti task non sono specifici del progetto Debian Live, ma mantenuti da gruppi specializzati all'interno della distribuzione e quindi riflettono il consenso di ogni gruppo su quali pacchetti soddisfano meglio le esigenze degli utenti. Rispetto al vecchio metodo coprono inoltre una gamma molto più ampia di casi d'uso.

    Tutti i metapacchetti task iniziano per task-, un modo per determinare quali siano disponibili (sebbene possa contenere alcuni falsi positivi che corrispondono al nome ma non sono metapacchetti) è di controllare il nome del pacchetto con:

    $ apt-cache search --names-only ^task-

    In aggiunta a questi si trovano altri metapacchetti per vari scopi. Alcuni sono dei sottoinsiemi dei pacchetti task generici, come gnome-core, mentre altri sono parti individuali di un Debian Pure Blend, come il metapacchetto education-*. Per elencarli tutti installare il pacchetto debtags e usare il tag role::metapackage come segue:

    $ debtags search role::metapackage

    8.2.3 Elenchi locali dei pacchetti

    Se si richiede l'elenco di metapacchetti, pacchetti individuali o una combinazione di entrambi tutte le liste dei pacchetti locali vengono salvate in config/package-lists/. Giacché è possibile usare più di una lista, ciò si presta bene a progetti modulari. Si può ad esempio decidere di dedicare un elenco ad un particolare desktop, un altro ad un insieme di pacchetti correlati utilizzabili con desktop differenti. Questo permette di sperimentare diverse combinazioni di insiemi di pacchetti con il minimo sforzo condividendo gli elenchi tra progetti live differenti.

    Per essere processati, gli elenchi dei pacchetti che si trovano in questa directory devono avere un suffisso .list e un suffisso .chroot o .binary aggiuntivo per indicare per quale fase sia l'elenco.

    Nota: se non si specifica il suffisso l'elenco sarà usato per entrambe le fasi. Normalmente è preferibile specificare .list.chroot in modo che i pacchetti vengono installati solo nel filesystem live evitando di avere una copia extra del .deb sul dispositivo.

    8.2.4 Elenchi locali di pacchetti binari

    Per creare un elenco di binari inserire un file con suffisso .list.binary in config/package-lists/; questi pacchetti non sono installati nel filesystem ma inclusi sul dispositivo live sotto pool/. Solitamente questo elenco si usa con una delle varianti non-live dell'installatore; come detto sopra, se si vuole che questo sia identico all'elenco della fase chroot, usare semplicemente il suffisso .list.

    8.2.5 Elenchi di pacchetti generati

    Talvolta succede che il modo migliore per ottenere un elenco è di generarlo con uno script. Ogni riga che inizia con un punto esclamativo indica un comando da eseguire nel chroot quando viene creata l'immagine. Ad esempio si potrebbe includere la riga ! grep-aptavail -n -sPackage -FPriority standard | sort in una lista di pacchetti per produrne una contenente i pacchetti con Priority: standard disponibili.

    Infatti selezionare i pacchetti con il comando grep-aptavail (presente nel pacchetto dctrl-tools) è talmente utile che live-build fornisce uno script Packages per comodità; accetta due argomenti: field e pattern. Per cui si può creare un elenco con il seguente contenuto:

    $ lb config
    $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot

    8.2.6 Usare condizioni all'interno degli elenchi di pacchetti

    Ognuna delle variabili di configurazione di live-build situate in config/* (senza il prefisso LB_) possono essere utilizzate per istruzioni condizionali nell'elenco dei pacchetti. In genere questo significa qualsiasi opzione di lb config in maiuscolo e con trattini cambiati in trattini bassi; ma in pratica è la sola ad influenzare la selezione dei pacchetti che abbia senso, come DISTRIBUTION, ARCHITECTURES o ARCHIVE_AREAS.

    Per esempio, per installare ia32-libs se è specificata --architectures amd64:

    #if ARCHITECTURES amd64
    ia32-libs
    #endif

    Si può provare per ognuna di una serie di valori, ad esempio per installare memtest86+ specificando sia --architectures i386 sia --architectures amd64:

    #if ARCHITECTURES i386 amd64
    memtest86+
    #endif

    È possibile provare altre variabili che contengano più di un valore, ad esempio per installare vrms specificando sia da contrib sia da non-free tramite --archive-areas:

    #if ARCHIVE_AREAS contrib non-free
    vrms
    #endif

    Le condizioni nidificate non sono supportate.

    8.2.7 Task per desktop e lingua

    I task per i desktop e la lingua sono un caso particolare che necessita di ulteriori pianificazioni e configurazioni e in questo senso le immagini live sono diverse da quelle dell'Installatore Debian. Nell'Installatore Debian, se il supporto è stato preparato per un particolare ambiente desktop, il corrispondente task verrà automaticamente installato. Perciò ci sono task gnome-desktop, kde-desktop, lxde-desktop e xfce-desktop interni, nessuno dei quali è offerto nel menu di tasksel. Allo stesso modo, non c'è nessuna voce nel menu per i task delle lingue, ma la scelta della lingua dell'utente durante l'installazione influenza la selezione dei corrispondenti task della lingua.

    Sviluppando un'immagine live per desktop, questa si avvia direttamente su un'area di lavoro, le scelte del desktop e della lingua predefinita sono state fatte al momento della compilazione e non al volo come nel caso dell'installatore Debian. Questo non per dire che un'immagine live non possa essere creata con un supporto per desktop o lingue multipli per offrire all'utente una scelta, ma che non è il comportamento predefinito nella creazione di una live.

    Poiché automaticamente non viene fatta alcuna preparazione sui task della lingua, i quali includono cose come caratteri specifici per la lingua e pacchetti per i metodi di input, se li si vogliono, vanno specificati nella configurazione. Per esempio, un'immagine del desktop GNOME contenente il supporto per il tedesco può includere questi metapacchetti task:

    $ lb config
    $ echo "task-gnome-desktop task-laptop" >> config/package-lists/my.list.chroot
    $ echo "task-german task-german-desktop task-german-gnome-desktop" >> config/package-lists/my.list.chroot

    8.2.8 Tipi e versioni del kernel

    A seconda dell'architettura, nell'immagine verranno inclusi uno o più tipi di kernel in modo predefinito. È possibile scegliere tipi differenti tramite l'opzione --linux-flavours, ognuno ha come suffisso linux-image che costituisce il nome del metapaccchetto che a sua volta dipende dall'esatto pacchetto del kernel da inserire nell'immagine.

    Perciò un'immagine con architettura amd64 includerà il metapacchetto linux-image-amd64 in modo predefinito, mentre un'immagine con architettura i386 includerà i metapacchetti linux-image-486 e linux-image-686-pae. Al momento della scrittura del manuale questi pacchetti dipendono rispettivamente da linux-image-3.2.0-4-amd64, linux-image-3.2.0-4-486 e linux-image-3.2.0-4-686-pae.

    Quando nel proprio archivio è disponibile più di una versione del kernel, si può specificare un suffisso di pacchetto differente con l'opzione --linux-packages. Ad esempio, supponendo di creare un'immagine per architettura amd64 e aggiungere l'archivio experimental per fare dei test e poter installare il kernel linux-image-3.7-trunk-amd64, si configurerà tale immagine come segue:

    $ lb config --linux-packages linux-image-3.7-trunk
    $ echo "deb http://ftp.debian.org/debian/ experimental main" > config/archives/experimental.list.chroot

    8.2.9 Kernel personalizzati

    Si può compilare e includere i propri kernel personalizzati a patto che siano integrati nel sistema di gestione dei pacchetti di Debian. Il sistema live-build non supporta i kernel né crea pacchetti .deb.

    La maniera corretta e raccommandata per collocare i propri pacchetti è di seguire le istruzioni nel kernel-handbook. Ricordarsi di modificare i suffissi per ABI e tipologia in modo appropriato quindi includere una compilazione completa del pacchetto linux e del corrispondente linux-latest nel reposistory.

    Se si opta per creare i pacchetti del kernel senza i metapacchetti corrispondenti, bisogna specificare un suffisso --linux-packages appropriato come discusso in Tipi e versioni del kernel. Come spiegato in Installare pacchetti modificati o di terze parti, è meglio includere i propri pacchetti del kernel nel proprio repository, sebbene funzionino anche le alternative discusse in tale sezione.

    Fornire suggerimenti sul come personalizzare il proprio kernel va oltre lo scopo di questa documentazione, tuttavia è necessario assicurarsi che la configurazione soddisfi almeno i seguenti requisiti minimi:

  • Utilizzare un ramdisk iniziale;
  • includere il modulo del filesystem union (solitamente aufs);
  • includere qualsiasi altro modulo del filesystem necessario alla configurazione (solitamente squashfs).
  • 8.3 Installare pacchetti modificati o di terze parti

    Nonostante sia contro la filosofia di Debian Live, a volte può essere necessario creare un sistema live con versioni modificate dei pacchetti nel repository Debian. Questo per modificare o gestire funzionalità aggiuntive, lingue e marchi, o anche rimuovere elementi non desiderati da pacchetti esistenti. Allo stesso modo, i pacchetti di "terze parti" possono essere utilizzati per aggiungere funzionalità proprietarie o su misura.

    Questa sezione non tratta la compilazione e il mantenimento di pacchetti modificati. Può comunque essere interessante leggere "How to fork privately" di Joachim Breitner: ‹http://www.joachim-breitner.de/blog/archives/282-How-to-fork-privately.html› La creazione di pacchetti su misura è esposta nella "Guida per il nuovo Maintainer" all'indirizzo ‹http://www.debian.org/doc/maint-guide/› e altrove.

    Ci sono due modi per installare pacchetti personalizzati:

  • packages.chroot
  • utilizzare repository APT personalizzati
  • Usando packages.chroot è più semplice da ottenere e utile per una personalizzazione "una tantum" ma ha una serie di svantaggi, mentre un repository APT personalizzato è più laborioso da configurare.

    8.3.1 Utilizzare packages.chroot per installare pacchetti personalizzati

    Per installare un pacchetto personalizzato copiarlo nella directory config/packages.chroot/; i pacchetti al suo interno verranno installati automaticamente durante la creazione del sistema live, non è necessario specificarli altrove.

    I pacchetti devono essere nominati nel modo prescritto, un metodo semplice per farlo è usare dpkg-name.

    L'utilizzo di packages.chroot per l'installazione di pacchetti personalizzati presenta degli svantaggi:

  • non è possibile usare secure APT,
  • è necessario installare i pacchetti adeguati nella directory config/packages.chroot/,
  • non si presta a salvare le configurazioni di Debian Live nel controllo di versione.
  • 8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati

    A differenza di packages.chroot, quando si usa un repository APT personalizzato è necessario assicurarsi di specificare altrove i pacchetti. Per i dettagli si veda Scegliere i pacchetti da installare.

    Sebbene creare un repository APT possa sembrare uno sforzo inutile, l'infrastruttura può facilmente essere riutilizzata in un secondo momento per offrire aggiornamenti dei pacchetti modificati.

    8.3.3 Pacchetti personalizzati e APT

    live-build utilizza APT per installare tutti i pacchetti nel sistema live in modo da ereditare i comportamenti di questo programma. Un esempio rilevante è che (considerando una configurazione predefinita) dato un pacchetto disponibile in due repository differenti con numeri di versione diversi, APT sceglie di installare quello con il numero di versione più alto.

    A causa di questo si può voler incrementare il numero della versione nei file debian/changelog dei pacchetti personalizzati per accertare che la propria versione avrà la precedenza sui repository Debian ufficiali. È anche ottenibile modificando le preferenze del APT pinning del sistema live, si veda APT pinning per maggiori informazioni.

    8.4 Configurare APT in fase di compilazione

    APT è configurabile tramite una serie di opzioni applicate solo in fase di costruzione (la configurazione di APT utilizzata nel sistema live in esecuzione può essere configurata nel solito modo, ovvero includendo le impostazioni appropriate attraverso config/includes.chroot/). Per un elenco completo, cercare nel manuale di lb_config le opzioni che iniziano con apt.

    8.4.1 Scegliere apt o aptitude

    Per installare pacchetti in fase di compilazione si può optare sia per apt sia per aptitude, l'argomento --apt di lb config determina quale usare. Sceglie il metodo implementando il comportamento preferito per l'installazione dei pacchetti, la notevole differenza è come vengono gestiti quelli mancanti.

  • apt: se viene specificato un pacchetto mancante, l'installazione avrà esito negativo; questo è l'impostazine predefinita.
  • aptitude: se viene specificato un pacchetto mancante, l'installazione avrà successo.
  • 8.4.2 Utilizzare un proxy con APT

    Una configurazione di APT spesso richiesta è di amministrare la creazione di un'immagine dietro un proxy, lo si può specificare con le opzioni --apt-ftp-proxy o --apt-http-proxy secondo necessità:

    $ lb config --apt-http-proxy http://proxy/

    8.4.3 Modificare APT per risparmiare spazio

    Si può aver bisogno di risparmiare dello spazio sul supporto dell'immagine, in tal caso una o entrambe delle seguenti opzioni possono essere d'interesse.

    È possibile non includere gli indici di APT con:

    $ lb config --apt-indices false

    Questo non influenzerà le voci in /etc/apt/sources.list, determina solo se /#{var/lib/apt}# contiene o meno i file degli indici. Il compromesso è che APT necessita di quegli indici per operar enel sistema live, perciò prima di eseguire apt-cache search o apt-get install, per esempio, l'utente deve usare prima apt-get update per crearli.

    In caso si trovi che l'installazione dei pacchetti raccomandati appesantisca troppo l'immagine, a patto si è preparati ad affrontare le conseguenze discusse prima, si può disabilitare l'opzione predefinita di APT con:

    $ lb config --apt-recommends false

    La conseguenza più importante di disattivare i raccomandati è che live-boot e live-config raccomandano a loro volta alcuni pacchetti che forniscono funzionalità importanti utilizzate da molte configurazioni, come user-setup che live-config raccomanda ed è usato per creare l'utente live. Salvo eccezioni ci sarà bisogno di riaggiungere all'elenco almeno alcuni di questi o l'immagine non funzionerà come ci si aspetta. Controllare i raccomandati per ognuno dei pacchetti live-* inclusi nella compilazione, se non si è certi di poterli omettere aggiungerli nuovamente agli elenchi.

    La conseguenza generica è che se non si installano i raccomandati per un certo pacchetto, ovvero "pacchetti che si trovano assieme a questo eccetto in installazioni non usuali" (Debian Policy Manual, paragrafo 7.2), saranno omessi alcuni di quelli realmente necessari. Si suggerisce pertanto di verificare la differenza ottenuta nel proprio elenco di pacchetti disabilitando i raccomandati (vedere il file binary.packages generato da lb build) e includere nuovamente in esso quelli omessi che si desiderano installare. In alternativa, se si desidera tenere un modesto numero di raccomandati, li si lasci abilitati e si assegni ad APT un pin di priorità negativo sui pacchetti selezionati affinché non vengano installati, come spiegato in APT pinning.

    8.4.4 Passare opzioni ad apt o aptitude

    Se non esiste un'opzione di lb config per modificare il comportamento di APT come si desidera, utilizzare --apt-options o --aptitude-options per passare qualsiasi argomento tramite lo strumento APT scelto. Per i dettagli consultare le pagine di manuale di apt e aptitude. Notare che entrambe le opzioni hanno valori predefiniti che servirà mantenere in aggiunta a qualsiasi altra fornita. Per cui supponendo di aver incluso qualcosa da snapshot.debian.org per fare dei test e volendo specificare Acquire::Check-Valid-Until=false per soddisfare APT con il vecchio file Release, si procederà come nell'esempio riportato di seguito, appendendo la nuova opzione al valore predefinito --yes:

    $ lb config --apt-options "--yes -oAcquire::Check-Valid-Until=false"

    Per apprendere a pieno queste opzioni e sapere quando usarle consultare i manuali. Questo è solo un esempio e non va interpretato come il modo per configurare la propria immagine, non sarebbe appropriato per il rilascio finale.

    Per configurazioni di APT più complesse che comportano l'uso di opzioni in apt.conf si può voler creare invece il file config/apt/apt.conf. Vedere anche le altre opzioni apt-* per alcune comode scorciatoie di operazioni di uso frequente.

    8.4.5 APT pinning

    Si prega di leggere prima il manuale di apt_preferences(5). Il pinning può essere configurato sia in fase di costruzione sia di esecuzione; per la prima creare config/archives/*.pref, config/archives/*.pref.chroot, e config/apt/preferences mentre per l'ultima creare config/includes.chroot/etc/apt/preferences.

    Nell'ipotesi di creare un sistema live wheezy e avendo la necessità di installare da sid tutti i pacchetti live destinati all'immagine binaria questa fase, bisogna aggiungere sid alle fonti di APT e farne il pinning con una priorità più alta, poi tutti gli altri con una priorità più bassa e e quindi quella predefinita. Così vengono prelevati da sid solo i pacchetti voluti mentre per gli altri si attingerà dalla distribuzione principale, wheezy. Quanto segue servirà allo scopo:

    $ echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
    $ cat >> config/archives/sid.pref.chroot << EOF
    Package: live-*
    Pin: release n=sid
    Pin-Priority: 600

    Package: *
    Pin: release n=sid
    Pin-Priority: 1
    EOF

    Un valore negativo della priorità evita che un pacchetto venga installato, come nel caso in cui non se ne voglia uno raccomandato da un altro. Supponiamo di costruire un'immagine di LXDE utilizzando l'opzione task-lxde-desktop in config/package-lists/desktop.list.chroot} ma non si desidera che all'utente venga richiesto di salvare la password del wifi nel portachiavi. Questo metapacchetto dipende da lxde-core che raccomanda gksu e che a sua volta raccomanda gnome-keyring, in questo caso si vorrà omettere il pacchetto gnome-keyring aggiungendo a #{config/apt/preferences la seguente istruzione:

    Package: gnome-keyring
    Pin: version *
    Pin-Priority: -1

    9. Personalizzazione dei contenuti

    Questo capitolo tratta la personalizzazione dei contenuti del sistema live che va oltre la semplice scelta dei pacchetti da includere. Gli include permettono di aggiungere o sostituire file nell'immagine di Debian Live, gli hook permettono di eseguire comandi in fasi differenti della creazione e all'avvio, e la preconfigurazione permette di configurare i pacchetti quando vengono installati fornendo risposte alle domande di debconf.

    9.1 Include

    Anche se idealmente un sistema live Debian dovrebbe includere file forniti interamente dal pacchetti Debian non modificati, a volte è conveniente fornire o modificare parte del contenuto per mezzo di file. Utilizzando gli include, si può aggiungere (o sostituire) file arbitrari nell'immagine di Debian Live. Per usarli, live-build mette a disposizione due meccanismi:

  • Include locali del chroot: permettono di aggiungere o sostituire file al file system chroot/Live. Vedere Live/chroot include locali per maggiori informazioni.
  • Include locali binari: permettono di aggiungere o sostituire file nell'immagine binaria. Vedere Include locali binari per maggiori informazioni
  • Si consulti il Glossario per ulteriori informazioni sulla distinzione tra immagini "Live" e "binarie".

    9.1.1 Live/chroot include locali

    Gli include locali del chroot possono essere usati per aggiungere o sostituire file nel filesystem chroot/Live in modo che possano essere utilizzati nel sistema live. Un utilizzo tipico è popolare la directory scheletro dell'utente (/etc/skel) che il sistema impiega per creare la home dell'utente. Un altro è quello di fornire file di configurazione che possono essere semplicemente aggiunti o sostituiti nell'immagine senza elaborazione; si veda Live/chroot hook locali se è necessaria l'elaborazione.

    Per includere i file si aggiungano semplicemente alla directory config/includes.chroot. Questa corrisponde alla directory root / del sistema live. Per esempio, per aggiungere un file /var/www/index.html nel sistema live, si usi:

    $ mkdir -p config/includes.chroot/var/www
    $ cp /path/to/my/index.html config/includes.chroot/var/www

    La configurazione avrà quindi il seguente schema:

    -- config
        [...]
         |-- includes.chroot
         |   `-- var
         |       `-- www
         |           `-- index.html
        [...]

    Gli include locali del chroot vengono installati dopo l'installazione dei pacchetti in modo che tali file vengano in seguito sovrascitti.

    9.1.2 Include locali binari

    Si possono utilizzare include locali binari per inserire sul filesystem del supporto materiale come documentazione o video affinché sia immediatamente accessibile dopo l'inserimento dello stesso senza avviare il sistema live. Ciò funziona in modo simile agli include locali del chroot; supponendo che i file ~/video_demo.* siano video dimostrativi del sistema descritti da e collegati a una pagina HTML indice, basta copiare il materiale in config/includes.binary/ come segue:

    $ cp ~/video_demo.* config/includes.binary/

    Questi file appariranno nella directory principale del supporto live.

    9.2 Hook

    Gli hook permettono di eseguire comandi nel chroot e nelle fasi binarie della creazione al fine di personalizzare l'immagine.

    9.2.1 Live/chroot hook locali

    Per eseguire comandi nella fase chroot, creare uno script hook con suffisso .chroot contenente i comandi nella directory config/hooks/. L'hook verrà eseguito nel chroot dopo che verrà applicata il resto della configurazione del chroot, ricordare quindi di garantire che la propria configurazione includa tutti i pacchetti e i file che l'hook necessita per funzionare. Vedere gli script d'esempio degli hook di chroot per i vari compiti di personalizzazione del chroot contenuti in /usr/share/doc/live-build/examples/hooks da copiare o collegare nella propria configurazione.

    9.2.2 Hook in fase di avvio

    Per eseguire comandi all'avvio, è possibile fornire degli hook a live-config come spiegato nella sezione "Customization" del suo manuale. Controllare gli hook di live-config in /lib/live/config/ e notare i numeri sequenziali; fornire quindi i propri hook con una sequenza numerica appropriata, sia come include locali del chroot in config/includes.chroot/lib/live/config/, sia come pacchetto personalizzato come discusso in Installare pacchetti modificati o di terze parti.

    9.2.3 Hook binari locali

    Per eseguire comandi nella fase binaria, creare uno script hook con suffisso .binary che contenga i comandi nella directory config/hooks/. L'hook verrà eseguito dopo tutti gli altri comandi binari, ma prima di binary_checksums, l'ultimo comando. I comandi nel proprio hook non vengono eseguiti nel chroot, perciò si faccia attenzione a non modificare nessun file al di fuori dell'albero di compilazione o si danneggerà il sistema! Vedere gli script d'esempio per gli hook binari per i vari compiti di personalizzazione dei binari in /usr/share/doc/live-build/examples/hooks da copiare o collegare nella propria configurazione.

    9.3 Preconfigurare le domande di Debconf

    I file nella directory config/preseed/ con suffisso .cfg seguiti dalla fase (.chroot o .binary) sono considerati file di preconfigurazione di debconf e sono installati da live-build usando debconf-set-selections durante la fase corrispondente.

    Per ulteriori informazioni su debconf, vedere debconf(7) nel pacchetto debconf.

    10. Personalizzare i comportamenti durante l'esecuzione

    Tutte le configurazioni durante l'esecuzione sono eseguite da live-config. Vengono qui presentate alcune delle opzioni di live-config più comuni alle quali gli utenti sono interessati; una lista completa può essere trovata nel suo manuale.

    10.1 Personalizzare l'utente live

    Un'importante considerazione è che l'utente live viene creato all'avvio da live-boot e non da live-build durante la compilazione. Questo non solo influenza dove viene introdotto il materiale relativo all'utente nella creazione, come discusso in Live/chroot include locali, ma anche ogni gruppo e permesso associato all'utente live.

    È possibile specificare gruppi aggiuntivi ai quali l'utente live apparterrà utilizzando una delle possibilità di configurazione di live-config. Ad esempio, per aggiungere l'utente al gruppo fuse, è possibile sia inserire in config/includes.chroot/etc/live/config/user-setup.conf quanto segue:

    LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"

    o utilizzare live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse come parametro di boot.

    È inoltre possibile modificare facilmente il nome utente "user" e la password "live" predefiniti.

    Per cambiare il nome utente specificare quanto segue nella configurazione:

    $ lb config --bootappend-live "boot=live config username=live-user"

    Un modo per cambiare la password è tramite un hook come descritto in Hook in fase di avvio. Si può usare l'hook "passwd" da /usr/share/doc/live-config/examples/hooks, anteponendolo di conseguenza (ad esempio, 2000-passwd) e aggiungerlo al file config/includes.chroot/lib/live/config/

    10.2 Personalizzare la localizzazione e la lingua

    Quando il sistema live si avvia, la lingua è inserita in due fasi:

  • generazione della localizzazione
  • impostare la configurazione della tastiera

    Quando si crea un sistema live la localizzazione predefinita è locales=en_US.UTF-8. Per definire quale generare, si usi il parametro locales nell'opzione --bootappend-live di lb config:

    $ lb config --bootappend-live "boot=live config locales=de_CH.UTF-8"

    Possono essere specificate più lingue separate da una virgola.

    Questo parametro, così come quelli della tastiera indicati più avanti, può essere usato anche dalla riga di comando del kernel specificando una lingua con language_country (nel qual caso verrà usata la codifica predefinita) o l'intera stringa language_country.encoding. In /usr/share/i18n/SUPPORTED è possibile trovare un elenco delle lingue supportate e la codifica per ognuna di esse.

    Sia la configurazione della tastiera in console sia di X sono eseguite da live-config con il pacchetto console-setup. Per fare ciò usare i parametri keyboard-layouts, keyboard-variants, keyboard-options e keyboard-model tramite l'opzione --bootappend-live. Le opzioni valide si trovano in /usr/share/X11/xkb/rules/base.lst. Per ottenere i layout e le varianti di una data lingua, provare a cercare il loro nome inglese o il paese in cui è usata, esempio:

    $ egrep -i '(^!|german.*switzerland)' /usr/share/X11/xkb/rules/base.lst
    ! model
    ! layout
       ch              German (Switzerland)
    ! variant
       legacy          ch: German (Switzerland, legacy)
       de_nodeadkeys   ch: German (Switzerland, eliminate dead keys)
       de_sundeadkeys  ch: German (Switzerland, Sun dead keys)
       de_mac          ch: German (Switzerland, Macintosh)
    ! option

    Notare che ogni variante mostra nella descrizione il layout alla quale viene applicata.

    Spesso c'è bisogno di configurare solo il layout. Ad esempio per ottenere i file di localizzazione per il layout di tastiera tedesco e svizzero-tedesco in X:

    $ lb config --bootappend-live "boot=live config locales=de_CH.UTF-8 keyboard-layouts=ch"

    Tuttavia per casi molto particolari si vorrà includere altri parametri. Ad esempio per configurare un sistema in francese con un layout Dvorak (chiamato Bepo) su una tastiera USB TypeMatrix EZ-Reach 2030:

    $ lb config --bootappend-live \
         "boot=live config locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"

    Per ogni opzione keyboard-* si possono specificare più valori separati da una virgola, con l'eccezione di keyboard-model che ne accetta uno solo. Consultare la pagina di manuale di keyboard(5) per dettagli ed esempi delle variabili XKBMODEL, XKBLAYOUT, XKBVARIANT e XKBOPTIONS. Se vengono forniti più valori per keyboard-variants, questi verranno combinati uno ad uno con quelli di keyboard-layouts (vedere l'opzione -variant in setxkbmap(1) ). Sono permessi valori vuoti, ad esempio per definire due layout, US QWERTY come predefinito e US Dvorak, usare:

    $ lb config --bootappend-live \
         "boot=live config keyboard-layouts=us,us keyboard-variants=,dvorak"

    10.3 Persistenza

    Uno dei paradigmi di un cd live è un sistema preinstallato eseguito da un supporto in sola lettura, come un cdrom, dove le modifiche non sopravvivono ai riavvii dell'hardware della macchina ospitante.

    Un sistema Debian Live è una generalizzazione di questo paradigma e di conseguenza oltre ai CD gestisce altri supporti; ma comunque, nel suo comportamento predefinito, deve essere considerato in sola lettura e tutte i cambiamenti fatti durante l'esecuzione del sistema verranno persi allo spegnimento.

    Persistenza è il nome comune per differenti tipi di soluzioni per salvare alcune o tutte queste modifiche con i riavii. Per capire come funziona potrebbe essere utile sapere che sebbene il sistema venga avviato ed eseguito da un dispositivo in sola lettura, le modifiche a file e directory vengono scritte su uno scrivibile, tipicamente un ram disk (tmpfs) e i dati sui ram disk non sopravvivono ai riavvii.

    I dati immagazzinati su questo ramdisk andrebbero salvati un supporto scrivibile persistente come un supporto di memorizzazione locale, una condivisione di rete o anche una sessione di un CD/DVD riscrivibile multisessione. Tutti questi supporti sono gestiti in Debian Live in modi differenti, e tutti tranne l'ultimo richiedono un parametro d'avvio speciale da specificare all'avvio: persistence.

    Se il parametro di boot persistence è impostato (e non lo è nopersistence), i supporti di memorizzazione locali (hard disk, dispositivi USB) saranno rilevati come volumi persistenti durante l'avvio. È possibile selezionare quali tipi utilizzare specificando certi parametri di avvio descritti nella manpage di live-boot(7). Un volume persistente è uno dei seguenti:

  • una partizione, identificata dal suo nome GPT (GUID Partition Table).
  • un filesystem, identificato dalla sua label.
  • un file immagine situato nella directory radice di un qualsiasi filesystem leggibile (anche una partizione NTFS di un sistema estraneo), identificato dal nome del file.
  • La label del volume per le stratificazioni deve essere persistence ma verrà ignorata a meno che non sia presente nella directory radice un file chiamato persistence.conf che viene usato per personalizzare la persistenza del volume, in altre parole, specificare le directory che si vogliono salvare dopo un riavvio. Per maggiori dettagli vedere Il file persistence.conf.

    Ecco alcuni esempi per preparare un volume da utilizzare per la persistenza. Può ad esempio essere una partizione ext4 su un hard disk o una penna USB creata con:

    # mkfs.ext4 -L persistence /dev/sdb1

    Vedere anche Usare lo spazio rimanente su una penna USB.

    Se si possiede già una partizione sul dispositivo basta solo cambiare l'etichetta con una delle seguenti:

    # tune2fs -L persistence /dev/sdb1 # per filesystem ext2,3,4

    Un esempio di come creare un file immagine ext4 da utilizzare per la persistenza:

    $ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
    $ /sbin/mkfs.ext4 -F persistence

    Una volta che il file immagine è stato creato, ad esempio per rendere /usr persistente salvando solo le modifiche fatte a quella directory e non tutto il contenuto di /usr, si può usare l'opzione "union". Se l'immagine è situata nella propria home copiarla nella radice del filesystem sul disco e montarla in /mnt come segue:

    # cp persistence /
    # mount -t ext4 /persistence /mnt

    Creare quindi il file persistence.conf aggiungendovi il contenuto e smontare il file immagine.

    # echo "/usr union" >> /mnt/persistence.conf
    # umount /mnt

    Ora riavviare il dispositivo live con il parametro d'avvio "persistence".

    10.3.1 Il file persistence.conf

    Un volume con la label persistence deve essere configurato mediante il file persistence.conf per creare directory persistenti arbitrarie. Tale file, situato nella directory radice del filesystem del volume, controlla quali rendere persistenti e in che modo.

    Nella manpage di persistence.conf(5) è descritto dettagliatamente come è configurato il mount degli strati personalizzati, ma un semplice esempio dovrebbe essere sufficiente per la maggior parte degli usi. Supponendo di voler creare la directory home e quella della cache di APT in modo persistente in un filesystem ext4 sulla partizione /dev/sdb1:

    # mkfs.ext4 -L persistence /dev/sdb1
    # mount -t ext4 /dev/sdb1 /mnt
    # echo "/home" >> /mnt/persistence.conf
    # echo "/var/cache/apt" >> /mnt/persistence.conf
    # umount /mnt

    Quindi riavviare. Durante il primo avvio il contenuto di /home e /var/cache/apt saranno copiati nel volume persistente e da allora tutte le modifiche a queste directory risiederanno in modo persistente sul volume. C'è da considerare che tutti i path elencati nel file persistence.conf non possono contenere spazi o i caratteri speciali . e .., inoltre né /lib, /lib/live (o una delle sue sottodirectory) né / può essere resa persistente tramite i mount personalizzati. Come workaround a questa limitazione è possibile aggiungere / union al file persistence.conf file per ottenere la persistenza completa.

    10.3.2 Utilizzare più di un'archiviazione persistente

    Ci sono tre metodi differenti di utilizzare persistenze multiple per differenti casi d'uso. Ad esempio l'utilizzo di svariati volumi contemporaneamente o selezionandone uno solo per scopi molto specifici.

    Possono essere utilizzati svariati volumi di stratificazione personalizzati (con i rispettivi file persistence.conf) allo stesso tempo ma se questi creano la stessa directory persistente, ne verrà usata solo una. Se due directory montate sono "nidificate" (una è la sottodirectory dell'altra), la superiore sarà montata per prima, per cui nessuna operazione di mount verrà sovrastata dall'altra. I mount nidificati personalizzati sono problematici se sono elencati nello stesso file #{persistence.conf}. Se si ha davvero la necessità (in genere non si dovrebbe averla), consultare la manpage di persistence.conf(5) per sapere come gestire questo caso.

    Un possibile caso d'uso: se si desidera archiviare i dati dell'utente (/home) e quelli dell'amministratore (/root) in partizioni diverse, creare due partizioni con l'etichetta persistence e aggiungervi un file persistence.conf in ognuna di esse, # echo "/home" > persistence.conf per la partizione che salverà i file dell'utente e # echo "/root" > persistence.conf per quella dell'amministratore. Infine usare il parametro d'avvio persistence.

    Se un utente avesse bisogno di spazi di archiviazione multipli dello stesso tipo per posizioni differenti o per test, come privato e lavoro, il parametro d'avvio persistence-label usato in congiunzione con persistent permetterà supporti persistenti multipli ma univoci. Un esempio potrebbe essere un utente che vuole usare una partizione etichettata come privato per dati personali come i preferiti del browser o di altro tipo, questi userà i parametri d'avvio persistence persistence-label=privato. E per archiviare dati inerenti il lavoro, come documenti, ricerche e altro, verranno usati i parametri d'avvio persistence persistence-label=lavoro.

    È importante ricordare che ognuno di questi volumi, privato e lavoro, necessitano anche di un file persistence.conf nella propria radice. Il manuale di live-boot contiene altre informazioni su come utilizzare queste etichette con nomi usati in versioni precedenti.

    11. Personalizzare l'immagine binaria

    11.1 Bootloader

    live-build usa syslinux e alcuni dei suoi derivati (a seconda del tipo di immagine) come bootloader predefiniti. Si possono facilmente personalizzare in due modi.

    Per utilizzare un tema completo, copiare /usr/share/live/build/bootloaders in config/bootloaders e modificare i file. Se non si vogliono modificare tutte le configurazioni dei bootloader supportati è sufficiente fornire la copia locale di uno di essi, ad esempio isolinux in config/bootloaders/isolinux può bastare, dipende dalle esigenze.

    Si può anche fare piccole modifiche. Per esempio i derivati di syslinux sono configurati con un timeout impostato a 0 (zero) in modo predefinito, significa che resteranno in pausa al loro splash screen fino a quando non si preme un tasto.

    Per modificare il timeout di avvio di un'immagine iso-hybrid modificare un file isolinux.cfg predefinito specificando il timeout in unità di secondi e aggiungerlo a config/includes.binary/isolinux/

    Un file isolinux.cfg modificato per fare il boot dopo cinque secondi sarà simile a questo:

    include menu.cfg
    default vesamenu.c32
    prompt 0
    timeout 50

    Un modo alternativo per raggiungere lo stesso obiettivo potrebbe essere scrivere un hook e aggiungerlo a config/hooks/. Ricordarsi di aggiungere il suffisso .binary per eseguirsi nella fase binaria. Ecco un esempio:

    #!/bin/sh

    sed -i -e 's|timeout 0|timeout 50|' binary/isolinux/isolinux.cfg

    Allo stesso modo, se si vuole utilizzare un'immagine splash.png personalizzata basta aggiungerne una di 640x480 pixel a config/includes.binary/isolinux/

    11.2 Metadati ISO

    Quando si crea un'immagine binaria ISO9660, si possono usare le seguenti opzioni per aggiungere vari metadati testuali. Questo può aiutare a identificare facilmente la versione o la configurazione di un'immagine senza avviarla.

  • LB_ISO_APPLICATION/--iso-application NAME: descrive l'applicazione che sarà nell'immagine. La lunghezza massima per questo campo è di 128 caratteri.
  • * LB_ISO_PREPARER/--iso-preparer NAME: descrive il costruttore dell'mmagine, solitamente con alcuni dettagli per contattarlo. L'impostazione predefinita è la versione di live-build che si sta usando, il quale potrà essere utile in seguito per il debugging. La lunghezza massima per questo campo è di 128 caratteri.

  • LB_ISO_PUBLISHER/--iso-publisher NAME: descrive l'editore dell'immagine, solitamente con qualche dettaglio per contattarlo. La lunghezza massima lunghezza per questo campo è di 128 caratteri.
  • LB_ISO_VOLUME/--iso-volume NAME: specifica l'ID del volume dell'immagine. Questa è utilizzata come etichetta visibile all'utente su alcune piattaforme, come Windows e Apple Mac OS. La lunghezza massima per questo campo è di 128 caratteri.
  • 12. Personalizzare l'Installatore Debian

    Le immagini del sistema Debian Live possono essere integrate nell'Installatore Debian. Ci sono differenti tipi d'installazione che variano in cosa viene incluso e come agisce l'installatore.

    In questa sezione si presti attenzione all'uso delle lettere maiuscole quando si fa riferimento all'"Installatore Debian", quando usato ci si riferisce esclusivamente all'installatore ufficiale Debian. Spesso è abbreviato come "d-i".

    12.1 Tipologie dell'Installatore Debian

    I tre principali tipi dell'installer sono:

    Installatore Debian "normale": un'immagine Debian Live con un kernel e un initrd separati i quali (quando viene selezionato dal bootloader appropriato) lancia un'istanza standard dell'Installatore Debian, come quando si scarica un'immagine di Debian per CD e la si avvia. Le immagini che contengono un sistema live e un'installatore indipendenti sono spesso definite "immagini combinate".

    In queste immagini, Debian è installata prendendo e installando i pacchetti .deb usando debootstrap, da supporti locali o dalla rete, risultante in un sistema Debian standard installato sul disco rigido.

    L'intero processo può essere preimpostato e personalizzato in diversi modi; per ulteriori informazioni si vedano le corrispondenti pagine del manuale dell'Installatore Debian. Una volta che si ha un file preimpostato funzionante, live-build può inserirlo automaticamente nell'immagine e abilitarlo.

    Installatore Debian "live": un'immagine Debian Live con un kernel e un initrd separato che (quando selezionato dall'appropriato bootloader) avvia un'instanza dell'Installatore Debian.

    L'installazione procederà nello stesso modo di un'installazione "Normale" come descritto sopra, ma nella fase dell'installazione del pacchetto, invece di usare debootstrap per prelevare e installare i pacchetti, l'immagine del filesystem live viene copiata sulla destinazione. Questo si ottiene con uno speciale udeb chiamato live-installer.

    Dopo questa fase, l'Installatore Debian continua normalmente, installando e configurando elementi come bootloader e utenti locali, ecc.

    Nota: per supportare nel bootloader sia la voce normale che quella live dell'installatore sullo stesso supporto si deve disabilitare live-installer preconfigurando live-installer/enable=false.

    Installatore Debian "Desktop": indipendentemente dal tipo di Installatore Debian incluso, d-i può essere lanciato cliccando un'icona sul desktop, in alcune situazioni più semplice per l'utente. Per poterne usufruire deve essere incluso il pacchetto debian-installer-launcher.

    Si noti che live-build non include l'Installatore Debian nell'immagine in modo predefinito, necessita di essere espressamente abilitato con lb config.Inoltre, affinché l'installatore "Desktop" funzioni, il kernel del sistema live deve corrispondere a quello usato dal d-i per l'architettura specificata. Per esempio:

    $ lb config --architectures i386 --linux-flavours 486 \
             --debian-installer live
    $ echo debian-installer-launcher >> config/package-lists/my.list.chroot

    12.2 Personalizzare il Debian Installer con la preconfigurazione

    Come descritto nell'appendice B del manuale dell'Installatore Debian all'indirizzo ‹http://www.debian.org/releases/stable/i386/apb.html›, "La preconfigurazione fornisce un modo per impostare le risposte alle domande poste durante il processo d'installazione senza la necessità di inserirle manualmente. Ciò permette di automatizzare totalmente molti tipi di installazione offrendo anche alcune caratteristiche normalmente non disponibili." Questo tipo di personalizzazione è compiuta in modo ottimale con live-build mettendo la configurazione in un file preseed.cfg incluso in config/debian-installer/. Ad esempio per preconfigurare l'impostazione della localizzazione su en_US:

    $ echo "d-i debian-installer/locale string en_US" \
             >> config/debian-installer/preseed.cfg

    12.3 Personalizzare il contenuto dell'Installatore Debian

    Si può voler includere pacchetti udeb compilati localmente come componenti del d-i per scopi di sperimentazione o debug; per includerli nell'immagine inserirli in config/packages.binary/. I file e le directory aggiuntivi o di rimpiazzo si possono includere nell'initrd dell'installatore in maniera simile agli Include locali del Live/chroot, inserendo il materiale in config/includes.debian-installer/.

    Progetto

    13. Contribuire al progetto

    Quando si sottopone un contributo, si prega di indicare chiaramente il detentore del copyright e di includere la licenza. Si noti che, per essere accettato, il contributo deve essere distribuito con la stessa licenza del resto del documento, ovvero la GPL versione 3 o successiva.

    I contributi al progetto, come traduzioni e patch, sono estremamente benvenuti. Chiunque può eseguire il commit direttamente sul repository; tuttavia chiediamo di inviare le modifiche più corpose in mailing list, per poterne prima discutere. Per maggiori informazioni vedere la sezione Contatti.

    Il progetto Debian Live usa Git come sistema di controllo versione e gestione del codice sorgente. Come spiegato in Repository git ci sono due rami di sviluppo principali: debian e debian-next. Tutti possono eseguire commit al ramo debian-next del repository di live-boot, live-build, live-config, live-images, live-manual e live-tools.

    Tuttavia ci sono alcune restrizioni. Il server rifiuta:

  • push non fast-forward,
  • commit merge,
  • aggiunta o rimozione di tag e branch.
  • Anche se tutti i commit possono essere corretti, chiediamo di usare il buon senso ed eseguire buoni commit con dei buoni messaggi.

  • Si scrivano messaggi costituiti da frasi in inglese esaurienti e utili, inizianti con una lettera maiuscola e terminanti con un punto. Solitamente cominceranno con la forma "Fixing/Adding/Removing/Correcting/Translating/...".
  • Scrivere buoni messaggi nei commmit. La prima riga deve contenere un sunto accurato del contenuto del commit in quanto verrà incluso nel changelog. Se si necessita di aggiungere ulteriori spiegazioni, scriverle sotto lasciando una riga vuota dopo la prima e quindi un'altra vuota dopo ogni paragrafo. Le righe non devono superare gli 80 caratteri.
  • Eseguire commit atomici, ovvero non mescolare cose non inerenti tra loro nello stesso commit ma farne uno per ogni modifica apportata.
  • 13.1 Applicare le modifiche

    Per eseguire il push ai repository è necessario seguire la seguente procedura. Verrà usato live-manual come esempio per cui rimpiazzalo con il nome del repository su cui si vuole lavorare. Per informazioni dettagliare su come modificare live-manual si veda Contribuire a questo documento.

  • Prelevare la chiave pubblica:
  • $ mkdir -p ~/.ssh/keys
    $ wget http://live.debian.net/other/keys/git@live.debian.net -O ~/.ssh/keys/git@live.debian.net
    $ wget http://live.debian.net/other/keys/git@live.debian.net.pub -O ~/.ssh/keys/git@live.debian.net.pub
    $ chmod 0600 ~/.ssh/keys/git@live.debian.net*

  • Aggiungere la seguente sezione alla propria configurazione di openssh-client:
  • $ cat >> ~/.ssh/config << EOF
    Host live.debian.net
         Hostname live.debian.net
         User git
         IdentityFile ~/.ssh/keys/git@live.debian.net
    EOF

  • Scaricare tramite ssh un clone del manuale:
  • $ git clone git@live.debian.net:/live-manual.git
    $ cd live-manual && git checkout debian-next

  • Assicurarsi di avere impostato autore e indirizzo email:
  •   $ git config user.name "John Doe"
      $ git config user.email john@example.org

    Importante: Notare che tutte le modifiche vanno eseguite sul ramo debian-next.

  • Apportare le modifiche. In questo esempio si scrive prima una nuova sezione che si occupa di applicare patch e quindi prepararla al commit aggiungendo i file e scrivendo il messaggio in questo modo:
  • $ git commit -a -m "Adding a section on applying patches."

  • Inviare il commit al server:
  • $ git push

    14. Segnalare bug

    Debian Live è lungi dall'essere perfetta, ma con il vostro aiuto vogliamo avvicinarci il più possibile a questo livello. Non esitare a segnalare un bug; è meglio farlo due volte che mai. Questo capitolo include alcune raccomandazioni su come presentare una buona segnalazione.

    Per gli impazienti

  • Per i problemi noti verificare sempre lo stato degli aggiornamenti dell'immagine sulla nostra pagina iniziale ‹http://live.debian.net/›.
  • Prima di inviare una segnalazione di bug provare a riprodurlo con le versione più recenti di live-build, live-boot, live-config e live-tools.
  • Si cerchi di fornire informazioni il più dettagliate possibile riguardo il bug. Questo comprende (almeno) la versione di live-build, live-boot, live-config e live-tools utilizzata e la distribuzione del sistema live che si sta creando.
  • 14.1 Problemi noti

    Giacché Debian testing e Debian unstable subiscono cambiamenti continui, quando si specifica l'una o l'altra come sistema di destinazione, può non essere sempre possibile una compilazione che vada a buon fine.

    Se questo causa troppe difficoltà, non creare un sistema basato su testing o unstable ma usare piuttosto stable. live-build si basa su stable in modo predefinito.

    I problemi noti al momento sono elencati sotto la sezione "status" della nostra pagina iniziale ‹http://live.debian.net/

    Questo manuale non intende insegnare come identificare e risolvere correttamente i problemi dei pacchetti delle distribuzioni di sviluppo, tuttavia ci sono un paio di cose da provare: se la creazione di testing non va a buon fine provare con unstable; se non funziona nemmeno unstable tornare a testing ed effettuare il pinning da unstable alla nuova versione del pacchetto corrotto (si veda APT pinning per i dettagli).

    14.2 Ricompilare da zero

    Per essere certi che un particolare bug non sia causato dalla creazione di un sistema non pulito, ricostruire sempre l'intero sistema da zero per vedere se il bug sia riproducibile.

    14.3 Usare pacchetti aggiornati

    L'utilizzo di pacchetti datati può causare notevoli complicazioni nel tentativo di riprodurre (e alla fine risolvere) il problema. Assicurarsi che il sistema creato sia aggiornato e ogni pacchetto incluso nell'immagine lo sia a sua volta.

    14.4 Raccogliere informazioni

    Nella segnalazione si invita a fornire informazioni sufficienti. Dovrebbe almeno contenere l'esatta versione di live-build nella quale si è trovato il bug e i passi per riprodurlo. Con un po' di buon senso si può includere qualsiasi altro dettaglio rilevante che si ritiene utile per la risoluzione del problema.

    Affinché la segnalazione del bug sia migliore possibile, si richiedono almeno le seguenti informazioni:

  • Architettura del sistema ospitante
  • Versione di live-build sul sistema ospitante
  • Versione di debootstrap o cdebootstrap sul sistema ospitante
  • Architettura del sistema live
  • Distribuzione del sistema live
  • Versione di live-boot sul sistema ospitante
  • Versione di live-config sul sistema live
  • Versione di live-tools sul sistema ospitante
  • È possibile generare un registro del processo di costruzione usando il comando tee. Si raccomanda di farlo automaticamente con uno script auto/build; (si veda Gestire una configurazione per i dettagli).

    # lb build 2>&1 | tee build.log

    All'avvio, live-boot e live-config conservano i loro registri in /var/log/live/. Controllarvi gli errori.

    Inoltre, per escludere altri errori è sempre una buona idea creare un tar della propria directory config/ e caricarlo da qualche parte (non inviarlo come allegato alla mailing list), in modo che sia per noi possibile riprodurre gli errori incontrati. Se ciò causa problemi (ad esempio a causa della dimensione) si può utilizzare l'output di lb config --dump che produce un sommario dell'albero di configurazione (elenca i file nelle sottodirectory di config/ ma non le include).

    Ricordarsi che i file di registro da inviare vanno creati con l'impostazione della lingua inglese, ad esempio eseguendo il comando live-build preponendo LC_ALL=C oppure LC_ALL=en_US.

    14.5 Se possibile isolare il caso non andato a buon fine

    Se possibile, isolare il caso non andato a buon fine alla variazione più piccola che lo causa. Non è sempre facile da fare, perciò non preoccupatevi se non riuscite a gestirlo per la vostra segnalazione. Tuttavia, se si pianifica bene il ciclo di sviluppo adottando piccole modifiche per ogni iterazione, si riuscirà ad isolare il problema creando una configurazione semplificata che si avvicina all'attuale con l'aggiunta delle sole modifiche problematiche. Se si incontrano serie difficoltà nel trovare la causa, potrebbe essere che sono stati inseriti troppi cambiamenti in una sola volta e bisogna cambiare approccio.

    14.6 Segnalare il bug del pacchetto giusto

    Se non si sa quale sia il componente responsabile del bug o se il bug è uno generico riguardante il sistema live, si può fare una segnalazione per lo pseudo-pacchetto debian-live.

    Tuttavia vi saremmo grati se tentate di restringere il campo in base a dove appare il bug.

    14.6.1 Durante la compilazione mentre esegue il bootstrap

    live-build avvia inizialmente un sistema Debian di base con debootstrap o cdebootstrap; può fallire a seconda dello strumento utilizzato e della distribuzione Debian che si sta avviando. Se il bug appare a questo punto controllare che l'errore sia relativo ad uno specifico pacchetto Debian (più probabile) o allo strumento di avvio stesso.

    In entrambi i casi non è un bug in Debian Live, ma piuttosto in Debian stessa che probabilmente non può essere risolto direttamente. Si prega di inviare una segnalazione di bug riguardo l'utilità di avvio o il pacchetto che ha fallito.

    14.6.2 Durante la compilazione mentre installa i pacchetti

    live-build installa pacchetti aggiuntivi dall'archivio Debian e può fallire a seconda della distribuzione Debian e lo stato dell'archivio giornaliero.Se il bug appare a questo punto, controllare che l'errore sia riproducibile su un sistema normale.

    In questo caso non è un bug in Debian Live, ma piuttosto in Debian, inviare una segnalazione sul pacchetto che ha fallito. Si otterranno maggiori informazioni eseguendo debootstrap separatamente dal sistema live o eseguendo lb bootstrap --debug.

    Se si verifica un problema utilizzando un mirror locale o un qualsiasi tipo di proxy è bene riprodurlo avviando da un mirror ufficiale.

    14.6.3 In fase di avvio

    Se l'immagine non si avvia segnalarlo alla mailing list con le informazioni richieste in Raccogliere informazioni. Non dimenticare di menzionare esattamente come e quando l'immagine fallisce, utilizzando la virtualizzazione o hardware reale. Se si utilizza un qualsiasi sistema di virtualizzazione provare sempre su hardware reale prima di segnalare un bug; anche fornire un'istantanea dello schermo può essere molto utile.

    14.6.4 In fase di esecuzione

    Se un pacchetto è stato installato con successo ma fallisce durante l'esecuzione del sistema live, si tratta probabilmente di un bug in Debian Live. Tuttavia:

    14.7 Fare la ricerca

    Prima di riportare il bug si prega di cercare sul web il messaggio d'errore o il sintomo ottenuti. Poiché è altamente improbabile essere l'unica persona ad incontrare un certo problema, c'è sempre la possibilità che sia stato discusso altrove e che siano stati proposte una soluzione, una patch o soluzione temporanea.

    Si dovrebbe prestare particolare attenzione alla mailing list di Debian Live così come la pagina iniziale del sito, in quanto contengono informazioni più aggiornate. Se tale informazione esiste si includa sempre un riferimento nella segnalazione del bug.

    In aggiunta bisogna controllare l'attuale elenco dei bug riguardanti live-build, live-boot, live-config e live-tools per vedere se sia già stato segnalato qualcosa di simile.

    14.8 Dove segnalare i bug

    Il progetto Debian Live tiene traccia di tutti i bug sul Debian Bug Tracking System (BTS, sistema di tracciamento dei bug Debian), si veda ‹http://bugs.debian.org/› per le informazioni su come usarlo. È anche possibile utilizzare il comando reportbug dall'omonimo pacchetto.

    In genere bisogna riportare gli errori in fase di compilazione verso il pacchetto live-build, quelli di avvio verso live-boot e quelli in fase di esecuzione a live-config. Se non siete certi di quale sia il pacchetto appropriato o serve maggiore aiuto prima della segnalazione, inviate una segnalazione per lo pseudo-pacchetto debian-live. Ce ne occuperemo riassegnandolo dove più appropriato.

    Si noti che i bug trovati nelle distribuzioni derivate da Debian (come Ubuntu e altre) non vanno segnalati a Debian BTS a meno che non siano riproducibili anche su un sistema Debian utilizzando pacchetti ufficiali Debian.

    15. Lo stile nello scrivere codice

    Questo capitolo documenta lo stile usato in Debian Live per il codice.

    15.1 Compatibilità
  • Non usare sintassi o semantiche mirate alla shell Bash. Ad esempio l'uso di costrutti array.
  • Utilizzare solo il sottoinsieme POSIX - ad esempio, usare $(foo) invece di `foo`.
  • È possibile verificare i propri script con "sh -n" e "checkbashisms".
  • Assicurarsi che tutto il codice giri con 'set -e'.

    15.2 Rientri
  • Usare sempre i tab piuttosto che gli spazi.
  • 15.3 Ritorno a capo
  • Generalmente le righe sono composte da un massimo di 80 caratteri.
  • Utilizzare lo "stile Linux" per le interruzioni di riga:
  • Sbagliato:

    if foo; then
             bar
    fi

    Corretto:

    if foo
    then
             bar
    fi

  • Lo stesso vale per le funzioni:
  • Sbagliato:

    Foo () {
             bar
    }

    Corretto:

    Foo ()
    {
             bar
    }

    15.4 Variabili
  • Le variabili vanno sempre scritte in maiuscolo.
  • Le variabili usate in live-build iniziano sempre con il prefisso LB_.
  • Le variabili interne temporanee in live-build dovrebbero iniziare con il prefisso _LB_.
  • Le variabili locali iniziano con il prefisso live-build __LB_.
  • Le variabili in live-config relative ai parametri di avvio iniziano con LIVE_.
  • Tutte le altre variabili in live-config iniziano con il prefisso _.
  • Intorno alle variabili utilizzare le graffe; ad esempio scrivere ${FOO} invece di $FOO.
  • Proteggere sempre le variabili con le virgolette per rispettare potenziali spaziature: scrivere "${FOO}" e non ${FOO}.
  • Per coerenza usare sempre le virgolette quando si assegnano valori alle variabili:
  • Sbagliato:

    FOO=bar

    Corretto:

    FOO="bar"

  • Utilizzando variabili multiple, quotare l'intera espressione:
  • Sbagliato:

    if [ -f "${FOO}"/foo/"${BAR}"/bar ]
    then
             foobar
    fi

    Corretto:

    if [ -f "${FOO}/foo/${BAR}/bar" ]
    then
             foobar
    fi

    15.5 Varie
  • Per le chiamate a sed utilizzare "|" (senza virgolette intorno) come separatore, ad esempio "sed -e 's|foo|bar|'" (senza "").
  • Non utilizzare il comando test per prove o confronti, usare "[" "]" (senza ""); ad esempio "if [ -x /bin/foo ]; ..." e non "if test -x /bin/foo; ...".
  • Ove possibile utilizzare case invece di test, essendo più facile da leggere e più veloce in esecuzione.
  • Per le funzioni utilizzare nomi che iniziano con la maiuscola per limitare i problemi con le variabili d'ambiente dell'utente.
  • 16. Procedure

    Questo capitolo documenta le procedure all'interno del progetto Debian Live per vari compiti che necessitano di cooperazione con altri team Debian.

    16.1 Rilasci importanti

    Rilasciare una nuova versione stabile di Debian implica che molti team differenti lavorino insieme; ad un certo punto si inserisce il team Live che prepara le immagini del sistema live. I requisiti per fare ciò sono:

  • Un mirror contenente le versioni rilasciate per l'archivio debian e debian-security al quale possa accedere il debian-live buildd.
  • Vanno resi noti i nomi dell'immagine (debian-live-VERSION-ARCH-FLAVOUR.iso).
  • Bisogna sincronizzare i dati dal cd Debian (gli udeb escludono gli elenchi).
  • Bisogna sincronizzare i file inclusi dal cd Debian (README.*, doc/*, ecc.).
  • Le immagini vengono create e ospitate su cdimage.debian.org.
  • 16.2 Rilasci minori
  • Bisogna nuovamente aggiornare i mirror di debian e debian-security.
  • Le immagini vengono create e ospitate su cdimage.debian.org.
  • Inviare email di annuncio.
  • 16.2.1 Ultimo rilascio minore di un rilascio di Debian.

    Quando si crea l'ultima serie di immagini per un rilascio di Debian che è stato spostato da ftp.debian.org a archive.debian.org, ricordarsi di sistemare i mirror del chroot e dei binari. In questo modo le vecchie immagini live create saranno ancora utili senza la necessità di modifiche da parte dell'utente.

    16.2.2 Modello per l'annuncio di un rilascio minore.

    Si può generare un'email per l'annuncio dei rilasci minori usando il modello sottostante e il seguente comando:

    $ sed \
         -e 's|@MAJOR@|7.0|g' \
         -e 's|@MINOR@|7.0.1|g' \
         -e 's|@CODENAME@|wheezy|g' \
         -e 's|@ANNOUNCE@|2013/msgXXXXX.html|g'

    Si prega di controllare attentamente l'email prima di inviarla e passarla ad altri per le correzioni.

    Updated Debian Live @MAJOR@: @MINOR@ released

    The Debian Live project is pleased to announce the @MINOR@ update of the
    Live images for the stable distribution Debian @MAJOR@ (codename "@CODENAME@").

    The images are available for download at:

       <http://live.debian.net/cdimage/release/current/>

    and later at:

       <http://cdimage.debian.org/cdimage/release/current-live/>

    This update includes the changes of the Debian @MINOR@ release:

       <http://lists.debian.org/debian-announce/@ANNOUNCE@>

    Additionally it includes the following Live-specific changes:

      * [INSERT LIVE-SPECIFIC CHANGE HERE]
      * [INSERT LIVE-SPECIFIC CHANGE HERE]
      * [LARGER ISSUES MAY DESERVE THEIR OWN SECTION]

    About Debian Live
    -----------------
    The Debian Live project produces the tools used to build official
    Debian Live systems and the official Debian Live images themselves.

    About Debian
    ------------
    The Debian Project is an association of Free Software developers who
    volunteer their time and effort in order to produce the completely free
    operating system Debian.

    Contact Information
    -------------------
    For further information, please visit the Debian Live web pages at
    <http://live.debian.net/>, or contact the Debian Live team at
    <debian-live@lists.debian.org>.

    17. Repository Git

    L'elenco di tutti i repository del progetto Debian Live disponibili si trova all'indirizzo ‹http://live.debian.net/gitweb/›. Gli URL git sono nella forma protocollo://live.debian.net/git/repository. Quindi per ottenere un clone in sola lettura di live-manual eseguire:

    $ git clone git://live.debian.net/git/live-manual.git

    oppure

    $ git clone https://live.debian.net/git/live-manual.git

    oppure

    $ git clone http://live.debian.net/git/live-manual.git

    Gli indirizzi per clonare con permessi di scrittura sono nella forma git@live.debian.net:/repository.

    Quindi per clonare live-manual via ssh si userà:

    $ git clone git@live.debian.net:live-manual.git

    Il ramo git del progetto Debian Live è costituito da molteplici branch differenti. I branch debian e debian-next sono particolarmente degni di nota in quanto contengono il lavoro attuale che verrà incluso in ogni nuovo rilascio.

    Dopp aver clonato uno dei repository esistenti sarete nel branch debian. Questo è adatto per prendere visione dello stato dell'ultimo rilascio del progetto ma prima di iniziare a lavorarci è cruciale passare a debian-next. Per farlo eseguire:

    $ git checkout debian-next

    Il branch debian-next, che non è sempre soggetto al fast-forward, è dove si fa il commit di tutte le modifiche prima di essere incluse nel branch debian. È come un terreno di test, per fare un analogia. Se si sta lavorando in questo branch e si necessita di eseguire il pull, bisogna usare git pull --rebase in modo che le modifiche locali siano preparate per il commit (stage) quando si fa il pull dal server, in questo modo saranno poste in cima a tutto il resto.

    17.1 Gestire repository multipli

    Se si intende clonare svariati repository Debian Live e passare direttamente al ramo debian-next per controllare il codice più recente, scrivere una patch o contribuire con una traduzione, il server git fornisce un file mrconfig per facilitare la gestione di molteplici repository. Per utilizzarlo è necessario installare il pacchetto mr e quindi eseguire:

    $  mr bootstrap http://live.debian.net/other/mr/mrconfig

    Il comando clonerà e farà il checkout al ramo debian-next dei repository di sviluppo dei pacchetti Debian prodotti dal progetto. Questi includono tra gli altri il repository live-images che contiene le configurazioni usate per le immagini precompilate che il progetto pubblica per uso generico. Per maggiori informazioni su come utilizzare questo repository si veda Clonare una configurazione pubblicata tramite Git.

    Esempi

    18. Esempi

    Questo capitolo affronta alcune compilazioni di esempio per casi specifici d'uso con Debian Live. Se si è nuovi nella costruzione di immagini Debian Live, raccomandiamo di dare innanzitutto un'occhiata ai tre tutorial in sequenza, dato che ciascuno insegna nuove tecniche che aiuteranno nell'uso e nella comprensione degli esempi rimanenti.

    18.1 Usare gli esempi

    Per usare questi esempi è necessario un sistema per costruirveli sopra che soddisfi i requisiti elencati in Requisiti e avere live-build installato come descritto in Installare live-build.

    È da notare che per brevità in questi esempi non specifichiamo un mirror locale da usare per la costruzione. Usando un mirror locale, si possono accelerare considerevolmente i download. Si possono specificare le opzioni quando si usa lb config, come descritto in Mirror delle distribuzioni usati in fase di compilazione o, più convenientemente, impostare il predefinito per il proprio sistema in /etc/live/build.conf. Si crei semplicemente questo file e si impostino in esso le corrispondenti variabili LB_MIRROR_* per il mirror desiderato. Tutti gli altri mirror utilizzati nella costruzione avranno questi valori, ad esempio:

    LB_MIRROR_BOOTSTRAP="http://mirror/debian/"
    LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security/"
    LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-updates/"

    18.2 Tutorial 1: un'immagine predefinita

    Caso d'uso: creazione di una prima semplice immagine, imparando i fondamenti di live-build.

    In questo tutorial genereremo un'immagine ISO ibrida di Debian Live contenente solo pacchetti base (senza Xorg) e alcuni pacchetti Debian Live di supporto, come primo esercizio sull'uso di live-build.

    Non può essere più semplice:

    $ mkdir tutorial1 ; cd tutorial1 ; lb config

    Esaminare i contenuti della directory config/; si noterà uno scheletro di configurazione pronto per essere personalizzato o, in questo caso, usato immediatamente per costruire un'immagine predefinita.

    Ora, come utente root, generare l'immagine salvando un log con tee.

    # lb build 2>&1 | tee build.log

    Presupponendo che tutto vada per il verso giusto, dopo un po' la directory corrente conterrà binary.hybrid.iso. Questa immagine ISO ibrida può essere avviata direttamente in una macchina virtuale come descritto in Provare un'immagine ISO con Qemu e Provare un'immagine ISO con virtualbox-ose, oppure masterizzata su un supporto ottico o ancora su una chiavetta USB come descritto rispettivamente in Masterizzare un'immagine ISO su un supporto fisico e Copiare un'immagine ISO ibrida su una penna USB.

    18.3 Tutorial 2: servizio browser web

    Caso d'uso: creazione di un'immagine per servizio browser web, imparando come applicare le personalizzazioni.

    In questo tutorial verrà creata un'immagine adatta all'uso come browser web, che serve come introduzione alla personalizzazione delle immagini Debian Live.

    $ mkdir tutorial2
    $ cd tutorial2
    $ echo "task-lxde-desktop iceweasel" >> config/package-lists/my.list.chroot

    La scelta di LXDE per questo esempio riflette il desiderio di fornire un ambiente desktop minimale, dato che il punto focale dell'immagine è il singolo uso che abbiamo in mente, il browser web. Potremmo anche spingerci oltre e fornire una configurazione predefinita per il browser web in config/includes.chroot/etc/iceweasel/profile/, o pacchetti addizionali di supporto per la fruizione di vari tipi di contenuti web, ma lasciamo questo come esercizio per il lettore.

    Generare l'immagine, ancora come utente root, conservando un log come in Tutorial 1:

    # lb build 2>&1 | tee build.log

    Di nuovo, verificare che l'immagine sia a posto e collaudarla, come in Tutorial 1.

    18.4 Tutorial 3: un'immagine personalizzata

    Caso d'uso: creazione di un progetto per costruire un'immagine personalizzata che contiene i pacchetti preferiti da portare con sé in una chiavetta USB ovunque si vada, e che evolve in revisioni successive allorché i bisogni o le preferenze cambino.

    Dal momento che la nostra immagine personalizzata cambierà con le successive revisioni e che vogliamo tener traccia di questi cambiamenti, andando per tentativi ed eventualmente tornando indietro se qualcosa non funziona, conserveremo la nostra configurazione nel popolare sistema di controllo di versione git. Useremo anche le migliori pratiche di auto-configurazione tramite gli script auto come descritto in Gestire una configurazione.

    18.4.1 Prima revisione

    $ mkdir -p tutorial3/auto
    $ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/
    $ cd tutorial3

    Modificare auto/config come segue:

    #!/bin/sh

    lb config noauto \
         --architectures i386 \
         --linux-flavours 686-pae \
         "${@}"

    Eseguire lb config per generare l'albero di configurazione utilizzando lo script auto/config appena creato:

    $ lb config

    Popolare ora l'elenco locale dei pacchetti:

    $ echo "task-lxde-desktop iceweasel xchat" >> config/package-lists/my.list.chroot

    Per prima cosa, --architectures i386 assicura che sul nostro sistema amd64 costruiamo una versione a 32-bit utilizzabile sulla maggior parte delle macchine. In secondo luogo, usiamo --linux-flavours 686-pae dato che non prevediamo di usare questa immagine su sistemi troppo vecchi. Terzo, abbiamo scelto il metapacchetto task lxde per avere un desktop minimale. Infine abbiamo aggiunto due pacchetti preferiti: iceweasel e xchat.

    Costruire quindi l'immagine:

    # lb build

    Notare che diversamente dai primi due tutorial non occorre più digitare 2>&1 | tee build.log dato che questo è ora incluso in auto/build.

    Una volta che l'immagine è stata collaudata (come in Tutorial 1) e che si è sicuri che funzioni correttamente, è il momento di inizializzare il repository git, aggiungendo solo gli script auto appena creati, e di fare poi il primo commit:

    $ git init
    $ cp /usr/share/doc/live-build/examples/gitignore .gitignore
    $ git add .
    $ git commit -a -m "Initial import."

    18.4.2 Seconda revisione

    In questa revisione ripuliremo la prima compilazione, aggiungeremo il pacchetto vlc alla configurazione, dunque avverrà una ricompilazione, verifica e commit.

    Il comando lb clean ripulirà tutti i file ottenuti con la precedente generazione eccetto la cache, che ci evita un nuovo download dei pacchetti. Ciò assicura che il successivo lb build eseguirà di nuovo tutti i passaggi per rigenerare i file dalla nuova configurazione.

    # lb clean

    Ora inserire il pacchetto vlc all'elenco locale dei pacchetti config/package-lists/my.list.chroot:

    $ echo vlc >> config/package-lists/my.list.chroot

    Rigenerare nuovamente:

    # lb build

    Verificare e, quando soddisfatti, eseguire il commit della revisione successiva:

    $ git commit -a -m "Adding vlc media player."

    Ovviamente sono possibili cambiamenti alla configurazione più complicati, magari aggiungendo file in sottodirectory di config/. Quando si esegue il commit di nuove revisioni, si faccia solo attenzione a non modificare manualmente o fare un commit dei file al livello superiore di config che contengono le variabili LB_*, giacché sono anche prodotti dell'assemblaggio, e che sono sempre ripuliti da lb clean e ricreati con lb config attraverso i loro rispettivi script auto.

    Siamo arrivati alla fine di questa serie di tutorial. Mentre sono possibili molti altri tipi di personalizzazioni, anche solo usando le poche caratteristiche esplorate in questi semplici esempi, può essere creata una varietà quasi infinita di immagini. Gli esempi rimanenti in questa sezione coprono diversi altri casi d'uso estrapolati dalle esperienze raccolte degli utenti Debian Live.

    18.5 Un client Kiosk VNC

    Caso d'uso: creazione di un'immagine con live-build per avviare direttamente un server VNC.

    Creare una directory per la compilazione e una configurazione di base al suo interno disabilitando i raccomandati per ottenere un sistema minimale. Quindi creare due elenchi di pacchetti: il primo generato con uno script fornito da live-build chiamato Packages (vedere Elenchi di pacchetti generati) e il secondo che include xorg, gdm3, metacity e xvnc4viewer.

    $ mkdir vnc-kiosk-client
    $ cd vnc-kiosk-client
    $ lb config -a i386 -k 686-pae --apt-recommends false
    $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
    $ echo "xorg gdm3 metacity xvnc4viewer" > config/package-lists/my.list.chroot

    Come spiegato in Modificare APT per risparmiare spazio potrebbe essere necessario riaggiungere alcuni pacchetti raccomandati al fine di far funzionare l'immagine correttamente.

    Un modo semplice per elencare i raccomandati è usare apt-cache, ad esempio:

    $ apt-cache depends live-config live-boot

    In questo esempio abbiamo scoperto che dobbiamo iserire nuovamente svariati pacchetti raccommandati da live-config e live-boot: user-setup perché il login automatico funzioni e sudo come programma essenziale per spegnere il sistema. Oltretutto può essere comodo aggiungere live-tools per poter copiare l'immagine in RAM e eject per espellere il supporto live alla fine. Quindi:

    $ echo "live-tools user-setup sudo eject" > config/package-lists/recommends.list.chroot

    Successivamente creare la directory /etc/skel in config/includes.chroot e inserirvi un .xsession personalizzato per l'utente predefinito che lancerà metacity e avvierà xvncviewer connesso alla porta 5901 su un server con indirizzo 192.168.1.2:

    $ mkdir -p config/includes.chroot/etc/skel
    $ cat > config/includes.chroot/etc/skel/.xsession << EOF
    #!/bin/sh

    /usr/bin/metacity &
    /usr/bin/xvncviewer 192.168.1.2:1

    exit
    EOF

    Compilare l'immagine:

    # lb build

    Buon divertimento.

    18.6 Un'immagine base per una chiavetta USB da 128MB

    Caso d'uso: creazione di un'immagine predefinita con alcuni componenti rimossi affinché possa stare su una chiavetta USB da 128MB, con un po' di spazio libero da usarsi come meglio si crede.

    Quando si cerca di ottimizzare un'immagine affinché sia contenuta in un supporto, è necessario capire il compromesso che si deve fare tra la dimensione e la funzionalità. In questo esempio, taglieremo solo quanto basta per far sì che il tutto stia in 128M, senza fare nient'altro che distrugga l'integrità dei pacchetti contenuti, come eliminare localizzazioni con il pacchetto localepurge o altre ottimizzazioni "intrusive". È da notare che per creare un sistema minimale da zero viene utilizzata l'opzione --debootstrap-options.

    $ lb config -k 486 --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

    Affinché l'immagine funzioni correttamente dobbiamo riaggiungere almeno due pacchetti raccomandati lasciati fuori dall'opzione --apt-recommends false. Vedere Modificare APT per risparmiare spazio

    $ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

    Costruire quindi l'immagine nel modo consueto:

    # lb build 2>&1 | tee build.log

    All'autore del sistema al momento di scrivere, la seguente configurazione ha prodotto un'immagine di 77MB. Comparabile favorevolmente con i 177MB prodotta dalla configurazione predefinita nel Tutorial 1.

    Ciò che fa risparmiare più spazio, comparato alla creazione di un'immagine predefinita su un sistema con architettura i386, è la selezione del solo kernel 486 invece che quello predefinito -k "486 686-pae". Lasciando fuori anche gli indici di APT con --apt-indices false si può salvare una certa quantità di spazio, il compromesso è usare apt-get update prima di usare apt nel sistema live. Saltare i pacchetti raccomandati con --apt-recommends false salva altro spazio, a scapito di alcuni pacchetti che ci si aspetta di trovare. --debootstrap-options "--variant=minbase" fa il bootstrap di un sistema minimale partendo da zero. Evitare di includere automaticamente pacchetti di firmware con --firmware-chroot false fa risparmiare altro spazio. E infine, --memtest none evita l'installazione del programma per testare la memoria.

    Nota: un sistema minimale è inoltre ottenibile utilizzando gli hook, come ad esempio stripped.chroot situato in /usr/share/doc/live-build/examples/hooks. Può ridurre una piccola quantità di spazio usato e produrre un'immagine di 62MB; tuttavia raggiunge l'obiettivo rimuovendo documentazione e altri file dai pacchetti installati sul sistema. L'operazione vìola l'integrità di questi pacchetti e ciò, come avverte il commento iniziale dello script, può avere conseguenze inattese. Ecco perché usare un debootstrap minimale è il modo raccomandato per raggiungere questo obiettivo.

    18.7 Un desktop GNOME localizzato e l'installatore

    Caso d'uso: creazione di un'immagine con il desktop GNOME, localizzato in svizzero e che includa l'installatore.

    Si vuole creare un'immagine iso ibrida per architettura i386 usando il nostro desktop preferito, in questo caso GNOME, contenente tutti gli stessi pacchetti che verrebbero installati dall'installatore Debian standard per GNOME.

    Il problema iniziale è di scoprire i nomi dei task della lingua appropriati, attualmente, live-build non aiuta in questo. Si può essere fortunati o arrivarci con vari tentativi, ma c'è uno strumento grep-dctrl il quale può essere utilizzato per scavare nelle descrizioni in tasksel-data, perciò assicursi di avere entrambi questi pacchetti:

    # apt-get install dctrl-tools tasksel-data

    Ora si possono cercare i task appropriati:

    $ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask
    Task: german

    Con questo comando, si è chiaramente scoperto che il task si chiama german. Ora per trovare i task correlati:

    $ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask
    Task: german-desktop
    Task: german-kde-desktop

    Durante il boot verrà generata la localizzazione de_CH.UTF-8 e selezionato il layout di tastiera *{ch}, mettiamo ora insieme questi pezzi. Ricordando che i metapacchetti task iniziano con task- (come descritto in Usare metapacchetti), specifichiamo questi parametri d'avvio per la lingua, quindi aggiungiamo i pacchetti con priorità standard e tutti i metapacchetti task al nostro elenco in questo modo:

    $ mkdir live-gnome-ch
    $ cd live-gnome-ch
    $ lb config \
         -a i386 \
         -k 486 \
         --bootappend-live "boot=live config locales=de_CH.UTF-8 keyboard-layouts=ch" \
         --debian-installer live
    $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
    $ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot
    $ echo debian-installer-launcher >> config/package-lists/installer.list.chroot

    Notare che è stato incluso il pacchetto debian-installer-launcher in modo da poter lanciare l'installer dal desktop della live, e che è stato anche specificato il kernel 486, dato che attualmente è necessario che il kernel dell'installer e quello del sistema live coincidano affinché il launcher funzioni correttamente.

    Appendice

    18.8 Guidelines for authors

    This section deals with some general considerations to be taken into account when writing technical documentation for live-manual. They are divided into linguistic features and recommended procedures.

    Note: Authors should first read Contributing to this document

    18.8.1 Linguistic features
  • Use plain English
  • Keep in mind that a high percentage of your readers are not native speakers. So as a general rule try to use short, meaningful sentences, followed by a full stop.

    This does not mean that you have to use a simplistic, naive style. It is a suggestion to try to avoid, as much as possible, complex subordinate sentences that make the text difficult to understand for non-native speakers.

  • Variety of English
  • The most widely spread varieties of English are British and American so it is very likely that most authors will use either one or the other. In a collaborative environment, the ideal variety would be "International English" but it is very difficult, not to say impossible, to decide on which variety among all the existing ones, is the best to use.

    We expect that different varieties may mix without creating misunderstandings but in general terms you should try to be coherent and before deciding on using British, American or any other English flavour at your discretion, please take a look at how other people write and try to imitate them.

  • Be balanced
  • Do not be biased. Avoid including references to ideologies completely unrelated to live-manual. Technical writing should be as neutral as possible. It is in the very nature of scientific writing.

  • Be politically correct
  • Try to avoid sexist language as much as possible. If you need to make references to the third person singular preferably use "they" rather than "he" or "she" or awkward inventions such as "s/he", "s(he)" and the like.

  • Be concise
  • Go straight to the point and do not wander around aimlessly. Give as much information as necessary but do not give more information than necessary, this is to say, do not explain unnecessary details. Your readers are intelligent. Presume some previous knowledge on their part.

  • Minimize translation work
  • Keep in mind that whatever you write will have to be translated into several other languages. This implies that a number of people will have to do an extra work if you add useless or redundant information.

  • Be coherent
  • As suggested before, it is almost impossible to standardize a collaborative document into a perfectly unified whole. However, every effort on your side to write in a coherent way with the rest of the authors will be appreciated.

  • Be cohesive
  • Use as many text-forming devices as necessary to make your text cohesive and unambiguous. (Text-forming devices are linguistic markers such as connectors).

  • Be descriptive
  • It is preferable to describe the point in one or several paragraphs than merely using a number of sentences in a typical "changelog" style. Describe it! Your readers will appreciate it.

  • Dictionary
  • Look up the meaning of words in a dictionary or encyclopedia if you do not know how to express certain concepts in English. But keep in mind that a dictionary can either be your best friend or can turn into your worst enemy if you do not know how to use it correctly.

    English has the largest vocabulary that exists (with over one million words). Many of these words are borrowings from other languages. When looking up the meaning of words in a bilingual dictionary the tendency of a non-native speaker is to choose the one that sounds more similar in their mother tongue. This often turns into an excessively formal discourse which does not sound quite natural in English.

    As a general rule, if a concept can be expressed using different synonyms, it is a good advice to choose the first word proposed by the dictionary. If in doubt, choosing words of Germanic origin (Usually monosyllabic words) is often the right thing to do. Be warned that these two techniques might produce a rather informal discourse but at least your choice of words will be of wide use and generally accepted.

    Using a dictionary of collocations is recommended. They are extremely helpful when it comes to know which words usually occur together.

    Again it is a good practice to learn from the work of others. Using a search engine to check how other authors use certain expressions may help a lot.

  • False friends, idioms and other idiomatic expressions
  • Watch out for false friends. No matter how proficient you are in a foreign language you cannot help falling from time to time in the trap of the so called "false friends", words that look similar in two languages but whose meanings or uses might be completely different.

    Try to avoid idioms as much as possible. "Idioms" are expressions that may convey a completely different meaning from what their individual words seem to mean. Sometimes, idioms are difficult to understand even for native speakers!

  • Avoid slang, abbreviations, contractions...
  • Even though you are encouraged to use plain, everyday English, technical writing belongs to the formal register of the language.

    Try to avoid slang, unusual abbreviations that are difficult to understand and above all contractions that try to imitate the spoken language. Not to mention typical irc and family friendly expressions.

    18.8.2 Procedures
  • Test before write
  • It is important that authors test their examples before adding them to live-manual to ensure that everything works as described. Testing on a clean chroot or VM can be a good starting point. Besides, it would be ideal if the tests were then carried out on different machines with different hardware to spot possible problems that may arise.

  • Examples
  • When providing an example try to be as specific as you can. An example is, after all, just an example.

    It is often better to use a line that only applies to a specific case than using abstractions that may confuse your readers. In this case you can provide a brief explanation of the effects of the proposed example.

    There may be some exceptions when the example suggests using some potentially dangerous commands that, if misused, may cause data loss or other similar undesirable effects. In this case you should provide a thorough explanation of the possible side effects.

  • External links
  • Links to external sites should only be used when the information on those sites is crucial when it comes to understanding a special point. Even so, try to use links to external sites as sparsely as possible. Internet links are likely to change from time to time resulting in broken links and leaving your arguments in an incomplete state.

    Besides, people who read the manual offline will not have the chance to follow those links.

  • Avoid branding and things that violate the license under which the manual is published
  • Try to avoid branding as much as possible. Keep in mind that other downstream projects might make use of the documentation you write. So you are complicating things for them if you add certain specific material.

    live-manual is licensed under the GNU GPL. This has a number of implications that apply to the distribution of the material (of any kind, including copyrighted graphics or logos) that is published with it.

  • Write a first draft, revise, edit, improve, redo if necessary
  • - Brainstorm!. You need to organize your ideas first in a logical sequence of events.

    - Once you have somehow organized those ideas in your mind write a first draft.

    - Revise grammar, syntax and spelling. Keep in mind that the proper names of the releases, such as wheezy or sid, should not be capitalized when referred to as code names.

    - Improve your statements and redo any part if necessary.

  • Chapters
  • Use the conventional numbering system for chapters and subtitles. e.g. 1, 1.1, 1.1.1, 1.1.2 ... 1.2, 1.2.1, 1.2.2 ... 2, 2.1 ... and so on. See markup below.

    If you have to enumerate a series of steps or stages in your description, you can also use ordinal numbers: First, second, third ... or First, Then, After that, Finally ... Alternatively you can use bulleted items.

  • Markup
  • And last but not least, live-manual uses SiSU to process the text files and produce a multiple format output. It is recommended to take a look at SiSU's manual to get familiar with its markup, or else type:

    $ sisu --help markup

    Here are some markup examples that may prove useful:

    - For emphasis/bold text:

    *{foo}* or !{foo}!

    produces: foo or foo. Use it to emphasize certain key words.

    - For italics:

    /{foo}/

    produces: foo. Use them e.g. for the names of Debian packages.

    - For monospace:

    #{foo}#

    produces: foo. Use it e.g. for the names of commands. And also to highlight some key words or things like paths.

    - For code blocks:

    code{

      $ foo
      # bar

    }code

    produces:

    $ foo
    # bar

    Use code{ to open and }code to close the tags. It is important to remember to leave a space at the beginning of each line of code.

    18.9 Guidelines for translators

    This section deals with some general considerations to be taken into account when translating the contents of live-manual.

    As a general recommendation, translators should have read and understood the translation rules that apply to their specific languages. Usually, translation groups and mailing lists provide information on how to produce translated work that complies with Debian quality standards.

    Note: Translators should also read Contributing to this document. In particular the section Translation

    18.9.1 Translation hints
  • Comments
  • The role of the translator is to convey as faithfully as possible the meaning of words, sentences, paragraphs and texts as written by the original authors into their target language.

    So they should refrain from adding personal comments or extra bits of information of their own. If they want to add a comment for other translators working on the same documents, they can leave it in the space reserved for that. That is, the header of the strings in the po files preceded by a number sign #. Most graphical translation programs can automatically handle those types of comments.

  • TN, Translator's Note
  • It is perfectly acceptable however, to include a word or an expression in brackets in the translated text if, and only if, that makes the meaning of a difficult word or expression clearer to the reader. Inside the brackets the translator should make evident that the addition was theirs using the abbreviation "TN" or "Translator's Note".

  • Impersonal sentences
  • Documents written in English make an extensive use of the impersonal form "you". In some other languages that do not share this characteristic, this might give the false impression that the original texts are directly addressing the reader when they are actually not doing so. Translators must be aware of that fact and reflect it in their language as accurately as possible.

  • False friends
  • The trap of "false friends" explained before especially applies to translators. Double check the meaning of suspicious false friends if in doubt.

  • Markup
  • Translators working initially with pot files and later on with po files will find many markup features in the strings. They can translate the text anyway, as long as it is translatable, but it is extremely important that they use exactly the same markup as the original English version.

  • Code blocks
  • Even though the code blocks are usually untranslatable, including them in the translation is the only way to score a 100% complete translation. And even though it means more work at first because it requires the intervention of the translators if the code changes, it is the best way, in the long run, to identify what has already been translated and what has not when checking the integrity of the .po files.

  • Newlines
  • The translated texts need to have the exact same newlines as the original texts. Be careful to press the "Enter" key or type \n if they appear in the original files. These newlines often appear, for instance, in the code blocks.

    Make no mistake, this does not mean that the translated text needs to have the same length as the English version. That is nearly impossible.

  • Untranslatable strings
  • Translators should never translate:

    - The code names of releases (which should be written in lowercase)

    - The names of programs

    - The commands given as examples

    - Metadata (often between colons :metadata:)

    - Links

    - Paths