Table des matières

Live Build : création d'une image iso live personnalisée

Introduction

live-build est un ensemble de scripts qui permet de créer une image iso live personnalisée de Debian. Il n'est pas forcément évident de prendre cet outil en main, d'où le présent tuto !

Les avantages :

  1. Disposer de tous les logiciels désirés sur l'image iso
  2. Reproduire son environnement de travail (bureau, icônes, thème…)
  3. Réinstaller son système sans avoir à créer de sauvegarde (l'iso étant elle-même la sauvegarde !)
  4. Porter son système vers une autre architecture : 32 ou 64 bits (chose que l'on ne peut pas faire avec une sauvegarde…)


Alléchant, n'est-ce pas ?

Installation et documentation

On installe le jouet et sa doc (tant qu'à faire) :

apt-get install live-manual live-build

Pour consulter la doc, visitez le répertoire /usr/share/doc/live-manual/, vous la trouverez dans les formats suivants :

Faites en sorte de l'avoir toujours sous la main en créant un ou plusieurs raccourcis sur votre bureau par exemple, c'est une vrai mine d'or !

Bon, allez, au boulot !

Exemple représentatif

Le but à atteindre : obtenir un image iso légère pour faire de la navigation internet, avec votre profil iceweasel/firefox

1. Copie des exemples des 3 scripts principaux

live-build fournit essentiellement 3 commandes principales :

  1. lb config qui permet de définir les options de configuration globales de l'iso live que vous voulez créer.
  2. lb build qui se charge des différentes étapes de construction de ladite iso.
  3. lb clean qui nettoie le tout avant de passer à une nouvelle iso.

Pour simplifier les choses les mainteneurs du paquet nous fournissent des exemple tout prêts que l'on n'a plus qu'à copier et éditer en fonction de nos convenances.

On commence d'abord par créer un répertoire de travail dans lequel nous créons un premier répertoire de test où nous nous plaçons avec la commande cd :

cd ~
mkdir Live_Build_Work
cd Live_Build_Work
mkdir test_1
cd test_1

Maintenant qu'on est dedans, on va copier les 3 scripts dans un répertoire auto :

mkdir auto
cp /usr/share/doc/live-build/examples/auto/* auto/

2. Édition du script ''config''

On édite maintenant le script config de la manière suivante :

editor auto/config
editor lance votre éditeur de texte en mode console par défaut. À priori, si vous ne l'avez jamais défini manuellement, il s'agit de nano.
Pour en définir un autre :
update-alternatives --config editor

Vous pouvez bien sur mettre directement nano à la place de editor, ou bien un autre éditeur de texte que vous maîtrisez (vim, emacs…).

config
#!/bin/sh
 
lb config noauto \
    --architectures i386 \
    --linux-flavours "586 686-pae" \
    --linux-packages "linux-image" \
    --ignore-system-defaults \
    --bootappend-live "boot=live components autologin username=toto"
    "${@}"
Pour une image 64 bit, supprimez la ligne –linux-flavours et remplacez i386 par amd64.

Cela nous donnera une iso live “passe-partout”, car en 32 bit avec deux noyaux :

  1. un 586 pour les processeurs 32 bit simple coeur, et
  2. un 686-pae pour les 32 bits double coeur qui fonctionnera également avec les processeurs 64 bits.

Le nom de l'utilisateur sera toto (vous pouvez éventuellement remplacer par autre chose si vous n'aimez pas ce prénom).

La langue du système sera l'anglais, et le clavier sera en QWERTY. Pour franciser tout ça, voir : les options de boot.

3. Définition des paquets supplémentaires

Afin d'installer les paquets de votre choix dans votre iso live il suffit d'éditer le fichier config/packages-list/live.list.chroot ainsi :

editor config/packages-list/live.list.chroot

Et d'ajouter à la fin du fichier :

live.list.chroot
linux-image-586
linux-image-686-pae
task-lxde-desktop
icewesael-l10n-fr
Lorsque vous serez décidé à faire une iso 64 bit, veillez à remplacer linux-image-586 et linux-image-686-pae par linux-image-amd64.
Vous pouvez aussi les écrire les uns à la suite des autres, séparés par un espace.

Et si vous avez l'intention d'en mettre plusieurs, vous pouvez les répartir en plusieurs fichiers ayant comme extension : .list.chroot.

Par exemple : bureautique.list.chroot, system.list.chroot

4. Ajout de fichiers de configuration pour l'utilisateur live

Les fichiers de configuration d'un utilisateur contenus dans son répertoire personnel sont les fichiers cachés (commençant par un point : .) ou bien se trouvant dans un répertoire caché (même chose).
Les fichiers de configurations de votre profile iceweasel/firefox se trouvent donc dans le répertoire caché .mozilla.

Afin que l'utilisateur live (notre cher toto) en profite il va falloir créer un répertoire /etc/skel à l'intérieur du répertoire config/includes.chroot et copier notre .mozilla à l'intérieur.

mkdir -p config/includes.chroot/etc/skel

et

cp -r ~/.mozilla config/includes.chroot/etc/skel/

5. Création de l'iso

Ça y est, on a plus qu'à lancer la procédure de création (ça prendra environ assez longtemps…) :

lb build

Alors, c'était dur ?

Plus de configurations

Maintenant qu'on a découvert l'utilisation basique de live-build, on va voir quelques possibilités supplémentaires.

Moi je veux pas Lxde ! Je veux le même bureau que sur mon ordi !!!

Oui oui, ok, c'est bon, ça arrive, pas la peine de s'énerver… Tout d'abord, on nettoie :

lb clean
lb config
Avant de relancer lb config, il est bon de jeter un oeil à auto/config pour voir si on à rien à changer…

1. Éditer la liste des paquets supplémentaires

Si vous utilisez une police, des icônes, un thème, ou encore des plugins particuliers, il faut penser à les ajouter au live.list.chroot.

Par exemple, avec Xfce :

live.list.chroot
task-french-desktop
task-xfce-desktop
faenza-icon-theme
fonts-cantarell
murrine-themes
xfce4-plugin-whiskermenu

Ajouter les applications de votre choix bien entendu.

2. Importer les fichiers de configuration

Certaines application ont leur propre .bidule. Cependant, un grand nombre d'entre elles, ainsi que la plupart des configurations relatives au bureau (y compris le fond d'écran) sont dans le répertoire .config (vous pouvez allez jeter un coup d'oeil dedans si vous ne me croyez pas).

cp -r ~/.config config/includes.chroot/etc/skel/

Terminé !

lb build

Et si je veux installer des paquets .deb supplémentaires ?

C'est d'un facilité déconcertante : il suffit de les placer dans config/pacakges.chroot. Pensez à vérifier tout de même que les dépendances seront satisfaites…

Et pour que ça installe la même chose que sur l'iso ?

C'est simple : dans le script config rajoutez la ligne :

    --debian-installer live \

Vous verrez, lors de l'installation, après le partitionnement, au lieu de la traditionnelle installation du sytème de base puis du choix des logiciels, l'installateur copiera le contenu de l'iso.

C'est pas merveilleux ?!

Attention : lorsque vous serez amené à créer un nouvel utilisateur après avoir installé ce système, il prendra pour squelette le contenu du répertoire /etc/skel/ ! Ce qui signifie que le nouvel utilisateur aura accès à votre profil iceweasel/firefox contenant tous vots mots de passe (à moins que vous ne les ayez protégé par un mot de passe principal). Même chose pour votre profil chromium si vous utilisez ce navigateur.

Prenez donc soin de faire le ménage dans le répertoire /etc/skel après avoir un installé votre système custom.

Je trouve ça lourd de renommer à chaque fois l'iso quand c'est fini

Aucun problème : dans le fichier config/build, remplacez live-image à la ligne 9 par : ma-super-debian-que-j-ai-fais-moi-et-qui-dechire-tout.

Les options de la commande config

Il y a beaucoup de chose à faire ici. Voyez plutôt :

man lb_config

On peut ajouter les options en ligne de commande, comme ceci (à chaque fois qu'on lance cette commande, les options se cumulent) :

lb config --une-option un_parametre

Ou bien tout mettre dans le fichier auto/config ; une option par une ligne, suivie d'un anti-slash ; comme ceci :

    --une-option un_parametre \

Parmi les options utiles :

Les options de boot

L'option –bootappend-live de la commande config à elle seule vous permets d'accéder à certains paramétrages très intéressants.
Voici quelques options utiles que vous pouvez ajouter à la suite dans votre fichier config (tout sur une ligne) :

Importation de fichiers et de répertoires

Il faut savoir que tout fichier que vous placez dans le répertoire config/includes.chroot se retrouvera à la racine du système de votre image iso. On peut donc importer, par exemple, un fichier de configuration global contenu dans /etc, comme /etc/bash.bashrc. Il faudra alors faire comme suit :

mkdir config/includes.chroot/etc
cp /etc/bash.bashrc /config/includes.chroot/etc/
Le répertoire /etc/skel - celui que l'on a peuplé plus haut - sert de “squelette” lors la création de l'utilisateur live : tout ce qui a été déposé à cet emplacement se retrouvera dans son répertoire personnel. C'est pour cela qu'il fallait créer un répertoire /etc/skel à l'intérieur de includes.chroot. Il ne faut donc pas créer de répertoire /home/toto comme on pourrait se l'imaginer, mais utiliser la méthode décrite plus haut.

Les hooks

Les hooks sont des scripts qui s'effectuent à un moment précis d'une procédure dans un but de personnalisation.

Vos hooks doivent se trouver dans le répertoire config/hooks (il est déjà rempli avec un certain nombre de hooks par défaut après l'exécution de lb config.
Ils doivent :

  1. commencer par un numéro, afin qu'ils soient exécuter dans un ordre précis (commencez par 1000- puis 1001-…) ;
  2. porter un extension .hook.chroot ou .hook.binary selon l'étape à laquelle vous voulez qu'ils s'exécutent.

Liens

Tutos sur d'autres sites (attention, certains ne fonctionnent plus sous jessie !) :