Manual de Live Systems

Sobre aquest manual

Sobre aquest manual

1. Sobre aquest manual

1.1 Per als impacients
1.2 Termes
1.3 Autors
1.4 Contribuir a aquest document
1.4.1 Aplicar canvis
1.4.2 Traducció

Sobre el Live Systems Project

2. Sobre el Live Systems Project

2.1 Motivació
2.1.1 Què passa amb els sistemes vius actuals
2.1.2 Per què crear el nostre pròpi sistema viu?
2.2 Filosofia
2.2.1 Només paquets Debian sense modificacions de la secció "main"
2.2.2 Paquets del sistema viu sense cap configuració
2.3 Contacte

Usuari

Instal·lació

3. Instal·lació

3.1 Requisits
3.2 Instal·lació de live-build
3.2.1 Des del repositori de Debian
3.2.2 A partir del codi font
3.2.3 A partir d'instantànies
3.3 Instal.lació de live-boot i live-config
3.3.1 Des del repositori de Debian
3.3.2 A partir del codi font
3.3.3 A partir d'instantànies

Conceptes bàsics

4. Conceptes bàsics

4.1 Què és un sistema viu?
4.2 Descàrrega d'imatges prefabricades
4.3 Ús del servei de construcció d'imatges en viu web
4.3.1 Ús i advertències sobre el servei web
4.4 Primers passos: construcció d'una imatge ISO híbrida
4.5 Usar una imatge ISO híbrida en viu
4.5.1 Gravar una imatge ISO en un medi físic
4.5.2 Copiar una imatge ISO híbrida en un dispositiu USB
4.5.3 Utilitzar l'espai lliure en una memòria USB
4.5.4 Arrencar el medi en viu
4.6 Utilitzar una màquina virtual per a fer proves
4.6.1 Provar una imatge ISO amb QEMU
4.6.2 Provar una imatge ISO amb VirtualBox
4.7 Construir i utilitzar una imatge HDD
4.8 Construir una imatge netboot
4.8.1 Servidor DHCP
4.8.2 Servidor TFTP
4.8.3 Servidor NFS
4.8.4 Com provar l'arrencada en xarxa
4.8.5 Qemu
4.9 Webbooting
4.9.1 Obtenir els fitxers webboot
4.9.2 Arrencar imatges webboot

Descripció general de les eines

5. Descripció general de les eines

5.1 El paquet live-build
5.1.1 L'ordre lb config
5.1.2 L'ordre lb build
5.1.3 L'ordre lb clean
5.2 El paquet live-boot
5.3 El paquet live-config

Gestió d'una configuració

6. Gestió d'una configuració

6.1 Gestionar canvis en la configuració
6.1.1 Per què utilitzar scripts auto? Què fan?
6.1.2 Utilitzar scripts auto d'exemple
6.2 Clonar una configuració publicada via Git

Personalització dels continguts

7. Visió general de la personalització

7.1 Configuració durant la construcció vs. durant l'arrencada
7.2 Etapes de la construcció
7.3 Suplementar lb config amb fitxers
7.4 Tasques de personalització

Personalització de la instal·lació de paquets

8. Personalització de la instal·lació de paquets

8.1 Fonts dels paquets
8.1.1 Distribució, àrees d'arxiu i mode
8.1.2 Miralls de distribució
8.1.3 Miralls de distribució utilitzats en temps de construcció
8.1.4 Miralls de distribució utilitzats en temps d'execució
8.1.5 Repositoris addicionals
8.2 Selecció dels paquets a instal·lar
8.2.1 Llistes de paquets
8.2.2 Ús dels metapaquets
8.2.3 Llistes locals de paquets
8.2.4 Llistes locals de paquets per a l'etapa binary
8.2.5 Generar llistes de paquets
8.2.6 Ús de condicionals dins de les llistes de paquets
8.2.7 Eliminar paquets durant la instal·lació
8.2.8 Tasques d'escriptori i llenguatge
8.2.9 Tipus i versió del nucli
8.2.10 Nuclis personalitzats
8.3 Instal·lació de paquets modificats o de tercers
8.3.1 Fer servir packages.chroot per a instaŀar paquets personalitzats
8.3.2 Fer servir un repositori APT per a instal·lar paquets personalitzats
8.3.3 Paquets personalitzats i APT
8.4 Configurar APT en temps de construcció
8.4.1 Elegir apt o aptitude
8.4.2 L'ús d'un proxy amb APT
8.4.3 Afinar APT per a estalviar espai
8.4.4 Passar opcions per a apt o aptitude
8.4.5 APT pinning

