Création d'une Debian Live personnalisée sur Clé USB

Écrit par freddec le 05/12/2008 complétée par LeDub 20/06/2009

Objectif de cette documentation

Ce tutoriel a pour objectif d'expliquer comment arriver à créer une distribution Debian-live personnalisée à embarquer sur une clé USB amorçable.

Il existe dans le projet debian live un utilitaire graphique nommé live-magic capable de réaliser très simplement des images magique de Debian.
Les images obtenues sont standards (Base, Kde, Gnome, XFCE etc…), peuvent contenir de quoi les installer sur disque dur mais ne disposent pas des paquets que je désire avoir (Openoffice.org, Gimp, gparted, iceweasel etc…)

J'ai donc décidé de me pencher sur les outils en ligne de commande qui permettent de faire ce que l'on désire.

J'ai passé plusieurs heures pour parvenir au résultat désiré (ou quasi), je me fends de ce petit tuto pour vous éviter de perdre du temps (et à titre de pense-bête personnel ! ).

Pré-requis

live-helper

La première chose à faire est d'installer le paquet qui gère les scripts de création. Il en existe une version pour les trois branches de Debian (Lenny, Squeeze et Sid). Voici le descriptif du paquet live-helper issu de apt-cache show live-helper

Description-fr: Scripts de construction pour Debian Live
 live-helper est un ensemble de scripts pour construire des images système
 de Debian Live.
 .
 L'idée à l'origine de live-helper est d'offrir une architecture qui utilise
 un répertoire de configuration pour automatiser et personnaliser tous les
 aspects de la construction d'une image Live.
 .
 Une introduction à live-helper est disponible dans la page de manuel
 live-helper(7).
Homepage: http://debian-live.alioth.debian.org/

Installons donc la bête

apt-get update && apt-get install live-helper

ou

aptitude update && aptitude install live-helper

Espace disque

live-helper va installer une Debian complète dans un répertoire chrooté puis la compresser en un fichier image d'une taille plus raisonnable.

Au plus fort du processus de construction (suivant la quantité de paquets à y inclure), la taille de ce répertoire pourra dépasser les 5 Go.

Prévoyez donc de disposer au minimum de 6 ou 7 Go sur la partition de travail

Vous voila prévenu :-)

Support USB

La taille de l'image obtenue est, elle aussi, fonction de ce que vous aurez décidé d'y mettre.

À titre d'exemple, une image basée sur XFCE à laquelle j'ajoute openoffice.org, The Gimp, k3b et divers autres bidules fait en sortie environ 650 Mo (voir plus loin pour la liste précise des paquets ajoutés)

Prévoyez donc au minimum une clé de 1 Go, l'idéal étant de 2Go (ou plus). L'espace restant pourra servir de partition de données.

Création de l'image

Préparation

  • Créer dans votre home un répertoire de travail (appelons le debian_live)
  • Allez y de ce pas
$ mkdir debian_live
$ cd debian_live
debian_live$ 

On va maintenant invoquer le programme live-helper au travers du script lh_config

lh_config

debian_live$ lh_config --bootappend-live "locale=fr_FR keyb=fr"

pour intégrer d'office la configuration des locales françaises.

Vous voilà en présence de deux répertoires (config et script) dans votre répertoire de travail consacré à live-helper. Celui qui nous intéresse est config, on s'y rend et regarde ce qu'il contient

debian_live$ cd config && ls -l

Ce qui nous donne en sortie :

-rw-r--r--  1 fred fred 4156 déc  6 20:28 binary
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_debian-installer
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_grub
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_local-debs
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_local-hooks
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_local-includes
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_local-packageslists
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_local-udebs
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_rootfs
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 binary_syslinux
-rw-r--r--  1 fred fred 1618 déc  6 20:28 bootstrap
-rw-r--r--  1 fred fred 1439 déc  6 20:28 chroot
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_apt
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-hooks
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-includes
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-packages
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-packageslists
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-patches
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_local-preseed
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 chroot_sources
-rw-r--r--  1 fred fred 2839 déc  6 20:28 common
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 includes
-rw-r--r--  1 fred fred  212 déc  6 20:28 source
drwxr-xr-x  2 fred fred 4096 déc  6 20:28 templates

