:B~ Les bases 

1~the-basics Les bases

Ce chapitre contient un bref aperçu du processus de construction et des
instructions pour utiliser les trois types d'images les plus couramment
utilisées. Le type d'image le plus polyvalent, #{iso-hybrid}#, peut être
utilisé sur une machine virtuelle, un support optique ou un périphérique USB
de stockage portable. Dans certains cas particuliers, comme expliqué plus
loin, le type #{hdd}# peut être plus approprié. Le chapitre se termine avec
des instructions pour la construction et l'utilisation d'une image
#{netboot}#, qui est un peu plus compliquée en raison de la configuration
requise sur le serveur. C'est un sujet un peu avancé pour tous ceux qui ne
connaissent pas déjà le démarrage sur le réseau, mais est inclus ici car une
fois la configuration terminée, c'est un moyen très pratique pour tester et
déployer des images pour le démarrage sur le réseau local sans le tracas des
supports d'images.

Tout au long du chapitre, nous ferons souvent référence à la valeur par
défaut des noms des fichiers produits par live-build. Si vous {téléchargez
une image précompilée}#downloading-prebuilt-images, les noms des fichiers
peuvent varier.

2~what-is-live Qu'est-ce qu'un système live?

Un système live signifie généralement un système d'exploitation démarré sur
un ordinateur à partir d'un support amovible, tel qu'un CD-ROM, une clé USB
ou sur un réseau, prêt à l'emploi sans aucune installation sur le disque
habituel, avec auto-configuration fait lors de l'exécution (voir
{Termes}#terms).

Avec Debian Live, c'est un système Debian GNU/Linux, construit pour une des
architectures prises en charge (actuellement amd64 et i386). Il est fait à
partir des éléments suivants:

_* *{Image du noyau Linux}*, d'habitude appelé #{vmlinuz*}#

_* *{Image du RAM-disque initiale (initrd)}*: Un disque virtuel RAM
configuré pour le démarrage de Linux, contenant possiblement des modules
nécessaires pour monter l'image du système et certains scripts pour le
faire.

