Manuel Live Systems

À propos

1. À propos de ce manuel

1.1 Pour les impatients
1.2 Terminologie
1.3 Auteurs
1.4 Contribuer à ce document
1.4.1 Appliquer des modifications
1.4.2 Traduction

2. À propos du Live Systems Project

2.1 Motivation
2.1.1 Ce qui ne va pas avec les systèmes live actuels
2.1.2 Pourquoi créer notre propre système live?
2.2 Philosophie
2.2.1 Seulement des paquets inchangés de Debian «main»
2.2.2 Pas de configuration des paquets du système live
2.3 Contact

Utilisateur

3. Installation

3.1 Exigences
3.2 Installation de live-build
3.2.1 À partir du dépôt Debian
3.2.2 À partir du code source
3.2.3 À partir des instantanés
3.3 Installation de live-boot et live-config
3.3.1 À partir du dépôt Debian
3.3.2 À partir du code source
3.3.3 À partir des instantanés

4. Les bases

4.1 Qu'est-ce qu'un système live?
4.2 Téléchargement des images précompilées
4.3 Utiliser le constructeur web d'images live
4.3.1 Utilisation du constructeur web et avertissements
4.4 Premières étapes: la construction d'une image ISO hybride
4.5 Utilisation d'une image ISO hybride live
4.5.1 Graver une image ISO sur un support physique
4.5.2 Copie d'une image ISO hybride sur une clé USB
4.5.3 Utilisation de l'espace disponible sur une clé USB
4.5.4 Démarrer le support live
4.6 Utiliser une machine virtuelle pour les tests
4.6.1 Test d'une image ISO avec QEMU
4.6.2 Test d'une image ISO avec VirtualBox
4.7 Construire et utiliser une image HDD
4.8 Construction d'une image netboot
4.8.1 Serveur DHCP
4.8.2 Serveur TFTP
4.8.3 Serveur NFS
4.8.4 Guide pratique pour expérimenter avec une image Netboot
4.8.5 Qemu
4.9 Webbooting
4.9.1 Obtenir les fichiers webboot
4.9.2 Démarrer images webboot

5. Aperçu des outils

5.1 Le paquet live-build
5.1.1 La commande lb config
5.1.2 La commande lb build
5.1.3 La commande lb clean
5.2 Le paquet live-boot
5.3 Le paquet live-config

6. Gestion d'une configuration

6.1 Gérer les modifications de la configuration
6.1.1 Pourquoi utiliser des scripts auto? Que font-ils?
6.1.2 Utiliser les scripts auto d'exemple
6.2 Cloner une configuration publiée via Git

7. Vue d'ensemble de la personnalisation

7.1 Configuration pendant la construction vs. l'amorçage
7.2 Étapes de la construction
7.3 Supplément lb config avec des fichiers
7.4 Tâches de personnalisation

8. Personnalisation de l'installation de paquets

8.1 Sources des paquets
8.1.1 Distribution, zones d'archive et mode
8.1.2 Miroirs de distribution
8.1.3 Miroirs de distribution utilisés lors de la construction
8.1.4 Miroirs de distribution utilisés pendant l'exécution
8.1.5 Dépôts additionnels
8.2 Choisir les paquets à installer
8.2.1 Listes de paquets
8.2.2 Utilisation des métapaquets
8.2.3 Listes de paquets locaux
8.2.4 Listes de paquets locaux pour l'étape binary
8.2.5 Listes de paquets générées
8.2.6 Utiliser des conditions dans les listes de paquets
8.2.7 Suppression de paquets lors de l'installation
8.2.8 Tâches de bureau et de langue
8.2.9 Version et type de noyau
8.2.10 Noyaux personnalisés
8.3 Installation de paquets modifiés ou tiers
8.3.1 Utiliser packages.chroot pour installer des paquets personnalisés
8.3.2 Utiliser un dépôt APT pour installer des paquets personnalisés.
8.3.3 Les paquets personnalisés et APT
8.4 Configuration d'APT pendant la construction
8.4.1 Choisir apt ou aptitude
8.4.2 Utilisation d'un proxy avec APT
8.4.3 Régler APT pour économiser de l'espace
8.4.4 Passer des options à apt ou aptitude
8.4.5 APT pinning

9. Personnalisation des contenus

