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

Personalització dels comportaments en temps d'execució

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

Tota la configuració que es fa durant l'execució es feta per live-config. Aquestes són algunes de les opcions més comunes de live-config en que els usuaris estan interessats. Una llista completa de totes les possibilitats es poden trobar a la pàgina del manual de live-config.

10.1 Personalitzar l'usuari en viu

Una consideració important és que l'usuari en viu es creat per live-boot durant l'arrencada i no per live-build en temps de construcció. Això influeix no només en on s'han de introduir els materials relacionats amb l'usuari durant la construcció, tal i com es va explicar a Live/chroot local includes, sinó també en els grups i els permisos associats amb l'usuari.

Es poden especificar grups addicionals als que pertanyerà l'usuari en viu mitjançant l'ús de qualsevol de les possibilitats de configuraciò de live-config. Per exemple, per a afegir l'usuari en viu al grup fuse, es pot afegir el següent fitxer a config/includes.chroot/etc/live/config/user-setup.conf:

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

o utilitzar live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse com paràmetre d'arrencada.

També és possible canviar el nom de l'usuari per defecte "user" i la contrasenya per defecte "live". Si es vol fer això per alguna raó, es pot aconseguir fàcilment de la següent manera:

Per a canviar el nom de l'usuari per defecte només s'ha d'especificar en la configuració:

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

Una forma possible de canviar la contrasenya per defecte és per mitjà d'un ganxo com s'explica a Scripts ganxo durant l'arrencada. Per a fer això, es pot utilitzar el script ganxo "passwd" de /usr/share/doc/live-config/examples/hooks, posar-li un prefix adequat (per exemple 2000-passwd) i afegir-lo a config/includes.chroot/lib/live/config/

10.2 Personalització de l'entorn local i el llenguatge

Quan el sistema en viu arrenca, el llenguatge està implicat en dos passos:

La configuració local per defecte en la construcció d'un sistema viu és locales=en_US.UTF-8. Per a definir la locale que s'ha de generar, utilitzar el paràmetre locales de la opció --bootappend-live de lb config, per exemple.

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

Es poden especificar diverses locales en una llista separada per comes.