_* *{Image du système}*: L'image du système de fichiers du système
d'exploitation. Habituellement, un système de fichiers SquashFS comprimé est
utilisé pour réduire au minimum la taille de l'image Debian Live. Notez
qu'il est en lecture seulement. Ainsi, lors du démarrage du système Debian
Live nous allons utiliser un disque RAM et un mécanisme "union" pour
permettre l'écriture de fichiers dans le système en marche. Cependant,
toutes les modifications seront perdues lors de l'arrêt à moins que l'option
«persistance» soit utilisée (voir {Persistance}#persistence).

_* *{Chargeur d'amorçage}*: Un petit morceau de code conçu pour démarrer à
partir du support choisi, il peut présenter un menu rapide ou permettre la
sélection des options/configurations. Il charge le noyau Linux et son initrd
pour fonctionner avec un système de fichiers associé. Différentes solutions
peuvent être utilisées, selon le support de destination et le format du
système de fichiers contenant les composants mentionnés précédemment:
isolinux pour démarrer à partir d'un CD ou DVD au format ISO9660, syslinux
pour démarrer un disque dur ou une clé USB à partir d'une partition VFAT,
extlinux pour partitions ext2/3/4 et btrfs, pxelinux pour netboot PXE, GRUB
pour partitions ext2/3/4, etc.

Vous pouvez utiliser live-build pour construire l'image du système à partir
de vos spécifications, configurer un noyau Linux, son initrd, et un chargeur
d'amorçage pour les exécuter, tout dans un format en fonction du support
(image ISO9660, image disque, etc.).

2~downloading-prebuilt-images Téléchargement des images précompilées

Bien que l'objectif de ce manuel soit le développement et la création de vos
propres images live, vous pouvez simplement vouloir tester une de nos images
précompilées comme une introduction à leur utilisation ou à la construction
de vos propres images. Ces images sont construites à l'aide de notre {dépôt
git live-images}#clone-configuration-via-git et les versions officielles
stables sont publiées sur http://www.debian.org/CD/live/. En outre, les
versions plus anciennes et les futures, et des images non officielles
contenant micrologiciels et pilotes non libres sont disponibles sur
http://live.debian.net/cdimage/release/.

2~using-web-builder Utiliser le constructeur web d'images live

En tant que service à la communauté, nous gérons un service de construction
d'images web sur http://live-build.debian.net/. Ce site est maintenu sur la
base du meilleur effort. Autrement dit, même si nous nous efforçons de le
maintenir à jour et opérationnel à tout moment, et de publier des avis
d'importantes interruptions du service, nous ne pouvons pas garantir une
disponibilité de 100% ou des constructions d'images rapides, et le service
peut parfois avoir des problèmes dont la résolution prend un certain
temps. Si vous avez des problèmes ou des questions au sujet du service,
veuillez {nous contacter}#contact en donnant le lien vers votre
construction.

3~ Utilisation du constructeur web et avertissements

L'interface web ne permet actuellement pas d'empêcher l'utilisation de
combinaisons d'options invalides, en particulier quand le changement d'une
option (c'est-à-dire en utilisant live-build directement) modifie les
valeurs des autres options énumérées dans le formulaire web, le constructeur
web ne modifie pas ces valeurs par défaut. Plus particulièrement, si vous
changez la valeur #{--architectures}# qui est par défaut #{i386}# pour
#{amd64}#, vous devez modifier l'option correspondante #{--linux-flavours}#
de la valeur par défaut #{486}# pour #{amd64}#. Voir la page de manuel
#{lb_config}# pour la version de live-build installée sur le constructeur
web pour plus de détails. Le numéro de version de live-build est indiqué au
bas de la page web.

L'estimation du temps donné par le constructeur web est une estimation brute
et peut ne pas refléter la durée effective de votre construction. Cette
estimation n'est pas actualisée une fois qu'elle est affichée. Soyez
patient. Ne rechargez pas la page de la construction, car cela peut
soumettre une nouvelle construction avec les mêmes paramètres. Vous devez
{nous contacter}#contact si vous ne recevez pas la notification de votre
construction mais seulement une fois que vous êtes sûr que vous avez attendu
assez longtemps et vérifié que la notification par e-mail n'a pas été
détectée par votre filtre anti-spam.

Le constructeur web est limité dans les types d'images qu'il peut
construire. Cela permet de garder les choses simples et efficaces à utiliser
et à maintenir. Si vous souhaitez effectuer des personnalisations qui ne
sont pas prévues par l'interface web, le reste de ce manuel explique comment
construire vos propres images en utilisant live-build.

2~building-iso-hybrid Premières étapes: la construction d'une image ISO
hybride

Quel que soit le type d'image, vous devrez effectuer les mêmes étapes de
base pour créer une image à chaque fois. Comme premier exemple, créez un
répertoire de travail, passez dans ce répertoire et exécutez la séquence
suivante de commandes live-build pour créer une image ISO hybride de base
contenant tout le système Debian par défaut sans X.org. Elle est appropriée
pour être gravée sur CD ou DVD, et peut également être copiée sur une clé
USB.

Le nom du répertoire de travail dépend totalement de vous, mais si vous
jetez un œil aux exemples utilisés dans live-manual, c'est une bonne idée
d'utiliser un nom qui vous aide à identifier l'image avec laquelle vous
travaillez dans chaque répertoire, surtout si vous travaillez ou
expérimentez avec différents types d'images. Dans ce cas, vous allez
construire un système par défaut, nous allons donc l'appeler, par exemple,
live-default.

code{

 $ mkdir live-default && cd live-default

}code

Ensuite, exécutez la commande #{lb config}#. Cela va créer une hiérarchie
"config/" dans le répertoire courant pour être utilisée par d'autres
commandes:

code{

 $ lb config

}code

Aucun paramètre n'est passé à #{lb config}#, donc les défauts seront
utilisés pour l'ensemble de ses diverses options. Consultez {La commande lb
config}#lb-config pour plus de détails.

Maintenant que la hiérarchie "config/" existe, créez l'image avec la
commande #{lb build}# :

code{

 # lb build

}code

Ce processus peut prendre un certain temps, en fonction de la vitesse de
votre ordinateur et de votre connexion réseau. Une fois le processus
terminé, il devrait y avoir un fichier image #{binary.hybrid.iso}# prêt à
l'emploi, dans le répertoire courant.

2~using-iso-hybrid Utilisation d'une image ISO hybride live

Après la construction ou le téléchargement d'une image ISO hybride, qui peut
être obtenue sur http://www.debian.org/CD/live/, l'étape suivante est
d'habitude de préparer votre support pour le démarrage, soit sur CD-R(W) ou
DVD-R(W), des supports optiques ou une clé USB.

3~burning-iso-image Graver une image ISO sur un support physique

Graver une image ISO est facile. Il suffit d'installer /{xorriso} et de
l'utiliser à partir de la ligne de commande pour graver l'image. Par
exemple:

code{

 # apt-get install xorriso

 $ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed binary.hybrid.iso

}code

3~copying-iso-hybrid-to-usb Copie d'une image ISO hybride sur une clé USB

Les images ISO préparées avec #{xorriso}# peuvent être simplement copiées
sur une clé USB avec #{dd}# ou un logiciel équivalent. Branchez une clé USB
avec une capacité suffisamment grande pour votre fichier image et déterminez
quel périphérique elle est, que nous appelons ci-dessous
#{${USBSTICK}}#. C'est le fichier de périphérique de votre clé, tel que
#{/dev/sdb}#, pas une partition, telle que #{/dev/sdb1}#! Vous pouvez
trouver le nom du périphérique en regardant la sortie de #{dmesg}# après
avoir branché le périphérique, ou mieux encore, #{ls -l /dev/disk/by-id}#.

Une fois que vous êtes sûr d'avoir le nom correct de l'appareil, utilisez la
commande #{dd}# pour copier l'image sur la clé. *{Ceci écrasera tout fichier
déjà existant sur votre clé!}*

