Live manual Debian Live

# Debian Live Manual

# Exemples

803

# 16. Exemples

804

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.

805

16.1 Utiliser les exemples

806

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.

807

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:

808

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

809

16.2 Tutoriel 1: Une image par défaut

810

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

811

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.

812

Vous ne pouvez pas faire plus simple que cela:

813

$ mkdir tutorial1 ; cd tutorial1 ; lb config

814

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.

815

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

816

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

817

Assuming all goes well, after a while, the current directory will contain `live-image-amd64.hybrid.iso`. This ISO hybrid image can be booted directly in a virtual machine as described in Testing an ISO image with Qemu and Testing an ISO image with VirtualBox, or else imaged onto optical media or a USB flash device as described in Burning an ISO image to a physical medium and Copying an ISO hybrid image to a USB stick, respectively.

818

16.3 Tutoriel 2: Un utilitaire d'un navigateur Web

819

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

820

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.

821

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

822

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.

823

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

824

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

825

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

826

16.4 Tutoriel 3: Une image personnalisée

827

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.

828

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.

829

16.4.1 Première révision

830

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

831

Éditez `auto/config` comme suit:

832

#!/bin/sh
lb config noauto \
--distribution stable \
"${@}"

833

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

834

$ lb config

835

Remplissez maintenant votre liste de paquets locaux:

836

$ echo "task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

837

First, `--distribution stable` ensures that ⌠stable} is used instead of the default {testing⌡. Second, we have added spice-vdagent for easier testing the image in qemu. And finally, we have added an initial favourite package: hexchat.

838

Maintenant, construisez l'image:

839

# lb build

840

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`.

841

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:

842

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

843

16.4.2 Deuxième révision

844

In this revision, we're going to clean up from the first build, replace the smplayer package with vlc package, rebuild, test and commit.

845

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.

846

# lb clean

847

Now install the vlc package before the lxde package chooses between smplayer, vlc and mplayer-gui in our local package list in `config/package-lists/my.list.chroot`:

848

$ echo "vlc task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

849

Construisez à nouveau:

850

# lb build

851

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

852

$ git commit -a -m "Replacing smplayer with vlc."

853

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.

854

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.

855

16.5 Un client kioske VNC

856

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

857

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.

858

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

859

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.

860

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

861

$ apt-cache depends live-config live-boot

862

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:

863

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

864

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`:

865

$ 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

866

Construire l'image:

867

# lb build

868

Amusez-vous bien!

869

16.6 A minimal image for a 512MB USB key

870

Use case: Create a default image with some components removed in order to fit on a 512MB USB key with a little space left over to use as you see fit.

871

When optimizing an image to fit a certain media size, you need to understand the tradeoffs you are making between size and functionality. In this example, we trim only so much as to make room for additional material within a 512MB media size, but without doing anything to destroy the integrity of the packages contained within, such as the purging of locale data via the localepurge package, or other such "intrusive" optimizations. Of particular note, we use `--debootstrap-options` to create a minimal system from scratch and `--binary image hdd` to create an image that can be copied to a USB key.

872

$ lb config --binary-image hdd --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

873

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

874

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

875

Additionally, you'll want to have network access, so another two recommended packages need to be re-added:

876

$ echo "ifupdown isc-dhcp-client" >> config/package-lists/recommends.list.chroot

877

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

878

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

879

On the author's system at the time of writing this, the above configuration produced a 298MiB image. This compares favourably with the 380MiB image produced by the default configuration in Tutorial 1, when `--binary-image hdd` is added.

880

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.

881

Note: A minimal system can also be achieved using hooks, like for example the `stripped.hook.chroot` hook found in `/usr/share/doc/live-build/examples/hooks`. It may shave off additional small amounts of space and produce an image of 277MiB. However, it does so by removal of documentation and other files from packages installed on the system. This violates the integrity of those packages and that, as the comment header warns, may have unforeseen consequences. That is why using a minimal debootstrap is the recommended way of achieving this goal.

882

16.7 Un bureau GNOME localisé avec un installateur

883

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

884

We want to make an iso-hybrid image using our preferred desktop, in this case GNOME, containing all of the same packages that would be installed by the standard Debian installer for GNOME.

885

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:

886

# apt-get install dctrl-tools tasksel-data

887

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

888

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

889

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

890

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

891

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:

892

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
--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

893

Note that we have included the debian-installer-launcher package to launch the installer from the live desktop.