Les fichiers qui nous intéressent et que l'on va adapter sont:

  • binary
  • bootstrap
  • chroot

Il est théoriquement possible, en passant des arguments à la commande lh_config, d'obtenir directement les fichiers ad hoc.

Pour ma part je n'y suis pas parvenu complètement !

  • Certains des paquets que je voulais ( option –packages) n'étaient pas pris en comptes
  • Je n'arrivais pas à imposer un miroir français pour le chargement des paquets (option –mirror-binary)

Je me suis donc penché sur ces fameux fichiers pour constater qu'ils sont parfaitement commentés et permettent de bien affiner les options.

Fichier binary

Voici les directives que j'ai modifiées :

Pour obtenir un fichier .img pour clé usb au lieu d'un fichier .iso pour live-cd

# $LH_BINARY_IMAGES: set image type
# (Default: iso)
LH_BINARY_IMAGES="usb-hdd"

Pour localiser le système en français

# $LH_BOOTAPPEND_LIVE: set boot parameters
# (Default: empty)
LH_BOOTAPPEND_LIVE="locale=fr_FR keyb=fr"
# $LH_BOOTAPPEND_INSTALL: set boot parameters
# (Default: empty)
LH_BOOTAPPEND_INSTALL=" -- ${LH_BOOTAPPEND_LIVE}"

Pour avoir un hostname (nom de machine) qui vous convienne, c'est cette variable à changer :

# $LH_HOSTNAME: set hostname
# (Default: debian)
LH_HOSTNAME="freddec_live"

Fichier bootstrap

Voici les directives que j'ai modifiées :

Pour pointer sur les miroirs fr de Debian

# $LH_MIRROR_BOOTSTRAP: set mirror to bootstrap from
# (Default: http://ftp.us.debian.org/debian/)
LH_MIRROR_BOOTSTRAP="http://ftp.fr.debian.org/debian/"
# $LH_MIRROR_CHROOT: set mirror to fetch packages from
# (Default: http://ftp.fr.debian.org/debian/)
LH_MIRROR_CHROOT="http://ftp.fr.debian.org/debian/"
[...]
# $LH_MIRROR_BINARY: set mirror which ends up in the image
# (Default: http://ftp.us.debian.org/debian/)
LH_MIRROR_BINARY="http://ftp.fr.debian.org/debian/"

Fichier chroot

Deux possibilités pour arriver à la la même chose : La version de barbu à coup de gvim 1)

- Pour construire une image à base de xfce et y ajouter la liste de paquets que je veux (malistelivecd)

# $LH_PACKAGES_LISTS: set package list to install
# (Default: standard)
LH_PACKAGES_LISTS="xfce malistelivecd"

La directive malistelivecd est expliquée au chapitre suivant

  • Les différentes types de liste pré-existante (ici xfce) sont consultables sous /usr/share/live-helper/lists
  • Tous ces fichiers comportent de nombreuses directives, je vous invite à les découvrir et à vous documenter depuis le site du projet Debian-Live

L'exécution de lh_config -p malistelivecd donne le même résultat !!

Ajouter une liste de paquet personnalisée

C'est extrêmement simple , lancez votre éditeur favori (kwrite, gedit, nano ou vim) et créez un fichier nommé ”malistelivecd” qui ressemble à celui-ci.

Cet exemple reprend la liste de paquets que j'ai ajoutés, libre à vous de l'adapter à vos besoins.

#la liste des paquets que j'ajoute à la liste de base xfce
#paquets complementaires pour xfce
thunar-archive-plugin thunar-media-tags-plugin thunar-volman
#Navigateur et Internet
iceweasel iceweasel-l10n-fr xchat 
#openoffice et bureautique
openoffice.org  openoffice.org-l10n-fr openoffice.org-help-fr kpdf 
#multimedia
grip  xfburn streamtuner libxine1 xine-ui k3b audacious 
#art graphique
scribus gimp xsane kooka
#utilitaire
usbview wajig gparted partimage htop
#fin de la liste