code{

 $ dd if=binary.hybrid.iso of=${USBSTICK}

}code

3~using-usb-extra-space Utilisation de l'espace disponible sur une clé USB

Pour utiliser l'espace libre restant après avoir copié #{binary.hybrid.iso}#
sur une clé USB, utilisez un outil de partitionnement tel que /{gparted}/ ou
/{parted}/ afin de créer une nouvelle partition sur la clé. La première
partition sera utilisée par le système Debian Live.

code{

 # gparted ${USBSTICK}

}code

Quand la partition est créée, vous devez y créer un système de fichiers où
#{${PARTITION}}# est le nom de la partition, comme #{/dev/sdb2}#. Un choix
possible serait ext4.

code{

 # mkfs.ext4 ${PARTITION}

}code

*{Remarque:}* Si vous voulez utiliser l'espace supplémentaire avec Windows, ce système d’exploitation ne peut accéder normalement à aucune partition à part la première. Certaines solutions à ce problème ont été discutées sur notre {liste de diffusion}#contact, mais il semble qu'il n'y a pas de réponse facile.

*{Rappelez-vous: Chaque fois que vous installez une nouvelle binary.hybrid.iso sur la clé, toutes les données sur la clé seront perdues parce que la table de partition est écrasée par le contenu de l'image, vous devez sauvegarder votre partition supplémentaire d'abord pour la restaurer à nouveau après la mise à jour de l'image live.}*

3~booting-live-medium Démarrer le support live

La première fois que vous démarrez votre support live, qu'il s'agisse de CD,
DVD, clé USB, ou du démarrage par PXE, une certaine configuration dans le
BIOS de votre ordinateur peut être d'abord nécessaire. Puisque les BIOS
varient grandement en fonctionnalités et raccourcis clavier, on ne peut pas
aborder le sujet en profondeur ici. Certains BIOS fournissent une touche
pour ouvrir un menu d'amorçage au démarrage, qui est le moyen le plus facile
si elle est disponible sur votre système. Sinon, vous avez besoin d'entrer
dans le menu de configuration du BIOS et modifier l'ordre de démarrage pour
placer le dispositif de démarrage pour le système live devant votre
périphérique de démarrage normal.

Une fois que vous avez démarré le support, un menu de démarrage vous est
présenté. Si vous appuyez simplement sur entrée ici, le système va démarrer
en utilisant l'entrée par défaut, #{Live}#. Pour plus d'informations sur les
options de démarrage, consultez l'entrée «Help» dans le menu et aussi les
pages de manuel de live-boot et live-config dans le système live. 

En supposant que vous ayez sélectionné #{Live}# et démarré une image de
bureau live par défaut, après que les messages de démarrage aient défilé,
vous devriez être automatiquement connecté au compte #{user}# et voir un
bureau, prêt à l'emploi. Si vous avez démarré une image de la console
uniquement, tels que les types #{standard}# ou #{rescue}# des {images
précompilées}#downloading-prebuilt-images, vous devriez être automatiquement
connecté à la console pour le compte #{user}# et voir une invite du shell,
prête à l'emploi.

