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 patch
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 ufficiali inalterati
2.2.2 Nessun pacchetto di configurazione per il sistema live
2.3 Contatti

Utente

3. Installazione

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

4. Nozioni di base

4.1 Che cos'è un sistema live?
4.2 Primi passi: creare un'immagine ISO
4.2.1 Provare un'immagine ISO con Qemu
4.2.2 Provare un'immagine ISO con virtualbox-ose
4.2.3 Masterizzare un'immagine ISO su un supporto fisico
4.3 Creare un'immagine USB/HDD
4.3.1 Copiare un'immagine USB/HDD su una penna USB
4.3.2 Provare un'immagine USB/HDD con Qemu
4.3.3 Usare lo spazio rimanente su una penna USB
4.4 Creare un'immagine netboot
4.4.1 Server DHCP
4.4.2 Server TFTP
4.4.3 Server NFS
4.4.4 Come provare una netboot
4.4.5 Qemu
4.4.6 VMWare Player

5. Panoramica degli strumenti

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

6. Gestire una configurazione

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

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 Scegliere pochi pacchetti
8.2.2 Elenchi di pacchetti
8.2.3 Elenchi predefiniti di pacchetti
8.2.4 Elenchi locali dei pacchetti
8.2.5 Elenchi locali di pacchetti binari
8.2.6 Estendere un'elenco di pacchetti usando gli include
8.2.7 Usare condizioni all'interno degli elenchi di pacchetti
8.2.8 Task
8.2.9 Task per desktop e lingua
8.3 Installare pacchetti modificati o di terze parti
8.3.1 Utilizzare chroot_local-packages per installare pacchetti personalizzati
8.3.2 Utilizzare un repository APT per installare pacchetti personalizzati
8.3.3 Pacchetti personalizzati e APT
8.4 Configurare APT in fase di costruzione
8.4.1 Scegliere apt o aptitude
8.4.2 Utilizzare un proxy con APT
8.4.3 Modificare APT per risparmiare spazio
8.4.4 Passare opzioni ad apt o aptitude
8.4.5 APT pinning

9. Personalizzazione dei contenuti

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

10. Personalizzare i comportamenti durante l'esecuzione

10.1 Personalizzare l'utente live
10.2 Personalizzare la localizzazione e la lingua
10.3 Persistenza
10.3.1 Persistenza completa
10.3.2 Mount automatico della home
10.3.3 Istantanee
10.3.4 Sottotesto persistente
10.3.5 Rimasterizzazione parziale

11. Personalizzare l'immagine binaria

11.1 Bootloader
11.2 Metadati ISO

12. Personalizzare il Debian Installer

12.1 Tipologie del Debian Installer
12.2 Personalizzare il Debian Installer con la preconfigurazione
12.3 Personalizzare il contenuto del Debian Installer

Progetto

13. Segnalare bug

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

14. Lo stile nello scrivere codice

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

15. Procedure

15.1 Aggiornamenti degli udeb
15.2 Rilasci importanti
15.3 Rilasci minori
15.3.1 Modello per l'annuncio di un rilascio minore.

Esempi

16. Esempi

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

Manuale di Debian Live

Utente

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à preconfigurando il valore passwd/user-default-groups di debconf. Ad esempio, per aggiungere l'utente al gruppo fuse, inserire quanto segue ad un file nella directory config/chroot_local-preseed:

   debconf passwd/user-default-groups string audio cdrom dialout floppy video plugdev netdev powerdev fuse