9.1 Includes
9.1.1 Live/chroot local includes
9.1.2 Binary local includes
9.2 Hooks
9.2.1 Live/chroot local hooks
9.2.2 Hooks pendant le démarrage
9.2.3 Binary local hooks
9.3 Préconfigurer questions de debconf

10. Personnalisation des comportements pendant l'exécution

10.1 Personnalisation de l'utilisateur live
10.2 Personnalisation des paramètres régionaux et de la langue
10.3 Persistance
10.3.1 Le fichier persistence.conf
10.3.2 Utilisation de plusieurs dispositifs de persistance
10.4 Utilisation de la persistance avec chiffrement

11. Personnalisation de l'image binaire

11.1 Chargeurs d'amorçage
11.2 Métadonnées ISO

12. Personnalisation du contenu pour l'installateur Debian

12.1 Types d'installateur Debian
12.2 Personnalisation de l'installateur Debian par préconfiguration
12.3 Personnalisation de contenu pour l'Installateur Debian

Projet

13. Contribuer au projet

13.1 Faire des changements

14. Signaler des bogues

14.1 Problèmes connus
14.2 Reconstruire à partir de zéro
14.3 Utiliser des paquets mis à jour
14.4 Recueillir l'information
14.5 Isoler le cas qui échoue, si possible
14.6 Utiliser le paquet adéquat pour rapporter un bogue
14.6.1 Pendant la construction durant l'amorçage
14.6.2 Pendant la construction durant l'installation de paquets
14.6.3 Pendant le démarrage
14.6.4 Pendant l'exécution
14.7 Effectuer une recherche
14.8 Où rapporter les bogues

15. Style du code

15.1 Compatibilité
15.2 Indentation
15.3 Adaptateur
15.4 Variables
15.5 Autres

16. Procédures

16.1 Évolutions majeures
16.2 Évolutions mineures
16.2.1 Dernière évolution mineure d'une version Debian
16.2.2 Modèle pour l'annonce d'une évolution mineure

17. Dépôts Git

17.1 Gestion de multiples dépôts

Exemples

18. Exemples

18.1 Utiliser les exemples
18.2 Tutoriel 1: Une image par défaut
18.3 Tutoriel 2: Un utilitaire d'un navigateur Web
18.4 Tutoriel 3: Une image personnalisée
18.4.1 Première révision
18.4.2 Deuxième révision
18.5 Un client kioske VNC
18.6 Une image de base pour une clé USB de 128 Mo
18.7 Un bureau GNOME localisé avec un installateur

Appendix

19. Guide de style

19.1 Lignes directrices pour les auteurs
19.1.1 Caractéristiques linguistiques
19.1.2 Procédures
19.2 Lignes directrices pour les traducteurs
19.2.1 Conseils de traduction

Metadata

Manuel Live Systems

Exemples

18. Exemples

Ce chapitre présente des exemples de constructions pour des cas d'utilisation spécifiques avec des systèmes live. Si vous débutez dans la construction de vos propres images des systèmes live, nous vous recommandons de regarder d'abord les trois tutoriels à la suite car chacun d'entre eux enseigne de nouvelles techniques qui vous aideront à utiliser et à comprendre les exemples restants.

18.1 Utiliser les exemples

Pour utiliser ces exemples, vous avez besoin d'un système pour les construire qui doit répondre aux exigences énumérées dans Exigences et sur lequel live-build est installé comme décrit dans Installation de live-build.

Notez que, pour des raisons de concision, dans ces exemples, nous n'indiquons pas de miroir local à utiliser pour la construction. Vous pouvez accélérer considérablement les téléchargements si vous utilisez un miroir local. Vous pouvez indiquer ces options lorsque vous utilisez lb config, tel que décrit dans Miroirs de distribution utilisés pendant la construction, ou pour plus de commodité, fixez par défaut votre système de construction dans /etc/live/build.conf. Il suffit de créer ce fichier et de définir les variables LB_MIRROR_* correspondantes à votre miroir préféré. Tous les autres miroirs utilisés dans la construction seront choisis par défaut à partir de ces valeurs. Par exemple:

LB_MIRROR_BOOTSTRAP="http://mirror/debian/"
LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security/"
LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-updates/"

18.2 Tutoriel 1: Une image par défaut

Cas d'utilisation: Créer une image simple d'abord, en apprenant les bases de live-build.

Dans ce tutoriel, nous construirons une image ISO hybride par défaut contenant uniquement des paquets de base (pas de Xorg) et quelques paquets de prise en charge live, en guise de premier exercice dans l'utilisation de live-build.

