:B~ Personnalisation des comportements pendant l'exécution

1~customizing-run-time-behaviours Personnalisation des comportements pendant
l'exécution

Toute la configuration qui est faite pendant l'exécution est faite par
live-config. Voici quelques options parmi les plus courantes de live-config
qui peuvent intéresser les utilisateurs. Une liste complète de toutes les
possibilités peut être trouvée dans la page de manuel de live-config.

2~ Personnalisation de l'utilisateur live

Une considération importante est que l'utilisateur live est créé par
live-boot au démarrage, non pas par live-build pendant la construction. Cela
influence non seulement l'emplacement où les documents relatifs à
l'utilisateur live sont introduits dans la construction, tel que discuté
dans {Live/chroot local includes}#live-chroot-local-includes, mais aussi
tous les groupes et autorisations associés à l'utilisateur live.

Vous pouvez indiquer d'autres groupes pour l'utilisateur live en utilisant
une des possibilités pour configurer live-config. Par exemple, pour ajouter
l'utilisateur live au groupe #{fuse}#, vous pouvez ajouter le fichier
suivant dans #{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

ou utiliser
#{live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse}#
comme paramètre d'amorçage.

Il est également possible de changer le nom de l'utilisateur par défaut
«user» et du mot de passe par défaut «live». Si vous voulez faire cela, vous
pouvez le faire facilement comme suit:

Pour modifier le nom de l'utilisateur par défaut, vous pouvez simplement
l'indiquer dans votre configuration:

code{

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

}code

Une façon possible de changer le mot de passe par défaut est d'utiliser un
hook comme décrit dans {Hooks pendant le démarrage}#boot-time-hooks. Pour ce
faire vous pouvez utiliser le hook "passwd" de
#{/usr/share/doc/live-config/examples/hooks}#, ajouter un préfixe correct
(par exemple 2000-passwd) et l'ajouter à
#{config/includes.chroot/lib/live/config/}#

2~customizing-locale-and-language Personnalisation des paramètres régionaux
et de la langue

Au démarrage du système live, la langue est impliquée dans deux étapes:

_* la génération des paramètres régionaux

_* le réglage de la disposition du clavier

Les paramètres régionaux par défaut pendant la construction d'un système
Live sont #{locales=en_US.UTF-8}#. Pour définir les paramètres régionaux qui
doivent être générés, utilisez le paramètre #{locales}# dans l'option
#{--bootappend-live}# de #{lb config}#, par exemple

code{

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

}code

Plusieurs paramètres régionaux peuvent être indiqués dans une liste séparée
par des virgules.

Ce paramètre, ainsi que les paramètres de configuration du clavier indiqués
ci-dessous, peut également être utilisé sur la ligne de commande du
noyau. On peut indiquer des paramètres régionaux avec #{language_country}#
(dans ce cas, le codage par défaut est utilisé) ou l'expression complète
#{language_country.encoding}#. Une liste des paramètres régionaux et le
codage pour chacun peuvent être trouvés dans #{/usr/share/i18n/SUPPORTED}#.

La configuration du clavier pour la console et pour X est faite par
#{live-config}# en utilisant le paquet #{console-setup}#. Pour les
configurer, utilisez les paramètres de démarrage #{keyboard-layouts}#,
#{keyboard-variants}#, #{keyboard-options}# et #{keyboard-model}# avec
l'option #{--bootappend-live}#. On peut trouver les options valides dans
#{/usr/share/X11/xkb/rules/base.lst}#. Pour trouver les dispositions et les
variantes correspondantes à une langue, essayez de rechercher le nom anglais
de la nation où la langue est parlée, par 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

Chaque variante présente une description de la disposition appliquée.

Souvent, seule la disposition doit être configurée. Par exemple, pour
obtenir les fichiers des paramètres régionaux de l'allemand et la
disposition du clavier suisse allemand dans X, utilisez:

code{

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

}code

Toutefois, pour les cas d'utilisation très spécifiques, on peut inclure
d'autres paramètres. Par exemple, pour mettre en place un système français
avec une disposition French-Dvorak (Bépo) avec un clavier USB TypeMatrix
EZ-Reach 2030, utilisez:

code{

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

}code