Enregistrez ce fichier dans le répertoire chroot_local_packagelists sous debian_live/config/chroot_local-packageslists/malistelivecd

Les paquets indispensables à ces derniers et que vous n'avez pas précisés (gimp-data par exemple) seront ajoutés par le respect des dépendances.

Ajout de paquets spécifiques

Il se peut que vous vouliez ajouter des paquets qui ne soient pas disponibles sur les miroirs officiels Debian (des paquets que vous avez compilés par exemple).

Il suffit de déposer les .deb des paquets dans le répertoire debian_live/config/chroot_local-packages/ pour qu'ils soient pris en compte et ajoutés au moment de la construction de l'image.

Pour ma part j'y ai rajouté ceux-ci (issus des miroirs Marillat)

  • le paquet lame (encodage mp3)
  • le paquet w32codecs (lecture des fichiers multimedia de “l'axe du mal” :-) )
  • le paquet libdvdcss2 (lecture des dvd honnêtement acquis)

lh_build

Nous voila prêt à lancer la construction de l'image. Passez dans une console en utilisateur root (su ou sudo selon votre système)

Attention il faut se placer correctement dans l'arborescence créée à la première étape, ici debian_live

debian_live# lh_build

C'est parti mon kiki…

Voici ce je crois avoir compris de la suite ! (que ceux qui connaissent me corrigent) Les scripts vont

  • chrooter un environnement dans le répertoire debian_live
  • Construire une Debian minimale
  • Vérifier la liste des paquets à installer
  • Télécharger ceux qui manquent
  • Les installer, les configurer

En fonction de la liste de paquets à installer et du débit de votre tuyau internet, cela risque de prendre un certain temps (et même un temps certain) Patience et longueur de temps …

À l'issue de cette étape il y aura une debian toute fraiche installée bien au chaud dans son chroot. (pas sa croute, quoique une Debian en Croûte pour le réveillon… LOL)

Cette Debian va ensuite être compressée en un fichier binary.img unique que vous retrouverez dans le répertoire debian_live.

C'est ce fichier que vous allez transférer sur votre clé usb. Mais avant cela, vérifions que tout ce que l'on veut est bien installé.

Pour cela: Ouvrez avec un éditeur de texte le fichier binary-package-list qui est apparu conjointement au fichier binary.img (binary-package-list ou quelques chose comme ça !, je n'en ai plus sous la main et j'ai oublié le nom exact :-( ) .

Ce fichier contient la liste de tous les paquets installés dans votre image, vérifiez y la présence des paquets de votre liste malistelivecd et ceux du répertoire chroot_local-packages.

lh_clean

Si vous n'êtes pas satisfait de votre image (typiquement: vous avez oublié LE paquet qu'il faut). Il n'est pas utile de tout refaire à zéro.

Commencez par ajouter/modifier votre fichier malistelivecd et au besoin les fichiers chroot, binary et bootstrap en fonction de vos désirs.

Puis, faites le ménage dans le chroot avec.

debian_live# lh_clean

Relancez, toujours en root la commande :

debian_live# lh_build

Et c'est reparti pour un tour… Au moins n'aurez vous pas besoin de re-télécharger plusieurs centaines de mégaoctets de paquets, ne seront chargés que ceux ajoutés à la liste ainsi que leurs dépendances.

Une fois satisfait, reste à passer à l'étape suivante.

Transfert sur support USB

La première chose à faire est de repérer avec certitude le /dev/ utilisé par le système pour identifier votre clé.

Avant de la brancher:

$ cat /proc/partition
 cat /proc/partitions
major minor  #blocks  name
   8     0   78150744 sda
   8     1   26234113 sda1
   8     2    9767520 sda2
   8     3    9767520 sda3
   8    16   78150744 sdb
   8    17     979933 sdb1
   8    18   19535040 sdb2
   8    19    9767520 sdb3

Puis après l'avoir branchée

cat /proc/partition
 cat /proc/partitions
major minor  #blocks  name
   8     0   78150744 sda
   8     1   26234113 sda1
   8     2    9767520 sda2
   8     3    9767520 sda3
   8     4   78150744 sdb
   8     5     979933 sdb1
   8     6   19535040 sdb2
   8     7    9767520 sdb3
   8    32    1951232 sdc
   8    33     666666 sdc1
   8    34    1277167 sdc2

On constate donc que ma clé occupe le /dev/sdc, reste plus qu'à y mettre l'image Debian-live

dd if=~/debian_live/binary.img of=/dev/sdc

  • Il s'agit bien de /dev/sdc qui représente le périphérique et non de /dev/sdc1 ou /dev/sdc2 qui représentent les partitions du périphérique.
  • Tous ce qui se trouve sur la clé sera irrémédiablement écrasé par la commande dd (partitions et données) Assurez vous de ne rien avoir de vital dessus !!!
  • De même, si vous vous plantez de /dev/ attention aux dégâts

Ajout d'une partition au support USB

En fonction de la taille de votre image et de la taille de votre clé, il vous reste surement pas mal d'espace disponible. (personnellement 1.3 Go sur une clé de 2 Go)

Vous pouvez donc en profiter pour créer une partition supplémentaire qui permettra de sauvegarder votre travail avant de clore votre session live.

Je vous laisse le choix des outils: fdisk, cfdisk ou gparted (mon choix personnel)

Utilisation de la clé

Assurez vous en vérifiant dans le bios (section boot) que la machine est bien configurée pour s'amorcer depuis un périphérique USB. Branchez votre clé, démarrez le PC, enjoy…

Astuces

Prévoir l'avenir et Faire le Ménage

Personnellement je fait une sauvegarde des fichiers du répertoire debian_live/config (chroot, binary, bootstrap) pour ne pas avoir à tout reprendre à zéro lorsque je ferai une nouvelle image.

Je nettoie ensuite mon home en virant le répertoire debian/live qui fait quelques Go !

Générer une image CD ou DVD

Il est possible de générer une image pour un support CD ou DVD. Pour cela, il faut change la variable LH_BINARY_IMAGES du fichier debian_live/config/binary de “usb-hdd” à “iso”.
Cette image pourra être gravée en sélectionnant graver une image iso de votre logiciel de gravure (k3b, brasero, xfburn)

Générer une image installable

live-helper offre la possibilité de générer une image qui puisse se comporter comme un CD magique et dont le contenu sera intégralement copié sur disque si on l'amorce avec l'option install. Pour ce faire la variable LH_DEBIAN_INSTALLER du fichier debian_live/config/binary doit passer de “disabled” à “live”. À l'amorce de votre système avec votre image sur CD, DVD ou clé, l'option install vous sera proposée et l'intégralité de votre image vivante sera copié sur le disque cible.

Lors de l'installation, une tentative de démontage du CD (ou DVD) sera en échec car il l'utilise encore !! Il suffit de choisir continuer pour que l'installation se termine sans autre problème

Une fois installé, le X de votre Debian sera en QWERTY, il vous faudra ajouter

Driver		"kbd"
Option		"XkbRules"	"xorg"
Option		"XkbLayout"	"fr"
Option		"XkbVariant"	"latin9"

à votre /etc/X11/xorg.conf puis relancer X

Pour conclure

Liens utiles

Remerciements

  • Merci à l'équipe Debian Live pour la qualité de son projet et de sa documentation. Même un zozo dans mon genre est capable de l'utiliser :-)
  • Merci à Debian d'exister
  • A Mélodie pour le lien sur le Howto éclair (qui illustre les possibilités offertes par lh_config)
  • Merci à freddec pour cette documentation que j'ai tenté d'améliorer ce qui fut relativement dur vu son niveau déjà très bon !!
1) ou de emacs pour les plus barbus
 
installation/live_helper_une_debian-live-personnalisee-sur-cle-usb.txt · Dernière modification: 26/01/2010 16:11 par orgrim