: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 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 canviar el nom de l'usuari per defecte només s'ha d'especificar en la
configuració:

code{

 $ lb config --bootappend-live "boot=live config 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 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 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 config 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 X i per la
consola utilitzant el paquet #{console-setup}#. Per la seva configuració es
por 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 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
obtenir els fitxers de configuració regional per a la distribució del teclat
alemany i suís-alemany per l'entorn gràfic X:

code{

 $ lb config --bootappend-live "boot=live config 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 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 config 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 definir dos dissenys, el valor
predeterminat US QWERTY i l'altre US Dvorak:

code{

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

}code

2~persistence Persistència

Un paradigma d'un live cd és ser un sistema pre-instaŀ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 Debian Live é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 nomenar els diferents tipus de
solucions per guardar després de reiniciar algunes, o totes, les dades
d'aquesta evolució en temps d'execució del sistema. Per 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 Debian Live 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 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 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 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 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 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 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 aquesta limitació es
pot afegir #{/ union}# al fitxer #{persistence.conf}# per aconseguir una
persistència completa.

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 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 saber com manejar aquest cas, si realment
es necessita (una pista: en general no cal fer-ho).

3~ Utilitzar diversos medis persistents

Si un usuari necessita múltiples magatzems de persistència del mateix tipus
per a diferents ubicacions o proves, com #{persistence-private}# i
#{persistence-work}#, el paràmetre d'arrencada #{persistence-label}#
utilitzat juntament amb el paràmetre d'arrencada #{persistence}# permetrà
tenir diversos dispositius amb la mateixa persistència. Un exemple seria si
un usuari vol utilitzar una partició amb persistència amb l'etiqueta
#{persistence-subText}# utilitzaria els paràmetres d'arrencada:
#{persistence}# #{persistence-label=subText}#.
