Manuel Debian Live

À 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 projet Debian Live

2.1 Motivation
2.1.1 Quel est le problème 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 c'est un système live?
4.2 Premières étapes: la construction d'une image ISO hybride
4.3 Utilisation d'une image ISO hybride live
4.3.1 Graver une image ISO sur un support physique
4.3.2 Copie d'une image ISO hybride sur une clé USB
4.3.3 Démarrer le support live
4.4 Utiliser une machine virtuelle pour les tests
4.4.1 Test d'une image ISO avec QEMU
4.4.2 Test d'une image ISO avec virtualbox-ose
4.5 Construction d'une image HDD
4.6 Utiliser une image HDD
4.6.1 Test d'une image HDD avec Qemu
4.6.2 Utilisation de l'espace disponible sur une clé USB
4.7 Construction d'une image netboot
4.7.1 Serveur DHCP
4.7.2 Serveur TFTP
4.7.3 Serveur NFS
4.7.4 Guide pratique pour expérimenter avec une image Netboot
4.7.5 Qemu
4.7.6 VMWare Player

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 Traiter les modifications de configuration
6.1.1 Pourquoi utiliser des scripts auto? Que font-ils?
6.2 Utilisez scripts auto d'exemple
6.3 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, archive areas et mode
8.1.2 Miroirs de distribution
8.1.3 Miroirs de distribution utilisés au temps de construction
8.1.4 Miroirs de distribution utilisés au moment de 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 Using metapackages
8.2.3 Listes de paquets locaux
8.2.4 Listes locaux de paquets binaires
8.2.5 Générer listes de paquets
8.2.6 Utilisant des conditionnels dans les listes de paquets
8.2.7 Tâches de bureau et de la langue
8.3 Installation des paquets modifiés ou de tiers
8.3.1 Utilisant packages.chroot pour installer 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 au moment de la construction
8.4.1 Choisir apt ou aptitude
8.4.2 Utilisation d'un proxy avec APT
8.4.3 Tweaking APT to save space
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 au moment du démarrage
9.2.3 Binary local hooks
9.3 Préconfigurer questions de debconf

10. Personnalisation des comportements au moment de 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 live-persistence.conf
10.3.2 Utilisation de plusieurs dispositifs de persistance

11. Personnalisation de l'image binaire

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

12. Personnalisation de l'installateur Debian

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

Projet

13. Rapporter des bogues

13.1 Problèmes connus
13.2 Reconstruire à partir de zéro
13.3 Utilisez paquets mis à jour
13.4 Recueillir l'information
13.5 Isoler le cas qui échoue, si possible
13.6 Utilisez le paquet adéquat pour rapporter le bogue
13.6.1 Au moment de la construction tandis l'amorçage
13.6.2 Au moment de la construction tandis l'installation de paquets
13.6.3 Au moment du démarrage
13.6.4 Au moment de l'exécution
13.7 Faire les recherches
13.8 Où rapporter les bogues

14. Style du code

14.1 Compatibilité
14.2 Indentation
14.3 Adaptateur
14.4 Variables
14.5 Autres

15. Procédures

15.1 Télécharger Udebs
15.2 Évolutions majeures
15.3 Èvolutions mineures
15.3.1 Dernière évolution mineure d'une version Debian
15.3.2 Modèle pour l'annonce d'une évolution mineure

Exemples

16. Exemples

16.1 En utilisant les exemples
16.2 Tutorial 1: Une image standard
16.3 Tutoriel 2: Un utilitaire de navigateur Web
16.4 Tutoriel 3: Une image personnalisée
16.4.1 Première révision
16.4.2 Deuxième révision
16.5 Un client Kiosk VNC
16.6 Une image de base pour une clé USB de 128M
16.7 Un bureau KDE localisé et installateur

Appendix

17. Style guide

17.1 Guidelines for authors
17.1.1 Linguistic features
17.1.2 Procedures
17.2 Guidelines for translators
17.2.1 Translation hints

