:B~ Personalització dels comportaments en temps d'execució

1~customizing-run-time-behaviours 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.

2~ 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}#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}#:

code{

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

}code

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

code{

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

}code

Una forma possible de canviar la contrasenya per defecte és per mitjà d'un
ganxo com s'explica a {Scripts ganxo durant
l'arrencada}#boot-time-hooks. 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/}#

2~customizing-locale-and-language Personalització de l'entorn local i el
llenguatge

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

_* la generació de locales

_* establir la configuració del teclat

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. 

code{

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

}code

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:

code{

$ 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

}code

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:

code{

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

}code

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:

code{

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

}code

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:

code{

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

}code

2~persistence 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:

_* una partició, identificada pel seu nom GPT.

_* un sistema de fitxers, identificat per la seva etiqueta de sistema de
fitxers.

_* un fitxer imatge situat en l'arrel de qualsevol sistema de fitxers
llegibles (fins i tot una partició NTFS d'un altre SO), identificat pel seu
nom de fitxer.

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}#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:

code{

 # mkfs.ext4 -L persistence /dev/sdb1

}code

Veure també {Utilitzar l'espai lliure en una memòria
USB}#using-usb-extra-space.

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

code{

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

}code

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

code{

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

}code

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:

code{

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

}code

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

code{

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

}code

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

3~persistence-conf 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:

code{

 # 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

}code

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.

3~ 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.

3~ 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:

code{

 # apt-get install cryptsetup

}code

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

code{

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

}code

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:

code{

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

}code

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:

code{

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

}code

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:

code{

 # cryptsetup luksOpen /dev/sdc2 live

}code

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

code{

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

}code

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.

code{

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

}code

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

code{

 # mount /dev/mapper/live /mnt

}code

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}#persistence-conf.

code{

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

}code

Desmuntar el punt de muntatge:

code{

 # umount /mnt

}code

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

code{

 # cryptsetup luksClose live

}code

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}#copying-iso-hybrid-to-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.