10.2 Personalizzare la localizzazione e la lingua

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

  • generazione della localizzazione
  • impostazione del layout di tastiera per la console
  • impostazione del layout di tastiera per X

    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 "locales=de_CH.UTF-8"

    Questo parametro può inoltre essere usato dalla riga di comando del kernel, specificando una localizzazione nella forma lingua_nazione.codifica.

    Sia la configurazione della tastiera in console sia di X dipendono dal parametro keyboard-layouts dell'opzione --bootappend-live. Si possono trovare le opzioni valide per i layout di X in /usr/share/X11/xkb/rules/base.xml (piuttosto che limitate alle due lettere del codice della nazione); per trovare il valore (i due caratteri) corrispondenti alla lingua, si cerchi con il nome inglese della nazione in cui si parla tale lingua:

       $ grep -i sweden -C3 /usr/share/X11/xkb/rules/base.xml | grep name
       <name>se</name>

    Per ottenere i file di localizzazione per il layout di tastiera tedesco e svizzero-tedesco in X:

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

    Si può ottenere un elenco di valori validi della tastiera per la console con il seguente comando:

       $ for i in $(find /usr/share/keymaps/ -iname "*kmap.gz"); \
           do basename $i | head -c -9; echo; done | sort | less

    In alternativa è possibile utilizzare il pacchetto console-setup, uno strumento per configurare il layout della console tramite le definizioni di X (XKB); si può dunque impostare il layout in modo più preciso con le variabili keyboard-layouts, keyboard-variant, keyboard-options e keyboard-model; live-boot userà questi parametri anche per X. Ad esempio, per impostare un layout French-Dvorak (chiamato Bepo) su un sistema francese con una tastiera TypeMatrix, sia in console sia in X11:

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

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

    I dati immagazzinati su questo ramdisk andrebbero salvati un supporto scrivibile persistente come un hard disk, una chiave USB, 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: persistent.

    10.3.1 Persistenza completa

    Con "persistenza completa" si intende l'uso di una partizione scrivibile invece di un filesystem temporaneo (tmpfs) per salvare le modifiche al supporto in sola lettura (con il sistema COW, copy-on-write). Per utilizzare questa caratteristica, una partizione con un filesystem scrivibile e supportato ed etichettata come "live-rw" deve essere collegata al sistema in fase di avvio e il sistema va fatto partire con il parametro "persistent". Questa partizione potrebbe essere di tipo ext2 su un hard disk o una penna usb creata ad esempio con:

       # mkfs.ext2 -L live-rw /dev/sdb1

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

       # tune2fs -L live-rw /dev/sdb1 # for ext2,3,4 filesystems
       # dosfslabel /dev/sdb1 live-rw # for a fat filesystem

    Ma siccome gli utenti dei sistemi live non hanno sempre la possibilità di utilizzare una partizione su disco rigido, e considerando che la maggior parte delle chiavi USB hanno scarse velocità di scrittura, la persistenza "completa" può anche essere usata con dei file immagine, è possibile creare un file che rappresenta una partizione e inserire questo file immagine anche su una partizione NTFS di un sistema operativo estraneo, qualcosa come:

       $ dd if=/dev/null of=live-rw bs=1G seek=1 # for a 1GB sized image file
       $ /sbin/mkfs.ext2 -F live-rw

    Quindi copiare il file live-rw su una partizione scrivibile e riavviare con il parametro d'avvio "persistent".

    10.3.2 Mount automatico della home

    Se durante l'avvio viene trovata una partizione (filesystem) su file immagine o una partizione etichettata come home-rw, questa verrà montata direttamente come /home, permettendo quindi la persistenza dei file che appartengono ad esempio all'utente predefinito. Può essere unita alla persistenza completa.

    10.3.3 Istantanee

    Le istantanee sono raccolte di file e directory che non vengono montate durante l'esecuzione ma copiate all'avvio da un dispositivo persistente al sistema (tmpfs) e risincronizzate al riavvio e spegnimento. Il contenuto di un'istantanea può risiedere su una partizione o file immagine (come i tipi menzionati poc'anzi) etichettati come live-sn, ma sotto forma di un semplice archivio cpio nominato live-sn.cpio.gz. Come sopra, all'avvio, i device a blocchi collegati al sistema vengono analizzati alla ricerca di una partizione o file così nominati. Un'interruzione di corrente durante l'esecuzione potrebbe portare ad una perdita di dati, per cui si può usare uno strumento che richiama live-snapshot --refresh per sincronizzare i cambiamenti importanti. Giacché non scrive continuamente sul dispositivo, questo tipo di persistenza è il sistema più comodo e veloce per dispositivi basati su memoria flash.

    Esiste anche un'istantanea della /home con etichetta home-sn.*; funziona come la principale ma viene applicata solo ad /home.

    Attualmente le istantanee non possono gestire la cancellazione dei file, al contrario della persistenza completa e il mount automatico della home.

    10.3.4 Sottotesto persistente

    Se un utente avesse bisogno di archiviazioni multiple dello stesso tipo per differenti posti o per test, come live-rw-casa e live-rw-lavoro, il parametro d'avvio persistent-subtext usato in congiunzione con persistent permetterà supporti persistenti multipli ma univoci. Un esempio potrebbe essere un utente che vuole usare una partizione etichettata come live-sn-sottotesto, userebbe: persistent persistent-subtext=sottotesto.

    10.3.5 Rimasterizzazione parziale

    Le modifiche in fase di esecuzione del tmpfs possono essere incluse in uno squashfs usando live-snapshot e aggiunte al cd per rimasterizzare la iso nel caso di un cd riscrivibile o aggiunto ad una sessione di un cd/dvd(rw) multisessione; live-boot monta tutti i filesystem /live in ordine o con il modulo del parametro d'avvio.