Live manual Debian Live

# Debian Live Manual

# Exemples

803

# 16. Exemples

804

En aquest capítol s'inclouen exemples de construccions per a casos d'ús específics amb sistemes en viu. Si s'és nou en la construcció d'imatges en viu pròpies, us suggerim mirar els tres tutorials en seqüència, ja que cada un ensenya noves tècniques que ajuden a utilitzar i entendre els exemples restants.

805

16.1 Ús dels exemples

806

per a utilitzar aquests exemples es necessita un sistema de construcció que compleixi les exigències enumerades a Requisits y que tingui live-build instal·lat com es descriu a Instal·lació de live-build.

807

Cal notar que, per a abreujar, en aquests exemples no s'especifica un mirall local per a utilitzar en la construcció. Es poden accelerar les descàrregues considerablement si s'utilitza un mirall local. Es pot especificar les opcions quan s'utilitza `lb config`, com es descriu a Miralls de distribució utilitzats en temps de construcció, o per a major comoditat, establir el valor predeterminat per al sistema de construcció en el fitxer `/etc/live/build.conf`. Només cal crear aquest fitxer i establir a les variables al mirall preferit. Tots els altres miralls que s'utilitzin en la construcció adoptaran valors per defecte segons aquests valors. Per exemple:

808

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

809

16.2 Tutorial 1: Una imatge per defecte

810

Cas d'ús: Crear una primera imatge senzilla, aprenent els conceptes bàsics de live-build.

811

En aquest tutorial, anem a construir una imatge ISO híbrida per defecte que contingui només els paquets de base (no té Xorg) i altres paquets de suport de sistema en viu, com un primer exercici en l'ús de live-build.

812

No pot ser més senzill que això:

813

$ mkdir tutorial1 ; cd tutorial1 ; lb config

814

Examinar el contingut del directori `config/` si es vol. Es veurà emmagatzemada aquí una configuració en esquelet, a punt per a ser personalitzada o, en aquest cas, per a ser utilitzada immediatament per a construir una imatge per defecte.

815

Ara, com a superusuari, construir la imatge, guardant un log del que es construeix amb `tee`.

816

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

817

Assuming all goes well, after a while, the current directory will contain `live-image-amd64.hybrid.iso`. This ISO hybrid image can be booted directly in a virtual machine as described in Testing an ISO image with Qemu and Testing an ISO image with VirtualBox, or else imaged onto optical media or a USB flash device as described in Burning an ISO image to a physical medium and Copying an ISO hybrid image to a USB stick, respectively.

818

16.3 Tutorial 2: Una utilitat de navegador web

819

Cas d'ús: Crear una imatge d'una utilitat de navegador web, aprenent a aplicar personalitzacions.

820

En aquest tutorial, anem a crear una imatge adequada per al seu ús com a una utilitat de navegador web, que serveix com introducció a la personalització de les imatges de sistemes en viu.

821

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

822

La nostra elecció de LXDE per a aquest exemple reflecteix el nostre desig d'oferir un entorn d'escriptori mínim, ja que l'objectiu de la imatge és l'únic ús que tenim al cap, el navegador web. Podríem anar encara més lluny i oferir una configuració per defecte per al navegador web a `config/includes.chroot/etc/iceweasel/profile/`, o paquets addicionals de suport per a la visualització de diversos tipus de contingut web, però deixem això com a un exercici per al lector.

823

Construir la imatge, de nou com a superusuari, guardant un log com al Tutorial 1:

824

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

825

Un cop més, verificar que la imatge està bé i provar-la, com al Tutorial 1.

826

16.4 Tutorial 3: Una imatge personalitzada

827

Cas d'ús: Crear un projecte per a construir una imatge personalitzada, que contingui el programari favorit per a portar en una memòria USB allà on es vagi i que evolucionarà en revisions successives tal i com les necessitats i les preferències canvien.

828

Com la nostra imatge personalitzada canviarà durant un nombre de revisions i volem fer un seguiment d'aquests canvis, provar coses experimentals i possiblement revertir-les si les coses no surten bé, anem a mantenir la nostra configuració en el popular sistema de control de versions `git`. També utilitzarem les millors pràctiques de configuració automàtica mitjançant scripts `auto` com s'explica a Gestió d'una configuració.

