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 ledebian_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
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
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)
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… )
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.
Driver "kbd" Option "XkbRules" "xorg" Option "XkbLayout" "fr" Option "XkbVariant" "latin9"
à votre /etc/X11/xorg.conf
puis relancer X
Pour conclure
Liens utiles
- Le site du projet DebianLive vous y trouverez également des images standard pré-construites qu'il ne vous restera plus qu'à télécharger.
- Un autre Howto rapide et fort bien expliqué HOWTO éclair build d'un live debian + lxde.
- Le manuel officiel.
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 !!
emacs
pour les plus barbus