Vous ne pouvez pas faire plus simple que cela:

$ mkdir tutorial1 ; cd tutorial1 ; lb config

Examinez le contenu du répertoire config/ si vous le souhaitez. Vous verrez stockés ici une arborescence de configuration, prête à être personnalisée ou, dans ce cas, utilisée immédiatement pour construire une image par défaut.

Maintenant, en tant que superutilisateur, construisez l'image en enregistrant un journal avec tee.

# lb build 2>&1 | tee build.log

En supposant que tout se passe bien, après un certain temps, le répertoire courant contiendra live-image-i386.hybrid.iso. Cette image ISO hybride peut être démarrée directement dans une machine virtuelle comme décrit dans Test d'une image ISO avec QEMU et Test d'une image ISO avec VirtualBox, ou bien copiée sur un support optique ou un périphérique USB comme décrit dans Graver une image ISO sur un support physique et Copie d'un image ISO hybride sur une clé USB, respectivement.

18.3 Tutoriel 2: Un utilitaire d'un navigateur Web

Cas d'utilisation: Créer l'image d'un utilitaire de navigation Web, en apprenant à appliquer des personnalisations.

Dans ce tutoriel, nous allons créer une image utilisable comme un utilitaire de navigation web, ce qui servira d'introduction à la personnalisation d'images live.

$ mkdir tutorial2
$ cd tutorial2
$ lb config
$ echo "task-lxde-desktop iceweasel" >> config/package-lists/my.list.chroot
$ lb config

Notre choix de LXDE pour cet exemple reflète notre volonté de fournir un environnement de bureau minimal, puisque le but de l'image est l'utilisation unique que nous avons à l'esprit, le navigateur web. On pourrait aller encore plus loin et offrir une configuration par défaut pour le navigateur web dans config/includes.chroot/etc/iceweasel/profile/, ou des paquets de prise en charge supplémentaires pour visualiser différents types de contenu web, mais nous laissons cela en exercice pour le lecteur.

Construisez l'image, encore une fois en tant que superutilisateur, et gardez un journal comme dans Tutoriel 1:

# lb build 2>&1 | tee build.log

Encore une fois, vérifiez que l'image est OK et faites un test, comme dans Tutoriel 1:

18.4 Tutoriel 3: Une image personnalisée

Cas d'utilisation: Créer un projet pour construire une image personnalisée, contenant vos logiciels préférés à emporter avec vous sur une clé USB où que vous alliez, et évoluant dans des révisions successives selon les changements de vos besoins et de vos préférences.

Puisque nous allons changer notre image personnalisée pendant un certain nombre de révisions, et que nous voulons suivre ces changements, essayer des choses expérimentalement et éventuellement les annuler si les choses ne fonctionnent pas, nous garderons notre configuration dans le populaire système de contrôle de version git. Nous allons également utiliser les meilleures pratiques d'autoconfiguration via auto scripts tel que décrit dans Gestion d'une configuration.

18.4.1 Première révision

$ mkdir -p tutorial3/auto
$ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/
$ cd tutorial3

Éditez auto/config comme suit:

#!/bin/sh

lb config noauto \
     --architectures i386 \
     --linux-flavours 686-pae \
     "${@}"

Exécutez lb config pour générer l'arbre de configuration, en utilisant le script auto/config qu'on a créé:

$ lb config

Remplissez maintenant votre liste de paquets locaux:

$ echo "task-lxde-desktop iceweasel xchat" >> config/package-lists/my.list.chroot

Tout d'abord, --architectures i386 assure que sur notre système de construction amd64, nous construisons une version de 32 bits qui peut être utilisée sur la plupart des machines. Deuxièmement, nous utilisons --linux-flavours 686-pae parce que nous ne prévoyons pas d'utiliser cette image sur des systèmes très anciens. Troisièmement, nous avons choisi le métapaque de la tâche lxde pour nous donner un bureau minimal. Et enfin, nous avons ajouté deux premiers paquets préférés: iceweasel et xchat.

Maintenant, construisez l'image:

# lb build

Notez que contrairement aux deux premiers tutoriels, nous n'avons plus besoin de taper 2>&1 | tee build.log parce que cela est maintenant inclus dans auto/build.

Une fois que vous avez testé l'image (comme dans Tutoriel 1) et vous êtes satisfait de son fonctionnement, il est temps d'initialiser notre dépôt git, en n'ajoutant que les scripts auto que nous avons juste créés, puis de faire le premier commit:

$ git init
$ cp /usr/share/doc/live-build/examples/gitignore .gitignore
$ git add .
$ git commit -m "Initial import."

18.4.2 Deuxième révision

Dans cette révision, nous allons nettoyer à partir de la première construction, ajouter le paquet vlc à notre configuration, reconstruire, tester et faire le commit.

La commande lb clean va nettoyer tous les fichiers générés par la construction précédente à l'exception du cache, ce qui évite d'avoir à retélécharger les paquets. Cela garantit que la commande lb build suivante exécutera à nouveau toutes les étapes pour régénérer les fichiers de notre nouvelle configuration.

# lb clean

Ajoutez maintenant le paquet vlc à votre liste de paquets locaux dans config/package-lists/my.list.chroot:

$ echo vlc >> config/package-lists/my.list.chroot

Construisez à nouveau:

# lb build

Testez et, quand vous êtes satisfait, faites le commit de la prochaine révision:

$ git commit -a -m "Ajout du lecteur de média vlc."

Bien sûr, des changements plus compliqués de la configuration sont possibles, comme l'ajout de fichiers dans les sous-répertoires de config/. Quand vous livrez de nouvelles révisions, prenez soin de ne pas modifier à la main ou d'envoyer dans le dépôt les fichiers de niveau supérieur dans config contenant les variables LB_*, car ce sont aussi des produits de lacreation et ils sont toujours nettoyés par lb clean et recréés avec lb config via leurs scripts auto respectifs.

Nous sommes arrivés à la fin de notre série de tutoriels. Alors que de nombreux types de personnalisations sont possibles, même en n'utilisant que les fonctionnalités explorées dans ces exemples simples, une variété presque infinie d'images différentes peut être crée. Les autres exemples de cette section couvrent plusieurs autres cas d'utilisation tirés des expériences recueillies chez les utilisateurs des systèmes live.

18.5 Un client kioske VNC

Cas d'utilisation: Créer une image avec live-build pour démarrer directement sur un serveur VNC.

Créez un répertoire de construction et créez une configuration à l'intérieur, désactivez «recommends» pour faire un système minimal. Puis créez deux listes initiales de paquets: la première générée par un script fourni par live-build nommée Packages (voir Générer listes de paquets), et la seconde incluant xorg, gdm3, metacity et xvnc4viewer.

$ mkdir vnc-kiosk-client
$ cd vnc-kiosk-client
$ lb config -a i386 -k 686-pae --apt-recommends false
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo "xorg gdm3 metacity xvnc4viewer" > config/package-lists/my.list.chroot

Comme il est expliqué dans Régler APT pour économiser de l'espace, il se peut que vous deviez ajouter quelques paquets recommandés pour faire fonctionner votre image correctement.

Une façon facile d'énumérer les paquets recommendés est d'utiliser apt-cache. Par exemple:

$ apt-cache depends live-config live-boot

Dans cet exemple, nous avons découvert que nous devions ré-inclure plusieurs paquets recommandés par live-config et live-boot: user-setup pour l'autologin et sudo un logiciel essentiel pour arrêter le système. En outre, il pourrait être utile d'ajouter live-tools pour copier l'image dans la RAM et eject pour éjecter le support live. Alors:

$ echo "live-tools user-setup sudo eject" > config/package-lists/recommends.list.chroot

Après cela, créez le répertoire /etc/skel dans config/includes.chroot avec un fichier .xsession personnalisé pour l'utilisateur par défaut qui va lancer metacity et xvncviewer, en reliant le port 5901 sur un serveur à 192.168.1.2:

$ mkdir -p config/includes.chroot/etc/skel
$ cat > config/includes.chroot/etc/skel/.xsession << EOF
#!/bin/sh

/usr/bin/metacity &
/usr/bin/xvncviewer 192.168.1.2:1

exit
EOF

Construire l'image:

# lb build

Amusez-vous bien!

18.6 Une image de base pour une clé USB de 128 Mo

Cas d'utilisation: Créer une image par défaut avec certains composants supprimés afin de l'adapter sur une clé USB de 128 Mo avec un peu d'espace laissé pour l'utiliser à votre convenance.