829

16.4.1 Primera revisió

830

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

831

Editar `auto/config` de la manera següent:

832

#!/bin/sh
lb config noauto \
--distribution stable \
"${@}"

833

Executar `lb config` per a crear l'arbre de configuració, utilitzant el script `auto/config` que s'acaba de crear:

834

$ lb config

835

Ara, omplir la llista local de paquets:

836

$ echo "task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

837

First, `--distribution stable` ensures that ⌠stable} is used instead of the default {testing⌡. Second, we have added spice-vdagent for easier testing the image in qemu. And finally, we have added an initial favourite package: hexchat.

838

Ara, construir la imatge:

839

# lb build

840

Tenir en compte que a diferència dels dos primers tutorials, ja no s'ha d'escriure `2>&1 | tee build.log` ja que ara s'inclou al script `auto/build`.

841

Quan s'ha provat la imatge (com al Tutorial 1) i s'està satisfet del seu funcionament, és el moment d'iniciar el repositòri `git`, afegint només els scripts auto que s'han creat, i llavors fer el primer lliurament:

842

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

843

16.4.2 Segona revisió

844

In this revision, we're going to clean up from the first build, replace the smplayer package with vlc package, rebuild, test and commit.

845

L'ordre `lb clean` netejarà tots els fitxers generats en la construcció anterior a excepció del cache, el que estalvia haver de tornar a descarregar els paquets. Això assegura que el `lb build` següent tornarà a executar totes les etapes per a regenerar els fitxers de la nostra nova configuració.

846

# lb clean

847

Now install the vlc package before the lxde package chooses between smplayer, vlc and mplayer-gui in our local package list in `config/package-lists/my.list.chroot`:

848

$ echo "vlc task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

849

Construir de nou:

850

# lb build

851

Provar, i quan s'estigui satisfet, fer el lliurament de la propera revisió:

852

$ git commit -a -m "Replacing smplayer with vlc."

853

Per descomptat, es possible fer canvis més complicats en la configuració, potser afegint fitxers en els subdirectoris de `config/`. Quan es fa un lliurament de les noves revisions, s'ha de tenir cura de no editar a mà o incloure en el lliurament els fitxers de nivell superior de `config` que contenen variables `LB_*`, ja que són productes de construcció també, i sempre són netejats per `lb clean` i tornats a crear per `lb config` a través dels seus respectius scripts `auto`.

854

Hem arribat al final de la nostra sèrie de tutorials. Molts més tipus de personalització són possibles, amb les poques característiques explorades en aquests senzills exemples, es poden crear una varietat gairebé infinita d'imatges diferents. Els exemples que queden d'aquesta secció tracten diferents casos d'ús extrets de les experiències recollides dels usuaris de sistemes en viu.

855

16.5 Un client per a un quiosc VNC

856

Cas d'ús: Crear una imatge amb live-build per a connectar-se directament a un servidor VNC al arrencar.

857

Fer un directori de treball i crear una configuració d'esquelet en el seu interior, desactivant els «recommends» per a fer un sistema mínim. I a continuació, crear dues llistes inicials de paquets: La primera generada per un script proporcionat per live-build anomenat `Packages` (veure Generar llistes de paquets), i la segona incloent-hi xorg, gdm3, metacity i xvnc4viewer.

858

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

859

Com s'explica a Afinar APT per a estalviar espai pot ser que s'hagi de tornar a afegir alguns paquets recomanats per a fer que la imatge funcioni correctament.

860

Una manera fàcil d'enumerar els recommends és utilitzar apt-cache. Per exemple:

861

$ apt-cache depends live-config live-boot

862

En aquest exemple, ens vam assabentar que havíem de tornar a incloure diversos paquets recomanats per live-config i live-boot: `user-setup` perquè funcioni l'autologin i `sudo` com a programa essencial per a apagar el sistema. A més, podria ser útil afegir `live-tools` per a poder copiar la imatge en la memòria RAM i `eject` per a expulsar, finalment, el medi en viu. Per tant:

863

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

864

Després, crear el directori `/etc/skel` a `config/includes.chroot` i posar un fitxer `.xsession` personalitzat per a l'usuari per defecte que posarà en marxa metacity i iniciarà xvncviewer, connectant al port `5901` d'un servidor ubicat a `192.168.1.2`:

865

$ 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

866

Construir la imatge:

867

# lb build

868

Gaudir-ne.

869

16.6 A minimal image for a 512MB USB key

870

Use case: Create a default image with some components removed in order to fit on a 512MB USB key with a little space left over to use as you see fit.

871

When optimizing an image to fit a certain media size, you need to understand the tradeoffs you are making between size and functionality. In this example, we trim only so much as to make room for additional material within a 512MB media size, but without doing anything to destroy the integrity of the packages contained within, such as the purging of locale data via the localepurge package, or other such "intrusive" optimizations. Of particular note, we use `--debootstrap-options` to create a minimal system from scratch and `--binary image hdd` to create an image that can be copied to a USB key.

872

$ lb config --binary-image hdd --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

873

Per a fer que la imatge funcioni correctament, hem de tornar a afegir, com a mínim, dos paquets recomanats, que es queden fora per l'opció `--apt-recommends false`. Veure Afinar APT per a estalviar espai

874

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

875

Additionally, you'll want to have network access, so another two recommended packages need to be re-added:

876

$ echo "ifupdown isc-dhcp-client" >> config/package-lists/recommends.list.chroot

877

Ara, crear la imatge de la forma habitual:

878

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

879

On the author's system at the time of writing this, the above configuration produced a 298MiB image. This compares favourably with the 380MiB image produced by the default configuration in Tutorial 1, when `--binary-image hdd` is added.

880

Deixar els índexs d'APT amb `--apt-indices false` permet estalviar una bona quantitat d'espai, el desavantatge és que es necessita fer `apt-get update` abans d'utilitzar apt en el sistema en viu. Deixar els paquets recomanats amb `--apt-recommends false` estalvia una mica d'espai addicional, a costa d'ometre alguns paquets que d'una altra manera es podria esperar que hi fossin. `--debootstrap-options "--variant=minbase"` preinstal·la un sistema mínim des del principi. Al no incloure automàticament paquets de firmware amb `--firmware-chroot false` també es guanya una mica d'espai. I finalment, `--memtest none` impedeix la instal·lació d'un comprovador de memòria.

881

Note: A minimal system can also be achieved using hooks, like for example the `stripped.hook.chroot` hook found in `/usr/share/doc/live-build/examples/hooks`. It may shave off additional small amounts of space and produce an image of 277MiB. However, it does so by removal of documentation and other files from packages installed on the system. This violates the integrity of those packages and that, as the comment header warns, may have unforeseen consequences. That is why using a minimal debootstrap is the recommended way of achieving this goal.

882

16.7 Un escriptori GNOME localitzat i amb instal·lador

883

Cas d'ús: Crear una imatge amb l'escriptori GNOME, localitzat per Suïssa i que inclogui un instal·lador.

884

We want to make an iso-hybrid image using our preferred desktop, in this case GNOME, containing all of the same packages that would be installed by the standard Debian installer for GNOME.

885

El nostre primer problema és descobrir els noms de les tasques del llenguatge apropiades. En l'actualitat, live-build no ens pot ajudar amb això. Tot i que es podria tenir sort i trobar-ho per assaig i error, hi ha una eina, `grep-dctrl`, per extreure les descripcions de les tasques de tasksel-data. Per a preparar-ho tot, assegurar-se de tenir totes dues coses:

886

# apt-get install dctrl-tools tasksel-data

887

Ara podem buscar les tasques apropiades, primer amb:

888

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

889

Mitjançant aquesta ordre, es descobreix que la tasca s'anomena, amb suficient claredat, german. Ara, per a trobar les tasques relacionades:

890

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

891

En el moment d'arrencar es generarà la variant regional de_CH.UTF-8 i es seleccionarà la disposició del teclat ch. Ara posarem les peces juntes. Recordant de Ús dels metapaquets que els metapaquets tenen el prefix `task-`, simplement especificar aquests paràmetres del llenguatge a l'arrencada, i després afegir els paquets de prioritat estàndard i tots els metapaquets descoberts a la nostra llista de paquets de la següent manera:

892

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
--bootappend-live "boot=live components 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

893

Note that we have included the debian-installer-launcher package to launch the installer from the live desktop.