2~using-virtual-machine Utiliser une machine virtuelle pour les tests

Exécuter les images live dans une machine virtuelle (VM) peut faire gagner
beaucoup de temps. Cela ne vient pas sans avertissements:

_* L'exécution d'une VM demande assez de RAM pour le système d’exploitation
client et l'hôte et un CPU avec support matériel pour la virtualisation est
recommandé.

_* Il y a quelques limitations inhérentes à l'exécution sur une VM, par
exemple des performances vidéo médiocres, ou un choix limité de matériel
émulé.

_* Lors du développement d'un matériel spécifique, il n'existe aucun
substitut pour l'exécution que le matériel lui-même.

_* Certains ne deviennent visibles que pendant l'exécution dans une VM. En
cas de doute, testez votre image directement sur le matériel.

À condition de pouvoir travailler avec ces contraintes, examinez les
logiciels VM disponibles et choisissez celui qui convient à vos besoins.

3~testing-iso-with-qemu Test d'une image ISO avec QEMU

La VM la plus polyvalente de Debian est QEMU. Si votre processeur dispose
d'une gestion matérielle de la virtualisation, vous pouvez utiliser le
paquet /{qemu-kvm}/; La description du paquet /{qemu-kvm}/ énumère
brièvement les exigences.

Tout d'abord, installez /{qemu-kvm}/ si votre processeur le gère. Sinon,
installez /{qemu}/. Dans ce cas, le nom du programme est #{qemu}# au lieu de
#{kvm}# dans les exemples suivants. Le paquet /{qemu-utils}/ est également
valable pour créer des images de disques virtuels avec #{qemu-img}#.

code{

 # apt-get install qemu-kvm qemu-utils

}code

Démarrer une image ISO est simple:

code{

 $ kvm -cdrom binary.hybrid.iso

}code

Voir les pages de manuel pour plus de détails.

3~testing-iso-with-virtualbox  Test d'une image ISO avec virtualbox

Afin de tester l'ISO avec /{virtualbox}/:

code{

 # apt-get install virtualbox virtualbox-qt virtualbox-dkms

 $ virtualbox

}code

Créez une nouvelle machine virtuelle, modifiez les paramètres de stockage
pour utiliser #{binary.hybrid.iso}# comme le périphérique CD/DVD et démarrez
la machine.

*{Remarque:}* Pour les systèmes live contenant X.org que vous voulez essayer avec /{virtualbox}/, vous pouvez inclure le paquet des pilotes VirtualBox X.org, /{virtualbox-guest-dkms}/ et /{virtualbox-guest-x11}/, dans votre configuration de live-build. Sinon, la résolution est limitée à 800x600.

code{

 $ echo "virtualbox-guest-dkms virtualbox-guest-x11" >> config/package-lists/my.list.chroot

}code

Pour faire fonctionner le paquet dmks, il faut également installer le paquet
linux-headers pour le noyau utilisé dans l'image. Au lieu de lister
manuellement le paquet /{linux-headers}/ correct dans la liste de paquets
crée ci-dessus, live-build peut faire cela automatiquement.

code{

 $ lb config --linux-packages "linux-image linux-header"

}code

2~using-hdd-image Construire et utiliser une image HDD