Plusieurs valeurs peuvent être indiquées dans des listes séparées par des
virgules pour chacune des options #{keyboard-*}#, à l'exception de
#{keyboard-model}# qui accepte une seule valeur. Veuillez consulter la page
de manuel #{keyboard(5)}# pour plus de détails et des exemples des variables
#{XKBMODEL}#, #{XKBLAYOUT}#, #{XKBVARIANT}# et #{XKBOPTIONS}#. Si plusieurs
valeurs #{keyboard-variants}# sont données, elles seront jumelées une à une
avec les valeurs #{keyboard-layouts}# (voir #{setxkbmap(1)}# option
#{-variant}#). On peut utiliser des valeurs vides; par exemple pour régler
deux dispositions, une par défaut US QWERTY et l'autre US Dvorak, utilisez:

code{

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

}code

2~persistence Persistance

Le paradigme d'un Live CD est d'être un système pré-installé qui amorce sur
un support en lecture seule, comme un cdrom, où les données et les
modifications ne survivent pas aux redémarrages du matériel hôte qui
l'exécute.

Un système live est une généralisation de ce paradigme et gère ainsi
d'autres supports en plus de CDs. Malgré tout, dans son comportement par
défaut, il doit être considéré en lecture seule et toutes les évolutions
pendant l'exécution du système sont perdues à l'arrêt.

La «persistance» est un nom commun pour les différents types de solutions
pour sauver, après un redémarrage, certaines ou toutes les données, de cette
évolution pendant l'exécution du système. Pour comprendre comment cela
fonctionne, il peut être utile de savoir que même si le système est démarré
et exécuté à partir d'un support en lecture seule, les modifications des
fichiers et répertoires sont écrites sur des supports inscriptibles,
typiquement un disque ram (tmpfs) et les données des disques RAM ne
survivent pas à un redémarrage.

Les données stockées sur ce disque virtuel doivent être enregistrées sur un
support inscriptible persistant comme un support de stockage local, un
partage réseau ou même une séance d'un CD/DVD multisession
(ré)inscriptible. Tous ces supports sont pris en charge dans les systèmes
live de différentes manières, et tous, à part le dernier, nécessitent un
paramètre d'amorçage spécial à préciser au moment du démarrage:
#{persistence}#.

Si le paramètre de démarrage #{persistence}# est réglé (et #{nopersistence}#
n'est pas utilisé), les supports de stockage locaux (par exemple les disques
durs, clés USB) seront examinés pour trouver des volumes persistants pendant
le démarrage. Il est possible de limiter les types de volumes persistants à
utiliser en indiquant certains paramètres de démarrage décrits dans la page
de manuel live-boot(7). Un volume persistant est un des éléments suivants:

_* une partition, identifiée par son nom GPT.

_* un système de fichiers, identifié par son étiquette de système de
fichiers.

_* un fichier image situé sur la racine d'un système de fichiers en lecture
(même une partition NTFS d'un système d'exploitation étranger), identifié
par son nom de fichier.

L'étiquette du volume pour les overlays doit être #{persistence}# mais elle
sera ignorée à moins de contenir dans sa racine un fichier nommé
#{persistence.conf}# qui est utilisé pour personnaliser entièrement la
persistance du volume, c'est-à-dire indiquer les répertoires que vous voulez
sauvegarder dans votre volume de persistance après un redémarrage. Voir {Le
fichier persistence.conf}#persistence-conf pour plus de détails.

Voici quelques exemples montrant comment préparer un volume à utiliser pour
la persistance. Cela peut être, par exemple, une partition ext4 sur un
disque dur ou sur une clé usb créée avec:

code{

 # mkfs.ext4 -L persistence /dev/sdb1

}code

Voir aussi {Utilisation de l'espace disponible sur une clé
USB}#using-usb-extra-space.

Si vous avez déjà une partition sur votre périphérique, vous pouvez
simplement modifier l'étiquette avec l'un des exemples suivants:

code{

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

}code

Voici un exemple montrant comment créer un fichier image avec un système de
fichiers ext4 pour être utilisé pour la persistance:

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

Une fois que le fichier image est créé, à titre d'exemple, pour rendre
#{/usr}# persistant mais seulement enregistrer les modifications que vous
apportez à ce répertoire et non pas tout le contenu de #{/usr}#, vous pouvez
utiliser l'option «union». Si le fichier image se trouve dans votre
répertoire personnel, copiez-le à la racine du système de fichiers de votre
disque dur et montez-le dans #{/mnt}# comme suit:

code{

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

}code

Ensuite, créez le fichier #{persistence.conf}# ajoutant du contenu et
démontez le fichier image.

code{

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

}code

Maintenant, redémarrez dans votre support live avec le paramètre de
démarrage "persistence".

3~persistence-conf Le fichier persistence.conf

Un volume ayant l'étiquette #{persistence}# doit être configuré avec un
fichier #{persistence.conf}# pour créer des répertoires persistants
arbitraires. Ce fichier, situé sur le système de fichiers racine du volume,
contrôle quels répertoires il rend persistants, et de quelle manière.

La façon de configurer les montages overlays est décrite en détail dans la
page de manuel persistence.conf(5), mais un simple exemple devrait suffire
pour la plupart des utilisations. Imaginons que nous voulions rendre notre
répertoire personnel et APT cache persistants dans un système de fichiers
ext4 sur la partition /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

Puis nous redémarrons. Lors du premier démarrage, les contenus du #{/home}#
et #{/var/cache/apt}# seront copiés dans le volume persistant. À partir de
ce moment, tous les changements dans ces répertoires seront stockés dans le
volume persistant. Veuiller remarquer que les chemins répertoriés dans le
fichier #{persistence.conf}# ne peuvent pas contenir d'espaces ou d'éléments
spéciaux #{.}# et #{..}#. En outre, ni #{/lib}#, #{/lib/live}# (ou un de
leurs sous-répertoires), ni #{/}# ne peuvent être rendus persistants en
utilisant des montages personnalisés. Comme solution à cette limitation,
vous pouvez ajouter #{/ union}# à votre fichier #{persistence.conf}# pour
obtenir une persistance complète.

3~ Utilisation de plusieurs dispositifs de persistance

Il existe différentes méthodes d'utilisation de multiples dispositifs de
persistance pour les différents cas d'utilisation. Par exemple, utiliser
plusieurs dispositifs à la fois ou en sélectionner un seul, entre plusieurs,
à des fins très spécifiques.

