: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-config 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.