Personalització dels continguts

9. Personalització dels continguts

9.1 Includes
9.1.1 Live/chroot local includes
9.1.2 Binary local includes
9.2 Scripts ganxo (Hooks)
9.2.1 Live/chroot local hooks
9.2.2 Scripts ganxo durant l'arrencada
9.2.3 Binary local hooks
9.3 Preconfiguració de les preguntes de Debconf

Personalització dels comportaments en temps d'execució

10. Personalització dels comportaments en temps d'execució

10.1 Personalitzar l'usuari en viu
10.2 Personalització de l'entorn local i el llenguatge
10.3 Persistència
10.3.1 El fitxer persistence.conf
10.3.2 Utilitzar diversos medis persistents
10.4 Persistència amb xifratge

Personalització de la imatge binària

11. Personalització de la imatge binària

11.1 Carregadors d'arrencada
11.2 metadades ISO

Personalització de l'instal·lador de debian

12. Personalització de l'instal·lador de debian

12.1 Tipus d'instal·lador de Debian
12.2 Personalització de l'instal·lador de Debian amb preconfiguració
12.3 Personalitzar el contingut de l'instal·lador de Debian

Projecte

Contribuir al projecte

13. Contribuir al projecte

13.1 Fer canvis

Informar dels errors

14. Informar dels errors

14.1 Problemes coneguts
14.2 Reconstruir des de zero
14.3 Fer servir paquets actualitzats
14.4 Recopilar informació
14.5 Aïllar el cas que falla, si és possible
14.6 Utilitzar el paquet correcte per a informar de l'error
14.6.1 A l'hora de construir mentre bootstrapping
14.6.2 A l'hora de construir, durant la instal·lació de paquets
14.6.3 En el moment d'arrencar
14.6.4 En temps d'execució
14.7 Fer la recerca
14.8 On informar dels errors

Estil de Codi

15. Estil de Codi

15.1 Compatibilitat
15.2 Indentació
15.3 Ajust de línia
15.4 Variables
15.5 Miscel·lània

Procediments

16. Procediments

16.1 Publicacions majors
16.2 Publicacions puntuals
16.2.1 Ùltima publicació puntual d'una versió de Debian
16.2.2 Plantilla per a anunciar una publicació puntual

Repositoris Git

17. Repositoris Git

17.1 Gestió de múltiples repositoris

Exemples

Exemples

18. Exemples

18.1 Ús dels exemples
18.2 Tutorial 1: Una imatge per defecte
18.3 Tutorial 2: Una utilitat de navegador web
18.4 Tutorial 3: Una imatge personalitzada
18.4.1 Primera revisió
18.4.2 Segona revisió
18.5 Un client per a un quiosc VNC
18.6 Una imatge bàsica per a un dispositiu USB de 128MB
18.7 Un escriptori GNOME localitzat i amb instal·lador

Apèndix

Style guide

19. Guia d'estil

19.1 Instruccions per als autors
19.1.1 Característiques lingüístiques
19.1.2 Procediments
19.2 Directrius per als traductors
19.2.1 Consells de traducció

Metadata

Manual de Live Systems

Exemples

18. Exemples

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.

18.1 Ús dels exemples

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.

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:

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: Una imatge per defecte

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

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.

No pot ser més senzill que això:

$ mkdir tutorial1 ; cd tutorial1 ; lb config

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.

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

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

Suposant que tot va bé, després d'una estona, el directori actual contindrà una live-image-i386.hybrid.iso. Aquesta imatge ISO híbrida es pot arrencar en una màquina virtual tal com s'explica a Provar una imatge ISO amb Qemu i Provar una imatge ISO amb VirtualBox, o bé copiada a un dispositiu USB com es descriu a Gravar una imatge ISO en un medi físic i Copiar una imatge ISO híbrida en un dispositiu USB, respectivament.

18.3 Tutorial 2: Una utilitat de navegador web

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

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.

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

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.

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

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

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

