|
|
![]() |
![]() |
![]() |
|
|
|
![]() |
![]() |
![]() |
Questo capitolo affronta alcune costruzioni di esempio per specifici casi 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.
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.
Note that, for the sake of brevity, in these examples we do not specify a local mirror to use for the build. You can speed up downloads considerably if you use a local mirror. You may specify the options when you use lb config, as described in Distribution mirrors used at build time, or for more convenience, set the default for your build system in /etc/live/build.conf. Simply create this file and in it, set the corresponding LB_PARENT_MIRROR_* variables to your preferred mirror. All other mirrors used in the build will be defaulted from these values. For example:
LB_PARENT_MIRROR_BOOTSTRAP="http://mirror/debian"
LB_PARENT_MIRROR_CHROOT_SECURITY="http://mirror/debian-security"
LB_PARENT_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-updates"
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 super-utente, si generi l'immagine, salvando un log con tee.
# lb build 2>&1 | tee binary.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.
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
$ lb config -p lxde
$ echo iceweasel >> config/package-lists/my.list.chroot
Our choice of LXDE for this example reflects our desire to provide a minimal desktop environment, since the focus of the image is the single use we have in mind, the web browser. We could go even further and provide a default configuration for the web browser in config/includes.chroot/etc/iceweasel/profile/, or additional support packages for viewing various kinds of web content, but we leave this as an exercise for the reader.
Si generi l'immagine, ancora come super-utente, conservando un log come in Tutorial 1:
# lb build 2>&1 | tee binary.log
Di nuovo, si verifichi che l'immagine sia a posto e la si collaudi, come in Tutorial 1.
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.
$ mkdir -p tutorial3/auto
$ cp /usr/share/live/build/examples/auto/* tutorial3/auto/
$ cd tutorial3
Modificare auto/config come segue:
#!/bin/sh
lb config noauto \
--architecture i386 \
--linux-flavours 686-pae \
--package-lists lxde \
"${@}"
Now populate your local package list:
$ echo "iceweasel xchat" >> config/package-lists/my.list.chroot
First, --architecture i386 ensures that on our amd64 build system, we build a 32-bit version suitable for use on most machines. Second, we use --linux-flavours 686-pae because we don't anticipate using this image on much older systems. Third, we've chosen the lxde package list to give us a minimal desktop. And finally, we have added two initial favourite packages: iceweasel and xchat.
Costruire quindi l'immagine:
# lb build
Si noti che diversamente dai primi due tutorial, non occorre più digitare 2>&1 | tee binary.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
$ git add auto
$ git commit -a -m "Initial import."
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
Now append the vlc package to our local package list in 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.
Caso d'uso: creazione di un'immagine con live-build per avviare direttamente un server VNC.
Make a build directory and create a skeletal configuration in it built around the standard-x11 list, including gdm3, metacity and xvnc4viewer, disabling recommends to make a minimal system:
$ mkdir vnc_kiosk_client
$ cd vnc_kiosk_client
$ lb config -a i386 -k 686-pae -p standard-x11 \
--apt-recommends false
$ echo "gdm3 metacity xvnc4viewer" >> config/package-lists/my.list.chroot
Creare la directory /etc/skel e inserirvi un .xsession personalizzato per l'utente predefinito che lancerà metacity e avvierà xvncviewer, connesso alla porta 5901 su un server all'indirizzo 192.168.1.2:
$ mkdir -p config/includes.chroot/etc/skel
$ cat > config/includes.chroot/etc/skel/.xsession <
/usr/bin/metacity &
/usr/bin/xvncviewer 192.168.1.2:1
exit
END
Costruire l'immagine:
# lb build
Buon divertimento.
Caso d'uso: creazione di un'immagine standard con alcuni componenti rimossi affinché possa stare su una chiavetta USB da 128M, con lo spazio che rimane 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 non va usato --bootstrap-flavour minimal a meno che non si sappia cosa si sta facendo, come omettere la priorità dei pacchetti important che molto probabilmente produrrà un sistema live danneggiato.
$ lb config -k 486 -p minimal --apt-indices false \
--memtest none --apt-recommends false --includes none
Costruire quindi l'immagine nel modo consueto:
# lb build 2>&1 | tee binary.log
All'autore del sistema al momento di scrivere, la seguente configurazione ha prodotto una immagine di 78Mbyte. Comparabile favorevolmente con i 166Mbyte prodotta dalla configurazione predefinita nel Tutorial 1.
The biggest space-saver here, compared to building a standard image on an i386 architecture system, is to select only the 486 kernel flavour instead of the default -k "486 686-pae". Leaving off APT's indices with --apt-indices false also saves a fair amount of space, the tradeoff being that you need to apt-get update before using apt in the live system. Choosing the minimal package list leaves out the large locales package and associated utilities. Dropping recommended packages with --apt-recommends false saves some additional space, at the expense of omitting some packages you might otherwise expect to be there, such as firmware-linux-free which may be needed to support certain hardware. The remaining options shave off additional small amounts of space. It's up to you to decide if the functionality that is sacrificed with each optimization is worth the loss in functionality.
Caso d'uso: creazione di un'immagine con il desktop KDE, localizzato per il portoghese brasiliano e che includa l'installatore.
Si vuole creare un'immagine iso ibrida per architettura i386 usando il nostro desktop preferito, in questo caso KDE, contenente tutti gli stessi pacchetti che verrebbero installati dall'installatore Debian standard per KDE.
Our initial problem is the discovery of the names of the appropriate language tasks. Currently, live-build cannot help with this. While we might get lucky and find this by trial-and-error, there is a tool, grep-dctrl, which can be used to dig it out of the task descriptions in tasksel-data, so to prepare, make sure you have both of those things:
# apt-get install dctrl-tools tasksel-data
Ora si possono cercare i task appropriati:
$ grep-dctrl -FTest-lang pt_BR /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: brazilian-portuguese
Con questo comando, si è scoperto che il task si chiama, abbastanza chiaramente, brazilian-portuguese. Ora per trovare i task correlati:
$ grep-dctrl -FEnhances brazilian-portuguese /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: brazilian-portuguese-desktop
Task: brazilian-portuguese-kde-desktop
At boot time we will generate the pt_BR.UTF-8 locale and select the pt-latin1 keyboard layout. We will also need to preseed our desktop choice, "kde" so that tasksel will install the correct desktop task, as it differs from the default (see Desktop and languages tasks). Now let's put the pieces together:
$ mkdir live-pt_BR-kde
$ cd live-pt_BR-kde
$ lb config \
-a i386 \
-k 486 \
--bootappend-live "locales=pt_BR.UTF-8 keyboard-layouts=pt-latin1" \
--debian-installer live
$ echo kde-desktop brazilian-portuguese brazilian-portuguese-desktop \
brazilian-portuguese-kde-desktop >> config/task-lists/my.list.chroot
$ echo debian-installer-launcher >> config/package-lists/my.list.chroot
$ echo tasksel tasksel/desktop multiselect kde >> config/preseed/my.preseed.chroot
Si noti 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.