La construction d'une image HDD est similaire à une ISO hybride à tous les
regards, sauf que vous spécifiez #{-b hdd}# et le nom du fichier résultant
est #{binary.img}# qui ne peut être gravé sur des supports optiques. Il
convient pour le démarrage à partir de clés USB, disques durs USB, et divers
autres dispositifs de stockage portables. Normalement, une image ISO hybride
peut être utilisée à cette fin, mais si vous avez un BIOS qui ne gère pas
correctement les images hybrides, vous devez utiliser une image HDD. 

*{Remarque:}* si vous avez créé une image ISO hybride avec l'exemple précédent, vous devrez nettoyer votre répertoire de travail avec la commande #{lb clean}# (voir {La commande lb clean}#lb-clean):

code{

 # lb clean --binary

}code

Exécutez la commande #{lb config}# comme avant, sauf que cette fois en
spécifiant le type d'image HDD:

code{

 $ lb config -b hdd

}code

Construisez maintenant l'image avec la commande #{lb build}#

code{

 # lb build

}code

Quand la création de l'image est finie, un fichier #{binary.img}# doit être
présent dans le répertoire courant.

L'image binaire générée contient une partition VFAT et le chargeur
d'amorçage syslinux, prêts à être écrits directement sur une clé USB. Encore
une fois, comme l'utilisation d'une image HDD est juste comme l'utilisation
d'une image ISO hybride sur USB, suivez les instructions {Utiliser une image
live ISO hybride}#using-iso-hybrid, en utilisant le nom de fichier
#{binary.img}# au lieu de #{binary.hybrid.iso}#.

De même, pour tester une image HDD avec Qemu, installez /{qemu}/ comme
décrit ci-dessus dans {Test d'une image ISO avec
QEMU}#testing-iso-with-qemu. Ensuite, exécutez #{kvm}# ou #{qemu}#, selon la
version dont votre système hôte a besoin en précisant #{binary.img}# comme
le premier disque dur.

code{

 $ kvm -hda binary.img

}code

2~building-netboot-image Construction d'une image netboot

La séquence de commandes suivante va créer une image NetBoot de base
contenant le système Debian par défaut sans X.org. Elle peut être démarrée
sur le réseau.

*{Remarque:}* Si vous avez réalisé quelques-uns des exemples précédents, vous aurez besoin de nettoyer votre répertoire de travail avec la commande #{lb clean}#:

code{

 # lb clean

}code

Dans ce cas spécifique, un #{lb clean --binary}# ne serait pas suffisant
pour nettoyer les étapes nécessaires. La raison est que dans les
configurations de netboot, une configuration initramfs différente doit être
utilisée, laquelle live-build exécute automatiquement lors de la
construction des images netboot. Puisque la création d'initramfs appartient
à l'étape chroot, si on change à netboot dans un répertoire existant, il
faut reconstruire le chroot. Par conséquent, il faut faire un #{lb clean}#,
(qui permettra d'éliminer l'étape chroot, aussi).

Exécutez la commande suivante pour configurer votre image pour démarrer sur
le réseau:

code{

 $ lb config -b netboot --net-root-path "/srv/debian-live" --net-root-server "192.168.0.1"

}code

Contrairement aux images ISO et HDD, le démarrage sur le réseau ne sert pas
l'image du système de fichiers pour le client. Pour cette raison, les
fichiers doivent être servis via NFS. Différents systèmes de fichiers réseau
peuvent être choisis avec lb config. Les options #{--net-root-path}# et
#{--net-root-server}# indiquent l'emplacement et le serveur, respectivement,
du serveur NFS sur lequel l'image du système de fichiers sera située au
moment du démarrage. Assurez-vous que ceux-ci sont fixées à des valeurs
appropriées pour votre réseau et serveur.

Construisez maintenant l'image avec la commande #{lb build}#

code{

 # lb build

}code

Dans un démarrage réseau, le client exécute un petit morceau de logiciel qui
réside habituellement sur l'EPROM de la carte Ethernet. Ce programme envoie
une requête DHCP pour obtenir une adresse IP et les informations sur ce
qu'il faut faire ensuite. Typiquement, la prochaine étape est d'obtenir un
chargeur d'amorçage de niveau supérieur via le protocole TFTP. Cela pourrait
être pxelinux, GRUB, ou démarrer directement à un système d'exploitation
comme Linux.