Manuel Debian Live

Exemples

16. Exemples

Ce chapitre s'occupe d'exemples de constructions pour des cas d'utilisation spécifiques avec Debian Live. Si vous êtes nouveau avec la construction de vos propres images Debian Live, nous vous recommandons d'abord regarder les trois tutoriels en séquence, parce que chacun enseigne nouvelles techniques qui vous aideront à utiliser et à comprendre les exemples restants.

16.1 En utilisant les exemples

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

Notez que, pour des raisons de concision, dans ces exemples, nous ne spécifions pas un 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 spécifier les options lorsque vous utilisez lb config, tel que décrit dans Miroirs de distribution utilisés au temps de 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 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"

16.2 Tutorial 1: Une image standard

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

Dans ce tutoriel, nous construirons une image Debian Live ISO hybride par défaut contenant uniquement paquets de base (pas de Xorg) et quelques paquets Debian de soutien live, comme un premier exercice en utilisant live-build.

Vous ne pouvez pas obtenir rien 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, pour être personnalisee ou, dans ce cas, utiliser immédiatement pour construire une image par défaut.

Maintenant, en tant que superutilisateur, construire 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 binary.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-ose, 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.

16.3 Tutoriel 2: Un utilitaire de navigateur Web

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

Dans ce tutoriel, nous allons créer une image utilisable comme un utilitaire de navigateur Web, en servant d'introduction à la personnalisation d'images Debian Live.

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

Notre choix de LXDE pour cet exemple reflète notre volonté de fournir un environnement de bureau minime, puisque le point 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 soutien supplémentaires pour visualiser différents types de contenu web, mais nous laissons cela comme un exercice pour le lecteur.

Construire l'image, encore une fois en tant que superutilisateur, garder un journal comme dans Tutoriel 1:

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

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

16.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 vos besoins et vos préférences changent.

Puisque nous allons changer notre image personnalisée pendant un certain nombre de révisions, et nous voulons suivre ces changements, d'essayer des choses expérimentalement et éventuellement de les revenir 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.

16.4.1 Première révision

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

Éditer auto/config pour lire 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 que vous avez crée:

$ lb config

Maintenant remplir 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. En seconde place, nous utilisons --linux-flavours 686-pae parce que nous ne prévoyons pas utiliser cette image sur des systèmes beaucoup plus anciens. En troisième lieu, nous avons choisi la tâche métapaquet lxde pour nous donner un bureau minimal. Et enfin, nous avons ajouté deux premiers paquets préférés: iceweasel et xchat.

Maintenant, construire 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 avec son fonctionnement, il est temps pour initialiser notre dépôt git, ajoutant que les scripts d'auto que nous avons juste créé, et ensuite faire le premier commit:

$ git init
$ git add auto
$ git commit -a -m "Initial import."

16.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, ça évite d'avoir à re-télécharger les paquets. Cela garantit que la lb build suivante ré-exécutera toutes les étapes pour régénérer les fichiers de notre nouvelle configuration.

# lb clean

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

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

Construire à nouveau:

# lb build

Tester, et quand vous soyez satisfaits, commit la prochaine révision:

$ git commit -a -m "Adding vlc media player."

Bien sûr, des changements plus compliqués à la configuration sont possibles, peut-être l'ajout de fichiers dans les sous-répertoires de config/. Quand vous livrez des nouvelles révisions, on doit prendre soin de ne pas modifier à la main ou envoyer au dépôt les fichiers de niveau supérieur dans config contenant variables LB_*, car ce sont aussi des produits de creation et sont toujours nettoyés par lb clean et re-créés avec lb config via leur respectives auto scripts.

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

16.5 Un client Kiosk VNC

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

Make a build directory and create an skeletal configuration inside it, disabling recommends to make a minimal system. And then create two initial package lists: the first one generated with a script provided by live-build named Packages (see Generated package lists), and the second one including xorg, gdm3, metacity and 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

As explained in Tweaking APT to save space you may need to re-add some recommended packages to make your image work properly.