Plusieurs volumes overlays différents (avec leurs propres fichiers
#{persistence.conf}#) peuvent être utilisés au même temps, mais si plusieurs
volumes rendent le même répertoire persistant, un seul d'entre eux sera
utilisé. Si les deux sont «imbriqués» (un est un sous-répertoire de l'autre)
le premier sera monté avant le second de sorte qu'aucun ne sera caché par
l'autre. Monter des éléments personnalisés imbriqués est problématique s'ils
sont énumérés dans le même fichier #{persistence.conf}#. Voir la page de
manuel persistence.conf(5) pour savoir comment gérer ce cas si vous en avez
vraiment besoin (remarque: ce n'est généralement pas le cas).

Un cas d'utilisation possible: Si vous souhaitez stocker les données de
l'utilisateur, c'est-à-dire #{/home}# et les données du superutilisateur,
c'est-à-dire #{/root}# dans des partitions différentes, créer deux
partitions avec l'étiquette #{persistence}# et ajouter un fichier
#{persistence.conf}# dans chacun comme ça #{# echo "/home" >
persistence.conf}# pour la première partition qui permettra de sauver les
fichiers de l'utilisateur et #{# echo "/root" > persistence.conf}# pour la
seconde partition qui permettra de stocker les fichiers du
superutilisateur. Enfin, utiliser le paramètre d'amorçage #{persistence}#.

Si un utilisateur a besoin de stockages persistants multiples du même type
pour différents endroits ou essais, tel que #{private}# et #{work}#, le
paramètre de démarrage #{persistence-label}# utilisé en conjonction avec le
paramètre de démarrage #{persistence}# permettra de multiples mais uniques
supports persistants. Dans le cas où un utilisateur voudrait utiliser une
partition persistante étiquetée #{private}#, pour des données personelles
comme les marque-pages du navigateur ou d'autres types, il utiliserait les
paramètres de démarrage: #{persistence}# #{persistence-label=private}#. Et
pour stocker des données liées au travail, comme des documents, des projets
de recherche ou d'autres types, il utiliserait les paramètres de démarrage:
#{persistence}# #{persistence-label=work}#.

Il est important de se rappeler que chacun de ces volumes, #{private}# et
#{work}#, a également besoin d'un fichier #{persistence.conf}# dans sa
racine. La page de manuel live-boot contient plus d'informations sur la
façon d'utiliser ces étiquettes avec des noms ancients.

3~ Utilisation de la persistance avec chiffrement

Utiliser la persistance signifie que certaines données sensibles peuvent
être exposées au risque. Surtout si les données persistantes sont stockées
sur un dispositif portable tel qu'une clé USB ou un disque dur
externe. C'est quand le chiffrement est plus pratique. Même si la procédure
complète peut paraître compliquée en raison du nombre d'étapes à suivre, il
est vraiment facile de manipuler des partitions chiffrées avec
live-boot. Pour utiliser *{luks}*, qui est le type de chiffrement pris en
charge, vous devez installer /{cryptsetup}/ tant sur la machine avec
laquelle vous créez la partition chiffrée et aussi dans le système live avec
lequel vous allez utiliser la partition persistante chiffrée.

Pour installer /{cryptsetup}/ sur votre machine:

code{

 # apt-get install cryptsetup

}code

Pour installer /{cryptsetup}/ dans votre système live, ajouter à vos listes
de paquets:

code{

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

}code

Une fois que vous avez votre système live avec /{cryptsetup}/, vous avez
essentiellement besoin de créer une nouvelle partition, la chiffrer et
démarrer avec les paramètres #{persistence}# et
#{persistence-encryption=luks}#. Nous aurions pu déjà anticipée cette étape
et ajoutée ces paramètres de démarrage selon la procédure habituelle:

code{

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

}code

Allons dans les détails pour tous ceux qui ne connaissent pas bien le
chiffrement. Dans l'exemple suivant, nous allons utiliser une partition sur
une clé usb qui correspond au dispositif #{/dev/sdc2}#. S'il vous plaît être
averti que vous devez déterminer quelle partition est celui que vous allez
utiliser dans votre cas particulier.

La première étape est de brancher votre clé usb et de déterminer quel
dispositif il est. La méthode recommandée pour lister les dispositifs dans
live-manual est utiliser #{ls -l /dev/disk/by-id}#. Après cela, créer une
nouvelle partition et la chiffrer avec un mot de passe comme suit:

code{

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

}code

Ensuite, ouvrir la partition luks dans le mappeur de dispositifs
virtuel. Utilisez n'importe quel nom que vous aimez. Nous utilisons *{live}*
ici à titre d'exemple:

code{

 # cryptsetup luksOpen /dev/sdc2 live

}code

La prochaine étape est de remplir le dispositif avec des zéros avant de
créer le système de fichiers:

code{

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

}code

Maintenant, nous sommes prêts à créer le système de fichiers. Notez que nous
ajoutons l'étiquette #{persistence}# de sorte que le dispositif est monté en
tant que magasin de persistance au moment du démarrage.

code{

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

}code

Pour continuer avec notre configuration, nous avons besoin de monter le
dispositif, par exemple dans #{/mnt}#.

code{

 # mount /dev/mapper/live /mnt

}code

Et créer le fichier #{persistence.conf}# à la racine de la partition. Ceci
est, comme expliqué précédemment, strictement nécessaire. Voir {Le fichier
persistence.conf}#persistence-conf.

code{

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

}code

Puis, démontez le point de montage:

code{

 # umount /mnt

}code

Et éventuellement, bien qu'il pourrait être un bon moyen de sécuriser les
données que nous venons d'ajouter à la partition, nous pouvons fermer le
dispositif:

code{

 # cryptsetup luksClose live

}code

Résumons la procédure. Jusqu'ici nous avons créé un système capable
d'utiliser le chiffrement, qui peut être copié sur une clé usb comme
expliqué dans {Copie d'une image ISO hybride sur une clé
USB}#copying-iso-hybrid-to-usb. Nous avons également créé une partition
chiffrée, qui peut être située dans la même clé USB pour le porter autour et
nous avons configuré la partition chiffrée pour être utilisée comme magasin
de persistance. Alors maintenant, nous avons seulement besoin de démarrer le
système live. Au moment du démarrage, live-boot nous demandera le mot de
passe pour monter la partition chiffrée à être utilisé pour la persistance.