Aquest paràmetre, així com els paràmetres de configuració del teclat que s'indiquen a continuació, també es pot utilitzar en la línia d'ordres del nucli. Es pot especificar una configuració regional mitjançant language_country (en aquest cas s'utilitza la codificació per defecte) o la forma completa language_country.encoding. Una llista de locales suportades i la codificació per a cadascuna es poden trobar a /usr/share/i18n/SUPPORTED.

live-config s'encarrega de la configuració del teclat per a X i per a la consola utilitzant el paquet console-setup. Per a la seva configuració es pot fer servir els paràmetres d'arrencada keyboard-layouts, keyboard-variants, keyboard-options i keyboard-model mitjançant l'opció --bootappend-live. Es poden trobar opcions vàlides per a aquests a /usr/share/X11/xkb/rules/base.lst. Per a trobar distribucions de teclat i variants per a un idioma determinat, s'ha d'intentar cercar el nom en anglès de la llengua i/o el país on es parla l'idioma, per exemple:

$ 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

Tinir en compte que cada variant mostra la distribució que s'aplica en la descripció.

Sovint, només la distribució necessita ser configurada. Per exemple, per a obtenir els fitxers de configuració regional per a la distribució del teclat alemany i suís-alemany per a l'entorn gràfic X:

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

No obstant això, per als casos d'ús molt específics, potser es vol incloure altres paràmetres. Per exemple, per a establir un sistema francès, amb una distribució de teclat French-Dvorak (anomenat Bepo) en un teclat USB TypeMatrix EZ-Reach 2030, utilitzar:

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

Es poden especificar diversos valors per a cada una de les opcions keyboard-* en una llista separada per comes amb l'excepció de keyboard-model, que només accepta un valor. Veure la pàgina del manual keyboard(5) per a més detalls i exemples de les variables XKBMODEL, XKBLAYOUT, XKBVARIANT i XKBOPTIONS. Si s'especifiquen diversos valors de keyboard-variants es correspondran un a un amb els valors keyboard-layouts (veure setxkbmap(1) opció -variant). Es poden utilitzar valors buits, per exemple, per a definir dos dissenys, el valor predeterminat US QWERTY i l'altre US Dvorak:

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

10.3 Persistència

Un paradigma d'un live cd és ser un sistema pre-instal·lat, que arrenca desde medis de només lectura, com un cdrom, on les modificacions no sobreviuen als reinicis del maquinari que l'executa.

Un sistema en viu és una generalització d'aquest paradigma i per tant, compatible amb altres medis, a més dels CDs, però tot i així, en el seu comportament per defecte, s'ha de considerar de només lectura i totes les evolucions en temps d'execució del sistema es perden al apagar l'equip.

La "Persistència" és un nom comú per a nomenar els diferents tipus de solucions per a guardar després de reiniciar algunes, o totes, les dades d'aquesta evolució en temps d'execució del sistema. Per a entendre com funciona, seria útil saber que, encara que el sistema s'inicia i s'executa des de medis de només lectura, les modificacions als fitxers i directoris s'escriuen ens medis d'escriptura, en general un ramdisk (tmpfs) i les dades dels discos ram no sobreviuen als reinicis.

Les dades emmagatzemades en aquest disc ram han de ser guardades en un suport d'escriptura persistent com medis d'emmagatzematge locals, un recurs compartit de xarxa o fins i tot una sessió d'una multisessió de un CD/DVD (re)grabable. Tots aquests medis són compatibles amb el sistemes en viu de diferents maneres, i tots menys l'últim, requereixen un paràmetre especial que s'especifica en l'arrencada: persistence.

Si s'utilitza el paràmetre d'arrencada persistence (i no s'utilitza nopersistence) es proven els medis locals d'emmagatzematge (per exemple, discs durs, unitats USB) buscant volums amb persistència durant l'arrencada. És possible restringir els tipus de volums amb persistència que s'utilitzarà mitjançant l'especificació de certs paràmetres d'arrencada que es descriuen a la pàgina del manual de live-boot(7). Un volum amb persistència és qualsevol dels següents:

L'etiqueta de volum per als overlays ha de ser persistence però serà passat per alt a menys que contingui un fitxer anomenat persistence.conf que s'utilitza per a personalitzar completament la persistència del volum, és a dir, especificar els directoris que es volen conservar en el volum de persistència després de reiniciar. Veure El fitxer persistence.conf per a més detalls.

Aquests són alguns exemples de com preparar un volum que s'utilitzarà per a la persistència. Pot ser, per exemple, una partició ext4 en un disc dur o en una clau USB creat amb, per exemple:

# mkfs.ext4 -L persistence /dev/sdb1

Veure també Utilitzar l'espai lliure en una memòria USB.

Si ja hi ha una partició al dispositiu, és pot canviar l'etiqueta amb un dels següents:

# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems

Heus aquí un exemple de com crear un fitxer imatge basat en ext4 per a ser utilitzat per a la persistència:

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

Un cop s'ha creat el fitxer imatge, per exemple, per a fer /usr persistent però només guardant els canvis que es fan en aquest directori i no tots els continguts de /usr, es pot utilitzar l'opció "union". Si el fitxer imatge es troba en el directori home, copiar-lo a l'arrel del sistema de fitxers del disc dur i muntar-lo a /mnt de la següent manera:

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

A continuació, crear el fitxer persistence.conf afegint contingut i desmuntar el fitxer imatge.

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

Ara, reiniciar el sistema i arrencar el medi en viu amb el paràmetre d'arrencada "persistence".

10.3.1 El fitxer persistence.conf

Un volum amb l'etiqueta persistence ha de ser configurat mitjançant un fitxer persistence.conf per a fer directoris arbitraris persistents. Aquest fitxer, ubicat a l'arrel del sistema de fitxers del volum, controla els directoris que fa persistents, i de quina manera.

A la pàgina del manual de persistence.conf(5) s'explica en detall com es configuran els muntatges de les overlays, però un simple exemple hauria de ser suficient per a la majoria d'usos. Si es vol fer el directori home i el directori del cache d'APT persistents en un sistema de fitxers ext4 a la partició /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

Després es reinicia el sistema. Durant la primera arrencada els continguts de /home i /var/cache/apt es copiaran en el volum de la persistència, i d'aquí en endavant tots els canvis en aquests directoris es guardaran en aquest volum. Tenir en compte que les rutes que apareixen en el fitxer persistence.conf no poden contenir espais en blanc o els components especials . i ... A més, ni /lib, /lib/live (o qualsevol dels seus subdirectoris) ni / es poden fer persistents utilitzant muntatges personalitzats. Com a solució per a aquesta limitació es pot afegir / union al fitxer persistence.conf per a aconseguir una persistència completa.

10.3.2 Utilitzar diversos medis persistents

Hi ha diferents mètodes per utilitzar múltiples volums de persistència per a diferents casos d'ús. Per exemple, utilitzar diversos volums al mateix temps o seleccionar-ne només un, entre varis, per a fins molt específics.

Es poden utilitzar diversos volums diferents de muntatges personalitzats (amb els seus propis fitxers persistence.conf però si diversos volums fan que el mateix directori sigui persistent, només s'utilitzarà un d'ells. Si qualsevol dels dos muntatges són "imbricats" (és a dir, un és un sub-directori de l'altre) el directori pare es muntarà abans que el directori fill per a evitar que amb el muntatge un directori no sigui ocultat per l'altre. Els muntatges personalitzats imbricats són problemàtics si estan enumerats en el mateix fitxer persistence.conf. Veure la pàgina del manual persistence.conf(5) per a saber com manejar aquest cas, si realment es necessita (una pista: en general no cal fer-ho).

Un possible cas d'ús: Per a guardar les dades de l'usuari, és a dir /home i les dades del superusuari, és a dir /root en diferents particions, crear dues particions amb l'etiqueta persistence i afegir un fitxer persistence.conf en cadascuna d'aquesta manera # echo "/home" > persistence.conf per a la primera partició que guardarà els fitxers de l'usuari i # echo "/root" > persistence.conf per a la segona partició que emmagatzemarà els fitxers del superusuari. Finalment, utilitzar el paràmetre d'arrencada persistence.

Si un usuari necessita múltiples volums de persistència del mateix tipus per a diferents ubicacions o proves, com private i work, el paràmetre d'arrencada persistence-label utilitzat juntament amb el paràmetre d'arrencada persistence permetrà tenir diversos dispositius amb la mateixa, però única, persistència. Un exemple seria si un usuari vol utilitzar una partició amb persistència amb l'etiqueta private per a dades personals com els marcadors d'un navegador, utilitzaria els paràmetres d'arrencada: persistence persistence-label=private. I per emmagatzemar dades relacionades amb el treball, com a documents, projectes de recerca o d'un altre tipus, utilitzaria els paràmetres d'arrencada: persistence persistence-label=work.

És important recordar que aquests volums, private i work, també necessiten tenir un fitxer persistence.conf en la seva arrel. La pàgina de manual de live-boot conté més informació sobre com utilitzar aquestes etiquetes amb els noms més antics.

10.4 Persistència amb xifratge

Utilitzar la persistència vol dir que algunes dades sensibles poden quedar exposades a risc. Especialment si les dades persistents s'emmagatzemen en un dispositiu portàtil com una memòria USB o un disc dur extern. És llavors quan el xifrat entra en joc. Fins i tot si el procediment pot semblar complicat a causa de la quantitat de passos que s'han de fer, és molt fàcil manejar particions xifrades amb live-boot. Per a utilitzar luks, que és el tipus de xifrat compatible, es necessita instal·lar cryptsetup tant en la màquina que crearà la partició xifrada com en el sistema en viu amb que es va a utilitzar la partició persistent xifrada.

Per a instal·lar cryptsetup a la nostra màquina:

# apt-get install cryptsetup

Per a instal·lar cryptsetup en el sistema viu, afegir-lo a una package-lists:

$ lb config
$ echo "cryptsetup" > config/package-lists/encryption.list.chroot

Una cop tinguem el nostre sistema en viu amb cryptsetup, bàsicament, només hem de crear una nova partició, xifrar-la i arrencar amb els paràmetres persistence i persistence-encryption=luks. Podríem haver anticipat aquest pas i afegit els paràmetres d'arrencada seguint el procediment habitual:

$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"

Anem a entrar en els detalls per a tothom que no està familiaritzat amb el xifrat. En el següent exemple utilitzarem una partició en un dispositiu USB que correspon a /dev/sdc2. Tenir en compte que cal determinar quina partició és la que es va a utilitzar en cada cas específic.

El primer pas és connectar la memòria usb i determinar de quin dispositiu es tracta. La manera més recomanable per a llistar dispositius és utilitzar ls -l /dev/disk/by-id. Després d'això, crear una nova partició i, a continuació, xifrar-la amb una frase de contrasenya de la següent manera:

# cryptsetup --verify-passphrase luksFormat /dev/sdc2

A continuació, obrir la partició luks al mapeador de dispositius virtuals. Es pot utilitzar qualsevol nom que es desitgi. Aquí utilitzem live com a exemple:

# cryptsetup luksOpen /dev/sdc2 live

El següent pas és omplir el dispositiu amb zeros abans de crear el sistema de fitxers:

# dd if=/dev/zero of=/dev/mapper/live

Ara, estem preparats per a crear el sistema de fitxers. Noteu que estem afegint l'etiqueta persistence perquè el dispositiu es munti com a magatzem de persistència durant l'arrencada.

# mkfs.ext4 -L persistence /dev/mapper/live

Per continuar amb la nostra configuració, necessitem muntar el dispositiu, per exemple, a /mnt.

# mount /dev/mapper/live /mnt

I crear el fitxer persistence.conf a l'arrel de la partició. Això és, com s'ha explicat abans, estrictament necessari. Veure El fitxer persistence.conf.

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

Desmuntar el punt de muntatge:

# umount /mnt

I opcionalment, encara que podria ser una bona manera de protegir les dades que acabem d'agregar a la partició, podem tancar el dispositiu:

# cryptsetup luksClose live

Anem a resumir el procés. Fins ara, hem creat un sistema viu capaç de manejar xifratge, que es pot copiar a una memòria USB com s'explica a Copiar una imatge ISO híbrida en un dispositiu USB. També hem creat una partició xifrada, que es pot situar en la mateixa memòria USB per portar a tot arreu i hem configurat la partició xifrada per ser utilitzada com a magatzem de persistència. Així que ara, només hem de arrencar el sistema en viu. En el moment d'arrencar, live-boot ens preguntarà la frase de contrasenya i muntarà la partició xifrada per a ser utilitzada per a la persistència.