Pour l'optimisation d'une image adaptée à la dimension de certains supports, vous avez besoin de comprendre le compromis que vous faites entre la taille et la fonctionnalité. Dans cet exemple, nous ne réduisons la taille que pour faire place aux éléments supplémentaires dans la limite de 128 Mo, mais en évitant de détruire l'intégrité des paquets contenus, telle que la purge des données de localisation via le paquet localepurge, ou d'autres optimisations "intrusives". On notera en particulier que nous utilisons --debootstrap-options pour créer un système minimal à partir de zéro.

$ lb config -k 486 --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

Pour faire que l'image fonctionne correctement, nous devons ajouter à nouveau au moins deux paquets recommandés qui sont laissés de côté par l'option --apt-recommends false. Voir Régler APT pour économiser de l'espace

$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

Maintenant, construisez l'image de la manière habituelle:

# lb build 2>&1 | tee build.log

Sur le système de l'auteur au moment de l'écriture, la configuration ci-dessus produisait une image de 77 Mo. Cela se compare favorablement avec l'image de 177 Mo produite par la configuration par défaut dans Tutoriel 1.

La plus grande source d'économie d'espace ici, en comparaison avec la construction d'une image par défaut sur une architecture i386, est de sélectionner uniquement la saveur du noyau 486 au lieu de la valeur par défaut -k "486 686-pae". Laisser tomber les index d'APT avec --apt-indices false permet aussi d'économiser une bonne quantité d'espace, le compromis étant que vous devez faire apt-get update avant d'utiliser apt dans le système live. Abandonner les paquets recommandés avec --apt-recommends false économise de l'espace supplémentaire, au détriment de certains paquets dont vous vous attendriez autrement qu'ils soient là. --debootstrap-options "--variant=minbase" construit un système minimal dès le début. L'utilisation de --firmware-chroot false n'inclut pas automatiquement les paquets de micrologiciels. Finalement, --memtest none prévient l'installation d'un testeur de mémoire.

Remarque: Un système minimal peut également être obtenu en utilisant des hooks comme par exemple le stripped.hook.chroot dans /usr/share/doc/live-build/examples/hooks, il peut gagner de petites quantités supplémentaires d'espace et produire une image de 62 Mo. Cependant, il le fait par l'élimination de la documentation et d'autres fichiers des paquets installés sur le système. Cela porte atteinte à l'intégrité de ces paquets et, comme averti par le commentaire d'en-tête, cela peut avoir des conséquences imprévues. C'est pourquoi l'utilisation de debootstrap est la méthode recommandée pour atteindre cet objectif.

18.7 Un bureau GNOME localisé avec un installateur

Cas d'utilisation: Créer une image de bureau GNOME, localisée pour la Suisse et incluant un installateur.

Nous voulons faire une image iso-hybrid pour l'architecture i386 en utilisant notre bureau préféré, dans ce cas, GNOME, contenant tous les paquets qui seraient installés par l'installateur Debian standard pour GNOME.

Notre premier problème est la découverte des noms des tâches appropriées. Actuellement, live-build ne peut pas aider à faire cela. Alors que nous pourrions être chanceux et trouver ces noms par essais et erreurs, il existe un outil, grep-dctrl, qui peut être utilisé pour découvrir les descriptions des tâches dans tasksel-data. Pour la préparation, assurez-vous d'avoir ces deux outils:

# apt-get install dctrl-tools tasksel-data

Maintenant, nous pouvons rechercher les tâches appropriées, d'abord avec:

$ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german

Par cette commande, nous découvrons que la tâche est appelée, assez clairement, german. Maintenant, pour trouver les tâches liées:

$ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german-desktop
Task: german-kde-desktop

Pendant le démarrage, nous allons générer la locale de_CH.UTF-8 et sélectionner la disposition de clavier ch. Maintenant, nous allons mettre les morceaux ensemble. En nous rappelant grâce à Utilisation des métapaquets que les métapaquets sont préfixés task-, nous précisons ces paramètres de la langue pendant l'amorçage, puis nous ajoutons les paquets de priorité standard et tous nos métapaquets découverts à notre liste de paquets comme suit:

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
     -a i386 \
     -k 486 \
     --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch" \
     --debian-installer live
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot
$ echo debian-installer-launcher >> config/package-lists/installer.list.chroot

Notez que nous avons inclus le paquet debian-installer-launcher pour lancer l'installateur à partir du bureau live, nous avons également précisé le noyau 486, parce qu'il est actuellement nécessaire faire que l'installateur et le noyau du système live coïncident pour que le lanceur fonctionne correctement.