18.4 Tutorial 3: Una imatge personalitzada

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.

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

18.4.1 Primera revisió

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

Editar auto/config de la manera següent:

#!/bin/sh

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

Perform lb config to generate the config tree, using the auto/config script you just created:

$ lb config

Ara, omplir la llista local de paquets:

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

En primer lloc, amb --architectures i386 s'assegura que al nostre sistema de construcció amd64 podem construir una versió de 32 bits adequada per al seu ús en la majoria de màquines. En segon lloc, fem servir --linux-flavours 686-pae perquè no creiem que utilitzarem aquesta imatge en sistemes molt més vells. En tercer lloc, hem triat la tasca metapaquet lxde per a donar-nos un escriptori mínim. I, finalment, hem afegit dos paquets inicials favorits: iceweasel i xchat.

Ara, construir la imatge:

# lb build

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.

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:

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

18.4.2 Segona revisió

En aquesta revisió, anem a netejar després de la primera construcció, afegir el paquet vlc a la nostra configuració, reconstruir, provar i fer el lliurament.

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

# lb clean

Ara afegim el paquet vlc al llistat de paquets local a config/package-lists/my.list.chroot:

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

Construir de nou:

# lb build

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

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

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.

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.

18.5 Un client per a un quiosc VNC

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

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.

$ 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

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.

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

$ apt-cache depends live-config live-boot

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:

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

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:

$ 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

Construir la imatge:

# lb build

Gaudir-ne.

18.6 Una imatge bàsica per a un dispositiu USB de 128MB

Cas d'ús: Crear una imatge per defecte amb alguns components eliminats per tal que càpiga en una clau USB de 128MB amb un petit espai de sobres per a utilitzar-lo com millor us sembli.

Al optimitzar una imatge per a adaptar-la a una mida determinada, cal comprendre la compensació que s'estan fent entre la mida i la funcionalitat. En aquest exemple, retallem tant només per a donar cabuda a material addicional dins d'una mida de 128MB, però sense fer res per a destruir la integritat dels paquets continguts, com la depuració de les dades de localització a través del paquet localepurge o altres optimitzacions "intrusives". De particular interès, utilitzem --debootstrap-options per a crear un sistema mínim des de zero.

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

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

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

Ara, crear la imatge de la forma habitual:

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

En el sistema de l'autor en el moment d'escriure això, la configuració anterior produeix una imatge de 77MB. Això es compara favorablement amb la imatge de 177MB produïda per la configuració per defecte del Tutorial 1.

El estalvi d'espai més gran aquí, en comparació amb la construcció d'una imatge per defecte en un sistema d'arquitectura i386, és seleccionar només la variant del nucli 486 en comptes del predeterminat -k "486 686-pae". Deixar els índexs d'APT amb --apt-indices false també 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.

Nota: Un sistema mínim es pot aconseguir també fent servir un script ganxo, com ara el stripped.hook.chroot de /usr/share/doc/live-build/examples/hooks. Es pot guanyar petites quantitats addicionals d'espai i produir una imatge de 62MB. No obstant, el script ganxo aconsegueix això eliminant documentació i altres fitxers dels paquets instal·lats al sistema. Això viola la integritat dels paquets i com és comenta a l'encapçalament del script, pot tenir conseqüències imprevistes. És per això que l'ús d'un debootstrap mínim és el mètode recomanat per a aconseguir aquest objectiu.

18.7 Un escriptori GNOME localitzat i amb instal·lador

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

Volem fer una imatge ISO híbrida per a l'arquitectura i386 fent servir el nostre escriptori preferit, en aquest cas GNOME, que conté tots els mateixos paquets que serien instal·lats per l'instal·lador estàndard de Debian per a GNOME.

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:

# apt-get install dctrl-tools tasksel-data

Ara podem buscar les tasques apropiades, primer amb:

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

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

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

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:

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
     -a i386 \
     -k 486 \
     --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

Tenir en compte que s'ha inclòs el paquet debian-installer-launcher per a llançar l'instal·lador des de l'escriptori en viu, i també s'especifica el nucli 486, ja que actualment és necessari que l'instal·lador i el nucli del sistema viu coincideixin perquè el llançador funcioni correctament.