Par exemple, si vous décompressez le fichier généré #{binary.netboot.tar}#
dans le répertoire #{/srv/debian-live}#, vous trouverez l'image du système
de fichiers dans #{live/filesystem.squashfs}# et le noyau, initrd et le
chargeur d'amorçage pxelinux dans #{tftpboot/debian-live/i386}#.

Nous devons maintenant configurer trois services sur le serveur pour activer
le démarrage sur le réseau: le serveur DHCP, serveur TFTP et le serveur NFS.

3~ Serveur DHCP

Nous devons configurer le serveur DHCP de notre réseau pour être sûr de
donner une adresse IP au client du système du démarrage sur le réseau, et
pour annoncer l'emplacement du chargeur d'amorçage PXE.

Voici un exemple source d'inspiration, écrit pour le serveur ISC DHCP
#{isc-dhcp-server}# dans le fichier de configuration
#{/etc/dhcp/dhcpd.conf}#:

code{

 # /etc/dhcp/dhcpd.conf - configuration file for isc-dhcp-server

 ddns-update-style none;

 option domain-name "example.org";
 option domain-name-servers ns1.example.org, ns2.example.org;

 default-lease-time 600;
 max-lease-time 7200;

 log-facility local7;

 subnet 192.168.0.0 netmask 255.255.255.0 {
   range 192.168.0.1 192.168.0.254;
   next-server servername;
   filename "pxelinux.0";
}

}code

3~ Serveur TFTP

Cela sert le noyau et le ramdisk initial pour le système pendant
l'exécution.

Vous devriez installer le paquet /{tftpd-hpa}/. Il peut servir tous les
fichiers contenus dans un répertoire racine, d'habitude #{/srv/tftp}#. Pour
le laisser servir des fichiers dans #{/srv/debian-live/tftpboot}#, exécutez
comme utilisateur root la commande suivante:

code{

 # dpkg-reconfigure -plow tftpd-hpa

}code

et remplissez le nouveau répertoire du serveur tftp

3~ Serveur NFS

Quand l'ordinateur hôte a téléchargé et démarré un noyau Linux et chargé son
initrd, il va essayer de monter l'image du système de fichiers live via un
serveur NFS.

Vous devez installer le paquet /{nfs-kernel-server}/.

Ensuite, rendez l'image du système de fichiers disponible via NFS en
ajoutant une ligne comme la suivante #{/etc/exports}#:

code{

 /srv/debian-live *(ro,async,no_root_squash,no_subtree_check)

}code

et indiquez cette exportation au serveur NFS avec la commande suivante:

code{

 # exportfs -rv

}code

La configuation de ces trois services peut être un peu dificile. Vous
pourriez avoir besoin de patience pour obtenir que tous fonctionnent
ensemble. Pour plus d'informations, consultez le wiki syslinux sur
http://www.syslinux.org/wiki/index.php/PXELINUX ou la section Debian
Installer Manual's TFTP Net Booting sur
http://d-i.alioth.debian.org/manual/en.i386/ch04s05.html. Ils pourraient
aider parce que leurs processus sont très semblables.

3~ Guide pratique pour expérimenter avec une image Netboot

La création d'images netboot est facile avec live-build, mais les tests des
images sur des machines physiques peuvent prendre vraiment beaucoup de
temps. 

Afin de rendre notre vie plus facile, nous pouvons utiliser la
virtualisation.

3~ Qemu

_* Installer /{qemu}/, /{bridge-utils}/, /{sudo}/.

Éditer #{/etc/qemu-ifup}#:

code{

 #!/bin/sh
 sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
 echo "Executing /etc/qemu-ifup"
 echo "Bringing up $1 for bridged mode..."
 sudo /sbin/ifconfig $1 0.0.0.0 promisc up
 echo "Adding $1 to br0..."
 sudo /usr/sbin/brctl addif br0 $1
 sleep 2

}code

Obtenir, ou construire un #{grub-floppy-netboot}#.

Lancer #{qemu}# avec "#{-net nic,vlan=0 -net tap,vlan=0,ifname=tun0}#"