An easy way to list recommends is using apt-cache. For example:

$ apt-cache depends live-config live-boot

In this example we found out that we had to re-include several packages recommended by live-config and live-boot: user-setup to make autologin work and sudo as an essential program to shutdown the system. Besides, it could be handy to add live-tools to be able to copy the image to RAM and eject to eventually eject the live media, So:

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

Créez le répertoire /etc/skel dans config/includes.chroot avec un fichier .xsession personnalisée pour l'utilisateur par défaut qui va lancer metacity et commencer 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 << END
#!/bin/sh

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

exit
END

Construire l'image:

# lb build

Amusez-vous bien!

16.6 Une image de base pour une clé USB de 128M

Cas d'utilisation: Créer une image standard avec certains composants éliminés afin de l'adapter sur une clé USB de 128M 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 réduisons la taille uniquement que pour faire place au matériel supplémentaire au sein d'une taille de 128M, mais sans faire rien pour 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". Afin de comprendre ce que le hook minimal.chroot fait, voir /usr/share/doc/live-build/examples/hooks

$ lb config -k 486 --apt-indices false --apt-recommends false --memtest none
$ cp /usr/share/doc/live-build/examples/hooks/minimal.chroot config/hooks

To make the image work properly, we must re-add, at least, two recommended packages which are left out by the --apt-recommends false option. See Tweaking APT to save space

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

Maintenant, construire 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 95Mbyte. Cela se compare favorablement avec l'image de 182Mbyte produite par la configuration par défaut dans Tutoriel 1.

The biggest space-saver here, compared to building a standard image on an i386 architecture system, is to select only the 486 kernel flavour instead of the default -k "486 686-pae". Leaving off APT's indices with --apt-indices false also saves a fair amount of space, the tradeoff being that you need to apt-get update before using apt in the live system. Dropping recommended packages with --apt-recommends false saves some additional space, at the expense of omitting some packages you might otherwise expect to be there, such as firmware-linux-free which may be needed to support certain hardware. --memtest none prevents the installation of a memory tester. And finally, the execution of the minimal.chroot hook removes some unused packages and files.

En utilisant d'autres hooks comme par exemple le hook stripped.chroot dans /usr/share/doc/live-build/examples/hooks, peut gagner de petites quantités supplémentaires d'espace et produire une image de 76MB. Mais c'est à vous de décider si la fonctionnalité qui est sacrifié à chaque optimisation de la taille vaut la perte de fonctionnalité.

16.7 Un bureau KDE localisé et installateur

Cas d'utilisation: Créer une image de bureau KDE, localisée pour le portugais brésilien 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, KDE, contenant tous les paquets qui seraient installés par l'installateur Debian standard pour KDE.

Notre premier problème est la découverte des noms des tâches appropriées. Actuellement, live-build ne peut pas aider à faire ça. Alors que nous pourrions être chanceux et trouver ce par essais et erreurs, il y a un outil, grep-dctrl, qui peut être utilisé pour découvrir les descriptions des tâches dans tasksel-data, de sorte à préparer, assurez-vous que vous avez ces deux choses:

# apt-get install dctrl-tools tasksel-data

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

$ grep-dctrl -FTest-lang pt_BR /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: brazilian-portuguese

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

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

At boot time we will generate the pt_BR.UTF-8 locale and select the pt-latin1 keyboard layout. Now let's put the pieces together. Recalling from Using metapackages that task metapackages are prefixed task-, we just specify these language boot parameters, then add standard priority packages and all our discovered task metapackages to our package list as follows:

$ mkdir live-pt_BR-kde
$ cd live-pt_BR-kde
$ lb config \
     -a i386 \
     -k 486 \
     --bootappend-live "locales=pt_BR.UTF-8 keyboard-layouts=pt-latin1" \
     --debian-installer live
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo task-kde-desktop task-brazilian-portuguese task-brazilian-portuguese-desktop \
     task-brazilian-portuguese-kde-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.